diff --git a/.gitattributes b/.gitattributes
index 1b319015d3b086e84fd00ddabd6715e2495b8cd5..cb0f840c572bdc3a5ee43430393c6de288637aaa 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -2953,6 +2953,504 @@ public/admin/js/notify/index.html -text
 public/admin/js/notify/js/notification.js -text
 public/admin/js/notify/style/default.css -text
 public/admin/js/onload_utils.js -text
+public/admin/js/osmplayer/LICENSE.TXT -text
+public/admin/js/osmplayer/README.md -text
+public/admin/js/osmplayer/bin/osmplayer.compressed.js -text
+public/admin/js/osmplayer/bin/osmplayer.js -text
+public/admin/js/osmplayer/doc/files.html -text
+public/admin/js/osmplayer/doc/index.html -text
+public/admin/js/osmplayer/doc/symbols/_global_.html -text
+public/admin/js/osmplayer/doc/symbols/jQuery.fn.minplayer.html -text
+public/admin/js/osmplayer/doc/symbols/jQuery.fn.osmplayer.html -text
+public/admin/js/osmplayer/doc/symbols/minplayer.async.html -text
+public/admin/js/osmplayer/doc/symbols/minplayer.compatibility.html -text
+public/admin/js/osmplayer/doc/symbols/minplayer.display.html -text
+public/admin/js/osmplayer/doc/symbols/minplayer.file.html -text
+public/admin/js/osmplayer/doc/symbols/minplayer.flags.html -text
+public/admin/js/osmplayer/doc/symbols/minplayer.image.html -text
+public/admin/js/osmplayer/doc/symbols/minplayer.players.base.html -text
+public/admin/js/osmplayer/doc/symbols/minplayer.players.flash.html -text
+public/admin/js/osmplayer/doc/symbols/minplayer.players.html5.html -text
+public/admin/js/osmplayer/doc/symbols/minplayer.players.minplayer.html -text
+public/admin/js/osmplayer/doc/symbols/minplayer.players.vimeo.html -text
+public/admin/js/osmplayer/doc/symbols/minplayer.players.youtube.html -text
+public/admin/js/osmplayer/doc/symbols/minplayer.plugin.html -text
+public/admin/js/osmplayer/doc/symbols/osmplayer.html -text
+public/admin/js/osmplayer/doc/symbols/osmplayer.pager.html -text
+public/admin/js/osmplayer/doc/symbols/osmplayer.playlist.html -text
+public/admin/js/osmplayer/doc/symbols/osmplayer.scroll.html -text
+public/admin/js/osmplayer/doc/symbols/osmplayer.teaser.html -text
+public/admin/js/osmplayer/doc/symbols/src/minplayer_src_minplayer.async.js.html -text
+public/admin/js/osmplayer/doc/symbols/src/minplayer_src_minplayer.compatibility.js.html -text
+public/admin/js/osmplayer/doc/symbols/src/minplayer_src_minplayer.controller.js.html -text
+public/admin/js/osmplayer/doc/symbols/src/minplayer_src_minplayer.display.js.html -text
+public/admin/js/osmplayer/doc/symbols/src/minplayer_src_minplayer.file.js.html -text
+public/admin/js/osmplayer/doc/symbols/src/minplayer_src_minplayer.flags.js.html -text
+public/admin/js/osmplayer/doc/symbols/src/minplayer_src_minplayer.image.js.html -text
+public/admin/js/osmplayer/doc/symbols/src/minplayer_src_minplayer.js.html -text
+public/admin/js/osmplayer/doc/symbols/src/minplayer_src_minplayer.playLoader.js.html -text
+public/admin/js/osmplayer/doc/symbols/src/minplayer_src_minplayer.players.base.js.html -text
+public/admin/js/osmplayer/doc/symbols/src/minplayer_src_minplayer.players.flash.js.html -text
+public/admin/js/osmplayer/doc/symbols/src/minplayer_src_minplayer.players.html5.js.html -text
+public/admin/js/osmplayer/doc/symbols/src/minplayer_src_minplayer.players.minplayer.js.html -text
+public/admin/js/osmplayer/doc/symbols/src/minplayer_src_minplayer.players.vimeo.js.html -text
+public/admin/js/osmplayer/doc/symbols/src/minplayer_src_minplayer.players.youtube.js.html -text
+public/admin/js/osmplayer/doc/symbols/src/minplayer_src_minplayer.plugin.js.html -text
+public/admin/js/osmplayer/doc/symbols/src/src_osmplayer.js.html -text
+public/admin/js/osmplayer/doc/symbols/src/src_osmplayer.pager.js.html -text
+public/admin/js/osmplayer/doc/symbols/src/src_osmplayer.parser.asx.js.html -text
+public/admin/js/osmplayer/doc/symbols/src/src_osmplayer.parser.default.js.html -text
+public/admin/js/osmplayer/doc/symbols/src/src_osmplayer.parser.rss.js.html -text
+public/admin/js/osmplayer/doc/symbols/src/src_osmplayer.parser.xspf.js.html -text
+public/admin/js/osmplayer/doc/symbols/src/src_osmplayer.parser.youtube.js.html -text
+public/admin/js/osmplayer/doc/symbols/src/src_osmplayer.playlist.js.html -text
+public/admin/js/osmplayer/doc/symbols/src/src_osmplayer.scroll.js.html -text
+public/admin/js/osmplayer/doc/symbols/src/src_osmplayer.teaser.js.html -text
+public/admin/js/osmplayer/index.html -text
+public/admin/js/osmplayer/jquery-ui/Aristo/Aristo.css -text
+public/admin/js/osmplayer/jquery-ui/Aristo/images/bg_fallback.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/Aristo/images/icon_sprite.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/Aristo/images/progress_bar.gif -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/Aristo/images/slider_handles.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/Aristo/images/ui-icons_222222_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/Aristo/images/ui-icons_454545_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/README.md -text
+public/admin/js/osmplayer/jquery-ui/absolution/README.md -text
+public/admin/js/osmplayer/jquery-ui/absolution/absolution.blue.css -text
+public/admin/js/osmplayer/jquery-ui/absolution/images/selector.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/absolution/images/ui-icons_222222_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/absolution/images/ui-icons_eeeeee_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/absolution/images/ui-icons_ffffff_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/black-tie/images/ui-bg_diagonals-thick_8_333333_40x40.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/black-tie/images/ui-bg_flat_65_ffffff_40x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/black-tie/images/ui-bg_glass_40_111111_1x400.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/black-tie/images/ui-bg_glass_55_1c1c1c_1x400.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/black-tie/images/ui-bg_highlight-hard_100_f9f9f9_1x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/black-tie/images/ui-bg_highlight-hard_40_aaaaaa_1x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/black-tie/images/ui-bg_highlight-soft_50_aaaaaa_1x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/black-tie/images/ui-bg_inset-hard_45_cd0a0a_1x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/black-tie/images/ui-bg_inset-hard_55_ffeb80_1x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/black-tie/images/ui-icons_222222_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/black-tie/images/ui-icons_4ca300_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/black-tie/images/ui-icons_bbbbbb_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/black-tie/images/ui-icons_ededed_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/black-tie/images/ui-icons_ffcf29_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/black-tie/images/ui-icons_ffffff_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/black-tie/jquery-ui-1.8.18.custom.css -text
+public/admin/js/osmplayer/jquery-ui/cupertino/images/ui-bg_diagonals-thick_90_eeeeee_40x40.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/cupertino/images/ui-bg_flat_15_cd0a0a_40x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/cupertino/images/ui-bg_glass_100_e4f1fb_1x400.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/cupertino/images/ui-bg_glass_50_3baae3_1x400.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/cupertino/images/ui-bg_glass_80_d7ebf9_1x400.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/cupertino/images/ui-bg_highlight-hard_100_f2f5f7_1x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/cupertino/images/ui-bg_highlight-hard_70_000000_1x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/cupertino/images/ui-bg_highlight-soft_100_deedf7_1x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/cupertino/images/ui-bg_highlight-soft_25_ffef8f_1x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/cupertino/images/ui-icons_2694e8_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/cupertino/images/ui-icons_2e83ff_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/cupertino/images/ui-icons_3d80b3_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/cupertino/images/ui-icons_72a7cf_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/cupertino/images/ui-icons_ffffff_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/cupertino/jquery-ui-1.8.18.custom.css -text
+public/admin/js/osmplayer/jquery-ui/dark-hive/images/ui-bg_flat_30_cccccc_40x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/dark-hive/images/ui-bg_flat_50_5c5c5c_40x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/dark-hive/images/ui-bg_glass_40_ffc73d_1x400.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/dark-hive/images/ui-bg_highlight-hard_20_0972a5_1x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/dark-hive/images/ui-bg_highlight-soft_33_003147_1x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/dark-hive/images/ui-bg_highlight-soft_35_222222_1x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/dark-hive/images/ui-bg_highlight-soft_44_444444_1x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/dark-hive/images/ui-bg_highlight-soft_80_eeeeee_1x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/dark-hive/images/ui-bg_loop_25_000000_21x21.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/dark-hive/images/ui-icons_222222_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/dark-hive/images/ui-icons_4b8e0b_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/dark-hive/images/ui-icons_a83300_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/dark-hive/images/ui-icons_cccccc_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/dark-hive/images/ui-icons_ffffff_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/dark-hive/jquery-ui-1.8.18.custom.css -text
+public/admin/js/osmplayer/jquery-ui/dot-luv/images/ui-bg_diagonals-thick_15_0b3e6f_40x40.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/dot-luv/images/ui-bg_dots-medium_30_0b58a2_4x4.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/dot-luv/images/ui-bg_dots-small_20_333333_2x2.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/dot-luv/images/ui-bg_dots-small_30_a32d00_2x2.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/dot-luv/images/ui-bg_dots-small_40_00498f_2x2.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/dot-luv/images/ui-bg_flat_0_aaaaaa_40x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/dot-luv/images/ui-bg_flat_40_292929_40x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/dot-luv/images/ui-bg_gloss-wave_20_111111_500x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/dot-luv/images/ui-icons_00498f_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/dot-luv/images/ui-icons_98d2fb_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/dot-luv/images/ui-icons_9ccdfc_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/dot-luv/images/ui-icons_ffffff_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/dot-luv/jquery-ui-1.8.18.custom.css -text
+public/admin/js/osmplayer/jquery-ui/eggplant/images/ui-bg_flat_0_aaaaaa_40x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/eggplant/images/ui-bg_flat_0_eeeeee_40x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/eggplant/images/ui-bg_flat_55_994d53_40x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/eggplant/images/ui-bg_flat_55_fafafa_40x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/eggplant/images/ui-bg_gloss-wave_30_3d3644_500x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/eggplant/images/ui-bg_highlight-soft_100_dcd9de_1x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/eggplant/images/ui-bg_highlight-soft_100_eae6ea_1x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/eggplant/images/ui-bg_highlight-soft_25_30273a_1x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/eggplant/images/ui-bg_highlight-soft_45_5f5964_1x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/eggplant/images/ui-icons_454545_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/eggplant/images/ui-icons_734d99_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/eggplant/images/ui-icons_8d78a5_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/eggplant/images/ui-icons_a8a3ae_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/eggplant/images/ui-icons_ebccce_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/eggplant/images/ui-icons_ffffff_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/eggplant/jquery-ui-1.8.18.custom.css -text
+public/admin/js/osmplayer/jquery-ui/excite-bike/images/ui-bg_diagonals-small_25_c5ddfc_40x40.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/excite-bike/images/ui-bg_diagonals-thick_20_e69700_40x40.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/excite-bike/images/ui-bg_diagonals-thick_22_1484e6_40x40.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/excite-bike/images/ui-bg_diagonals-thick_26_2293f7_40x40.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/excite-bike/images/ui-bg_flat_0_e69700_40x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/excite-bike/images/ui-bg_flat_0_e6b900_40x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/excite-bike/images/ui-bg_highlight-soft_100_f9f9f9_1x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/excite-bike/images/ui-bg_inset-hard_100_eeeeee_1x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/excite-bike/images/ui-icons_0a82eb_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/excite-bike/images/ui-icons_0b54d5_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/excite-bike/images/ui-icons_5fa5e3_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/excite-bike/images/ui-icons_fcdd4a_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/excite-bike/images/ui-icons_ffffff_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/excite-bike/jquery-ui-1.8.18.custom.css -text
+public/admin/js/osmplayer/jquery-ui/flick/images/ui-bg_flat_0_aaaaaa_40x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/flick/images/ui-bg_flat_0_eeeeee_40x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/flick/images/ui-bg_flat_55_ffffff_40x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/flick/images/ui-bg_flat_75_ffffff_40x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/flick/images/ui-bg_glass_65_ffffff_1x400.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/flick/images/ui-bg_highlight-soft_100_f6f6f6_1x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/flick/images/ui-bg_highlight-soft_25_0073ea_1x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/flick/images/ui-bg_highlight-soft_50_dddddd_1x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/flick/images/ui-icons_0073ea_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/flick/images/ui-icons_454545_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/flick/images/ui-icons_666666_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/flick/images/ui-icons_ff0084_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/flick/images/ui-icons_ffffff_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/flick/jquery-ui-1.8.18.custom.css -text
+public/admin/js/osmplayer/jquery-ui/hot-sneaks/images/ui-bg_diagonals-small_40_db4865_40x40.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/hot-sneaks/images/ui-bg_diagonals-small_50_93c3cd_40x40.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/hot-sneaks/images/ui-bg_diagonals-small_50_ff3853_40x40.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/hot-sneaks/images/ui-bg_diagonals-small_75_ccd232_40x40.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/hot-sneaks/images/ui-bg_dots-medium_80_ffff38_4x4.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/hot-sneaks/images/ui-bg_dots-small_35_35414f_2x2.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/hot-sneaks/images/ui-bg_flat_75_ba9217_40x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/hot-sneaks/images/ui-bg_flat_75_ffffff_40x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/hot-sneaks/images/ui-bg_white-lines_85_f7f7ba_40x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/hot-sneaks/images/ui-icons_454545_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/hot-sneaks/images/ui-icons_88a206_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/hot-sneaks/images/ui-icons_c02669_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/hot-sneaks/images/ui-icons_e1e463_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/hot-sneaks/images/ui-icons_ffeb33_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/hot-sneaks/images/ui-icons_ffffff_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/hot-sneaks/jquery-ui-1.8.18.custom.css -text
+public/admin/js/osmplayer/jquery-ui/mint-choc/images/ui-bg_flat_0_aaaaaa_40x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/mint-choc/images/ui-bg_glass_15_5f391b_1x400.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/mint-choc/images/ui-bg_gloss-wave_20_1c160d_500x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/mint-choc/images/ui-bg_gloss-wave_25_453326_500x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/mint-choc/images/ui-bg_gloss-wave_30_44372c_500x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/mint-choc/images/ui-bg_highlight-soft_20_201913_1x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/mint-choc/images/ui-bg_highlight-soft_20_619226_1x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/mint-choc/images/ui-bg_inset-soft_10_201913_1x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/mint-choc/images/ui-icons_222222_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/mint-choc/images/ui-icons_9bcc60_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/mint-choc/images/ui-icons_add978_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/mint-choc/images/ui-icons_e3ddc9_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/mint-choc/images/ui-icons_f1fd86_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/mint-choc/images/ui-icons_ffffff_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/mint-choc/jquery-ui-1.8.18.custom.css -text
+public/admin/js/osmplayer/jquery-ui/overcast/images/ui-bg_flat_0_aaaaaa_40x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/overcast/images/ui-bg_flat_0_eeeeee_40x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/overcast/images/ui-bg_flat_55_c0402a_40x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/overcast/images/ui-bg_flat_55_eeeeee_40x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/overcast/images/ui-bg_glass_100_f8f8f8_1x400.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/overcast/images/ui-bg_glass_35_dddddd_1x400.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/overcast/images/ui-bg_glass_60_eeeeee_1x400.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/overcast/images/ui-bg_inset-hard_75_999999_1x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/overcast/images/ui-bg_inset-soft_50_c9c9c9_1x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/overcast/images/ui-icons_3383bb_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/overcast/images/ui-icons_454545_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/overcast/images/ui-icons_70b2e1_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/overcast/images/ui-icons_999999_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/overcast/images/ui-icons_fbc856_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/overcast/jquery-ui-1.8.18.custom.css -text
+public/admin/js/osmplayer/jquery-ui/pepper-grinder/images/ui-bg_diagonal-maze_20_6e4f1c_10x10.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/pepper-grinder/images/ui-bg_diagonal-maze_40_000000_10x10.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/pepper-grinder/images/ui-bg_fine-grain_10_eceadf_60x60.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/pepper-grinder/images/ui-bg_fine-grain_10_f8f7f6_60x60.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/pepper-grinder/images/ui-bg_fine-grain_15_eceadf_60x60.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/pepper-grinder/images/ui-bg_fine-grain_15_f7f3de_60x60.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/pepper-grinder/images/ui-bg_fine-grain_15_ffffff_60x60.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/pepper-grinder/images/ui-bg_fine-grain_65_654b24_60x60.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/pepper-grinder/images/ui-bg_fine-grain_68_b83400_60x60.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/pepper-grinder/images/ui-icons_222222_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/pepper-grinder/images/ui-icons_3572ac_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/pepper-grinder/images/ui-icons_8c291d_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/pepper-grinder/images/ui-icons_b83400_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/pepper-grinder/images/ui-icons_fbdb93_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/pepper-grinder/images/ui-icons_ffffff_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/pepper-grinder/jquery-ui-1.8.18.custom.css -text
+public/admin/js/osmplayer/jquery-ui/redmond/images/ui-bg_flat_0_aaaaaa_40x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/redmond/images/ui-bg_flat_55_fbec88_40x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/redmond/images/ui-bg_glass_75_d0e5f5_1x400.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/redmond/images/ui-bg_glass_85_dfeffc_1x400.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/redmond/images/ui-bg_glass_95_fef1ec_1x400.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/redmond/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/redmond/images/ui-bg_inset-hard_100_f5f8f9_1x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/redmond/images/ui-bg_inset-hard_100_fcfdfd_1x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/redmond/images/ui-icons_217bc0_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/redmond/images/ui-icons_2e83ff_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/redmond/images/ui-icons_469bdd_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/redmond/images/ui-icons_6da8d5_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/redmond/images/ui-icons_cd0a0a_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/redmond/images/ui-icons_d8e7f3_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/redmond/images/ui-icons_f9bd01_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/redmond/jquery-ui-1.8.18.custom.css -text
+public/admin/js/osmplayer/jquery-ui/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/smoothness/images/ui-bg_flat_75_ffffff_40x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/smoothness/images/ui-bg_glass_65_ffffff_1x400.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/smoothness/images/ui-bg_glass_75_dadada_1x400.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/smoothness/images/ui-icons_222222_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/smoothness/images/ui-icons_2e83ff_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/smoothness/images/ui-icons_454545_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/smoothness/images/ui-icons_888888_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/smoothness/images/ui-icons_cd0a0a_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/smoothness/jquery-ui-1.8.18.custom.css -text
+public/admin/js/osmplayer/jquery-ui/south-street/images/ui-bg_glass_55_fcf0ba_1x400.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/south-street/images/ui-bg_gloss-wave_100_ece8da_500x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/south-street/images/ui-bg_highlight-hard_100_f5f3e5_1x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/south-street/images/ui-bg_highlight-hard_100_fafaf4_1x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/south-street/images/ui-bg_highlight-hard_15_459e00_1x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/south-street/images/ui-bg_highlight-hard_95_cccccc_1x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/south-street/images/ui-bg_highlight-soft_25_67b021_1x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/south-street/images/ui-bg_highlight-soft_95_ffedad_1x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/south-street/images/ui-bg_inset-soft_15_2b2922_1x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/south-street/images/ui-icons_808080_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/south-street/images/ui-icons_847e71_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/south-street/images/ui-icons_8dc262_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/south-street/images/ui-icons_cd0a0a_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/south-street/images/ui-icons_eeeeee_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/south-street/images/ui-icons_ffffff_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/south-street/jquery-ui-1.8.18.custom.css -text
+public/admin/js/osmplayer/jquery-ui/start/images/ui-bg_flat_55_999999_40x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/start/images/ui-bg_flat_75_aaaaaa_40x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/start/images/ui-bg_glass_45_0078ae_1x400.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/start/images/ui-bg_glass_55_f8da4e_1x400.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/start/images/ui-bg_glass_75_79c9ec_1x400.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/start/images/ui-bg_gloss-wave_45_e14f1c_500x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/start/images/ui-bg_gloss-wave_50_6eac2c_500x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/start/images/ui-bg_gloss-wave_75_2191c0_500x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/start/images/ui-bg_inset-hard_100_fcfdfd_1x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/start/images/ui-icons_0078ae_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/start/images/ui-icons_056b93_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/start/images/ui-icons_d8e7f3_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/start/images/ui-icons_e0fdff_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/start/images/ui-icons_f5e175_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/start/images/ui-icons_f7a50d_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/start/images/ui-icons_fcd113_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/start/jquery-ui-1.8.18.custom.css -text
+public/admin/js/osmplayer/jquery-ui/sunny/images/ui-bg_diagonals-medium_20_d34d17_40x40.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/sunny/images/ui-bg_flat_30_cccccc_40x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/sunny/images/ui-bg_flat_50_5c5c5c_40x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/sunny/images/ui-bg_gloss-wave_45_817865_500x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/sunny/images/ui-bg_gloss-wave_60_fece2f_500x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/sunny/images/ui-bg_gloss-wave_70_ffdd57_500x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/sunny/images/ui-bg_gloss-wave_90_fff9e5_500x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/sunny/images/ui-bg_highlight-soft_100_feeebd_1x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/sunny/images/ui-bg_inset-soft_30_ffffff_1x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/sunny/images/ui-icons_3d3d3d_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/sunny/images/ui-icons_bd7b00_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/sunny/images/ui-icons_d19405_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/sunny/images/ui-icons_eb990f_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/sunny/images/ui-icons_ed9f26_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/sunny/images/ui-icons_fadc7a_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/sunny/images/ui-icons_ffe180_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/sunny/jquery-ui-1.8.18.custom.css -text
+public/admin/js/osmplayer/jquery-ui/swanky-purse/images/ui-bg_diamond_10_4f4221_10x8.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/swanky-purse/images/ui-bg_diamond_20_372806_10x8.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/swanky-purse/images/ui-bg_diamond_25_675423_10x8.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/swanky-purse/images/ui-bg_diamond_25_d5ac5d_10x8.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/swanky-purse/images/ui-bg_diamond_8_261803_10x8.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/swanky-purse/images/ui-bg_diamond_8_443113_10x8.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/swanky-purse/images/ui-bg_flat_75_ddd4b0_40x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/swanky-purse/images/ui-bg_highlight-hard_65_fee4bd_1x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/swanky-purse/images/ui-icons_070603_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/swanky-purse/images/ui-icons_e8e2b5_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/swanky-purse/images/ui-icons_e9cd86_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/swanky-purse/images/ui-icons_efec9f_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/swanky-purse/images/ui-icons_f2ec64_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/swanky-purse/images/ui-icons_f9f2bd_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/swanky-purse/images/ui-icons_ff7519_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/swanky-purse/jquery-ui-1.8.18.custom.css -text
+public/admin/js/osmplayer/jquery-ui/ui-darkness/images/ui-bg_flat_30_cccccc_40x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/ui-darkness/images/ui-bg_flat_50_5c5c5c_40x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/ui-darkness/images/ui-bg_glass_20_555555_1x400.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/ui-darkness/images/ui-bg_glass_40_0078a3_1x400.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/ui-darkness/images/ui-bg_glass_40_ffc73d_1x400.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/ui-darkness/images/ui-bg_gloss-wave_25_333333_500x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/ui-darkness/images/ui-bg_highlight-soft_80_eeeeee_1x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/ui-darkness/images/ui-bg_inset-soft_25_000000_1x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/ui-darkness/images/ui-bg_inset-soft_30_f58400_1x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/ui-darkness/images/ui-icons_222222_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/ui-darkness/images/ui-icons_4b8e0b_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/ui-darkness/images/ui-icons_a83300_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/ui-darkness/images/ui-icons_cccccc_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/ui-darkness/images/ui-icons_ffffff_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/ui-darkness/jquery-ui-1.8.18.custom.css -text
+public/admin/js/osmplayer/jquery-ui/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/ui-lightness/images/ui-bg_flat_10_000000_40x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/ui-lightness/images/ui-icons_222222_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/ui-lightness/images/ui-icons_228ef1_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/ui-lightness/images/ui-icons_ef8c08_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/ui-lightness/images/ui-icons_ffd27a_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/ui-lightness/images/ui-icons_ffffff_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/ui-lightness/jquery-ui-1.8.18.custom.css -text
+public/admin/js/osmplayer/jquery-ui/vader/images/ui-bg_flat_0_aaaaaa_40x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/vader/images/ui-bg_glass_95_fef1ec_1x400.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/vader/images/ui-bg_gloss-wave_16_121212_500x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/vader/images/ui-bg_highlight-hard_15_888888_1x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/vader/images/ui-bg_highlight-hard_55_555555_1x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/vader/images/ui-bg_highlight-soft_35_adadad_1x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/vader/images/ui-bg_highlight-soft_60_dddddd_1x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/vader/images/ui-bg_inset-soft_15_121212_1x100.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/vader/images/ui-icons_666666_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/vader/images/ui-icons_aaaaaa_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/vader/images/ui-icons_bbbbbb_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/vader/images/ui-icons_c98000_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/vader/images/ui-icons_cccccc_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/vader/images/ui-icons_cd0a0a_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/vader/images/ui-icons_f29a00_256x240.png -text svneol=unset#unset
+public/admin/js/osmplayer/jquery-ui/vader/jquery-ui-1.8.18.custom.css -text
+public/admin/js/osmplayer/logo.png -text svneol=unset#unset
+public/admin/js/osmplayer/makefile -text
+public/admin/js/osmplayer/minplayer/README.md -text
+public/admin/js/osmplayer/minplayer/bin/minplayer.compressed.js -text
+public/admin/js/osmplayer/minplayer/bin/minplayer.js -text
+public/admin/js/osmplayer/minplayer/flash/README.txt -text
+public/admin/js/osmplayer/minplayer/flash/config/config.xml -text
+public/admin/js/osmplayer/minplayer/flash/config/nocontrols.xml -text
+public/admin/js/osmplayer/minplayer/flash/minplayer.swf -text svneol=unset#unset
+public/admin/js/osmplayer/minplayer/flash/skins/default/controlBar.swf -text svneol=unset#unset
+public/admin/js/osmplayer/minplayer/flash/skins/default/mediaPlayer.swf -text svneol=unset#unset
+public/admin/js/osmplayer/minplayer/flash/skins/default/playLoader.swf -text svneol=unset#unset
+public/admin/js/osmplayer/minplayer/images/bg_hr.png -text svneol=unset#unset
+public/admin/js/osmplayer/minplayer/images/blacktocat.png -text svneol=unset#unset
+public/admin/js/osmplayer/minplayer/images/icon_download.png -text svneol=unset#unset
+public/admin/js/osmplayer/minplayer/images/sprite_download.png -text svneol=unset#unset
+public/admin/js/osmplayer/minplayer/index.html -text
+public/admin/js/osmplayer/minplayer/javascripts/main.js -text
+public/admin/js/osmplayer/minplayer/makefile -text
+public/admin/js/osmplayer/minplayer/params.json -text
+public/admin/js/osmplayer/minplayer/src/minplayer.async.js -text
+public/admin/js/osmplayer/minplayer/src/minplayer.compatibility.js -text
+public/admin/js/osmplayer/minplayer/src/minplayer.controller.js -text
+public/admin/js/osmplayer/minplayer/src/minplayer.display.js -text
+public/admin/js/osmplayer/minplayer/src/minplayer.file.js -text
+public/admin/js/osmplayer/minplayer/src/minplayer.flags.js -text
+public/admin/js/osmplayer/minplayer/src/minplayer.image.js -text
+public/admin/js/osmplayer/minplayer/src/minplayer.js -text
+public/admin/js/osmplayer/minplayer/src/minplayer.playLoader.js -text
+public/admin/js/osmplayer/minplayer/src/minplayer.players.base.js -text
+public/admin/js/osmplayer/minplayer/src/minplayer.players.flash.js -text
+public/admin/js/osmplayer/minplayer/src/minplayer.players.html5.js -text
+public/admin/js/osmplayer/minplayer/src/minplayer.players.minplayer.js -text
+public/admin/js/osmplayer/minplayer/src/minplayer.players.vimeo.js -text
+public/admin/js/osmplayer/minplayer/src/minplayer.players.youtube.js -text
+public/admin/js/osmplayer/minplayer/src/minplayer.plugin.js -text
+public/admin/js/osmplayer/minplayer/stylesheets/pygment_trac.css -text
+public/admin/js/osmplayer/minplayer/stylesheets/stylesheet.css -text
+public/admin/js/osmplayer/minplayer/templates/default/css/images/loader.gif -text svneol=unset#unset
+public/admin/js/osmplayer/minplayer/templates/default/css/minplayer_default.css -text
+public/admin/js/osmplayer/minplayer/templates/default/js/minplayer.controller.default.js -text
+public/admin/js/osmplayer/minplayer/templates/default/js/minplayer.default.js -text
+public/admin/js/osmplayer/minplayer/templates/default/js/minplayer.playLoader.default.js -text
+public/admin/js/osmplayer/minplayer/templates/default/minplayer_default.tpl.php -text
+public/admin/js/osmplayer/playlist.xml -text
+public/admin/js/osmplayer/src/iscroll/README.md -text
+public/admin/js/osmplayer/src/iscroll/bin/make-dist -text
+public/admin/js/osmplayer/src/iscroll/examples/carousel/index.html -text
+public/admin/js/osmplayer/src/iscroll/examples/check-dom-changes/index.html -text
+public/admin/js/osmplayer/src/iscroll/examples/custom-scrollbar/index.html -text
+public/admin/js/osmplayer/src/iscroll/examples/custom-scrollbar/scrollbar.css -text
+public/admin/js/osmplayer/src/iscroll/examples/ender/ender.js -text
+public/admin/js/osmplayer/src/iscroll/examples/ender/ender.min.js -text
+public/admin/js/osmplayer/src/iscroll/examples/ender/index.html -text
+public/admin/js/osmplayer/src/iscroll/examples/form-fields/index.html -text
+public/admin/js/osmplayer/src/iscroll/examples/horizontal-scroll/index.html -text
+public/admin/js/osmplayer/src/iscroll/examples/hover/index.html -text
+public/admin/js/osmplayer/src/iscroll/examples/ios-perfect-scrollbar/index.html -text
+public/admin/js/osmplayer/src/iscroll/examples/ios-perfect-scrollbar/scrollbar.css -text
+public/admin/js/osmplayer/src/iscroll/examples/ios-perfect-scrollbar/scrollbar.png -text svneol=unset#unset
+public/admin/js/osmplayer/src/iscroll/examples/ipad/index.html -text
+public/admin/js/osmplayer/src/iscroll/examples/lite/index.html -text
+public/admin/js/osmplayer/src/iscroll/examples/pull-to-refresh/index.html -text
+public/admin/js/osmplayer/src/iscroll/examples/pull-to-refresh/pull-icon@2x.png -text svneol=unset#unset
+public/admin/js/osmplayer/src/iscroll/examples/simple/index.html -text
+public/admin/js/osmplayer/src/iscroll/examples/snap-to-element/index.html -text
+public/admin/js/osmplayer/src/iscroll/examples/use-transition/index.html -text
+public/admin/js/osmplayer/src/iscroll/examples/zoom/index.html -text
+public/admin/js/osmplayer/src/iscroll/examples/zoom/iscroll.jpg -text svneol=unset#unset
+public/admin/js/osmplayer/src/iscroll/license.txt -text
+public/admin/js/osmplayer/src/iscroll/package.json -text
+public/admin/js/osmplayer/src/iscroll/src/ender.js -text
+public/admin/js/osmplayer/src/iscroll/src/iscroll-lite.js -text
+public/admin/js/osmplayer/src/iscroll/src/iscroll.js -text
+public/admin/js/osmplayer/src/osmplayer.js -text
+public/admin/js/osmplayer/src/osmplayer.pager.js -text
+public/admin/js/osmplayer/src/osmplayer.parser.asx.js -text
+public/admin/js/osmplayer/src/osmplayer.parser.default.js -text
+public/admin/js/osmplayer/src/osmplayer.parser.rss.js -text
+public/admin/js/osmplayer/src/osmplayer.parser.xspf.js -text
+public/admin/js/osmplayer/src/osmplayer.parser.youtube.js -text
+public/admin/js/osmplayer/src/osmplayer.playlist.js -text
+public/admin/js/osmplayer/src/osmplayer.teaser.js -text
+public/admin/js/osmplayer/templates/default/css/images/loader.gif -text svneol=unset#unset
+public/admin/js/osmplayer/templates/default/css/osmplayer_default.css -text
+public/admin/js/osmplayer/templates/default/js/osmplayer.controller.default.js -text
+public/admin/js/osmplayer/templates/default/js/osmplayer.default.js -text
+public/admin/js/osmplayer/templates/default/js/osmplayer.pager.default.js -text
+public/admin/js/osmplayer/templates/default/js/osmplayer.playLoader.default.js -text
+public/admin/js/osmplayer/templates/default/js/osmplayer.playlist.default.js -text
+public/admin/js/osmplayer/templates/default/js/osmplayer.teaser.default.js -text
+public/admin/js/osmplayer/templates/default/osmplayer.default.js -text
+public/admin/js/osmplayer/templates/default/osmplayer_default.tpl.php -text
+public/admin/js/osmplayer/templates/simpleblack/css/images/busy.gif -text svneol=unset#unset
+public/admin/js/osmplayer/templates/simpleblack/css/images/mask.png -text svneol=unset#unset
+public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_audioslidebarbg.png -text svneol=unset#unset
+public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_back.png -text svneol=unset#unset
+public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_bigplay.png -text svneol=unset#unset
+public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_black40.png -text svneol=unset#unset
+public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_blue20.png -text svneol=unset#unset
+public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_buttonaudioslidebar.png -text svneol=unset#unset
+public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_buttoncontroler.png -text svneol=unset#unset
+public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_buttoninfo.png -text svneol=unset#unset
+public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_buttonpause.png -text svneol=unset#unset
+public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_buttonplay.png -text svneol=unset#unset
+public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_buttonresizescreen.png -text svneol=unset#unset
+public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_buttonsound.png -text svneol=unset#unset
+public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_close.png -text svneol=unset#unset
+public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_controlerbarBg.png -text svneol=unset#unset
+public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_forward.png -text svneol=unset#unset
+public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_infobox.png -text svneol=unset#unset
+public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_logo.png -text svneol=unset#unset
+public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_movie640x360.png -text svneol=unset#unset
+public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_moviethumb.png -text svneol=unset#unset
+public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_playlistbg.png -text svneol=unset#unset
+public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_playlistshadow.png -text svneol=unset#unset
+public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_playlisttitlebg.png -text svneol=unset#unset
+public/admin/js/osmplayer/templates/simpleblack/css/osmplayer_simpleblack.css -text
+public/admin/js/osmplayer/templates/simpleblack/js/osmplayer.controller.simpleblack.js -text
+public/admin/js/osmplayer/templates/simpleblack/js/osmplayer.playLoader.simpleblack.js -text
+public/admin/js/osmplayer/templates/simpleblack/js/osmplayer.simpleblack.js -text
+public/admin/js/osmplayer/templates/simpleblack/osmplayer_simpleblack.tpl.php -text
+public/admin/js/osmplayer/version.txt -text
 public/admin/js/plan_acces_conception.js -text
 public/admin/js/prettyphoto/README -text
 public/admin/js/prettyphoto/css/prettyPhoto.css -text
diff --git a/doc/extern_libs.txt b/doc/extern_libs.txt
index b25cb9da2c92d1c12d30d77c19f889212e7ba400..f22356a18b83b79818baeb167fb060bd41378db8 100644
--- a/doc/extern_libs.txt
+++ b/doc/extern_libs.txt
@@ -29,6 +29,7 @@
 | FPDF                                | MIT like                    |               |                                   |                  | http://www.fpdf.org/                                                                                                           |
 | Nuvola icons                        | LGPL                        |               | icônes                            |                  | http://www.icon-king.com/projects/nuvola/                                                                                      |
 | JQuery PlaceHolder plugin           | MIT/GPL                     |               | compat IE                         |                  | https://github.com/mathiasbynens/jquery-placeholder                                                                            |
-| Monocle                             | MIT                         |               | lecture epub                      |                  | https://github.com/joseph/Monocle                                                                                                                               |
+| OSM Player                          | GPL v3                      |               | player multimedia                 |                  | http://mediafront.org/osmplayer/index.html#.UFB0Q3lOpw4                                                                        |
+
 
 
diff --git a/public/admin/js/osmplayer/LICENSE.TXT b/public/admin/js/osmplayer/LICENSE.TXT
new file mode 100644
index 0000000000000000000000000000000000000000..da2199702749427718e03dfbd157d33b8ad1c079
--- /dev/null
+++ b/public/admin/js/osmplayer/LICENSE.TXT
@@ -0,0 +1,25 @@
+/**
+ *  Copyright (c) 2010 Alethia Inc,
+ *  http://www.alethia-inc.com
+ *  Developed by Travis Tidwell | travist at alethia-inc.com 
+ *
+ *  License:  GPL version 3.
+ *
+ *  Permission is hereby granted, free of charge, to any person obtaining a copy
+ *  of this software and associated documentation files (the "Software"), to deal
+ *  in the Software without restriction, including without limitation the rights
+ *  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ *  copies of the Software, and to permit persons to whom the Software is
+ *  furnished to do so, subject to the following conditions:
+ *  
+ *  The above copyright notice and this permission notice shall be included in
+ *  all copies or substantial portions of the Software.
+
+ *  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ *  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ *  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ *  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ *  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ *  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ *  THE SOFTWARE.
+ */
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/README.md b/public/admin/js/osmplayer/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..91d58f8d166f6f6272c671874aebd717afed1d9d
--- /dev/null
+++ b/public/admin/js/osmplayer/README.md
@@ -0,0 +1,11 @@
+Open Standard Media Player
+=====================================
+
+ABOUT:
+   The open standard media player is an open source GPL - license free - full featured media player written in jQuery.
+   It was designed to dynamically play any media thrown it's way, whether it be HTML5 video - Flash video - Audio, etc.
+
+   Although this media player was designed to be used within a Content Management environment, such as Drupal, you can
+   use this player for other applications outside of a CMS.
+
+ENJOY!
diff --git a/public/admin/js/osmplayer/bin/osmplayer.compressed.js b/public/admin/js/osmplayer/bin/osmplayer.compressed.js
new file mode 100644
index 0000000000000000000000000000000000000000..c7984bd11d3870b01d0bc7a3d6cbbf7a6f7a8050
--- /dev/null
+++ b/public/admin/js/osmplayer/bin/osmplayer.compressed.js
@@ -0,0 +1,187 @@
+(function(){var a=Math,b=/webkit/i.test(navigator.appVersion)?"webkit":/firefox/i.test(navigator.userAgent)?"Moz":/trident/i.test(navigator.userAgent)?"ms":"opera"in window?"O":"",c=/android/gi.test(navigator.appVersion),d=/iphone|ipad/gi.test(navigator.appVersion),e=/playbook/gi.test(navigator.appVersion),h=/hp-tablet/gi.test(navigator.appVersion),i="WebKitCSSMatrix"in window&&"m11"in new WebKitCSSMatrix,j="ontouchstart"in window&&!h,k=b+"Transform"in document.documentElement.style,m=d||e,s=window.requestAnimationFrame||
+window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){return setTimeout(a,1)},x=window.cancelRequestAnimationFrame||window.webkitCancelAnimationFrame||window.webkitCancelRequestAnimationFrame||window.mozCancelRequestAnimationFrame||window.oCancelRequestAnimationFrame||window.msCancelRequestAnimationFrame||clearTimeout,t="onorientationchange"in window?"orientationchange":"resize",u=j?"touchstart":"mousedown",
+p=j?"touchmove":"mousemove",q=j?"touchend":"mouseup",r=j?"touchcancel":"mouseup",v="Moz"==b?"DOMMouseScroll":"mousewheel",n="translate"+(i?"3d(":"("),o=i?",0)":")",e=function(a,f){var g=this,e=document,w;g.wrapper="object"==typeof a?a:e.getElementById(a);g.wrapper.style.overflow="hidden";g.scroller=g.wrapper.children[0];g.options={hScroll:!0,vScroll:!0,x:0,y:0,bounce:!0,bounceLock:!1,momentum:!0,lockDirection:!0,useTransform:!0,useTransition:!1,topOffset:0,checkDOMChanges:!1,hScrollbar:!0,vScrollbar:!0,
+fixedScrollbar:c,hideScrollbar:d,fadeScrollbar:d&&i,scrollbarClass:"",zoom:!1,zoomMin:1,zoomMax:4,doubleTapZoom:2,wheelAction:"scroll",snap:!1,snapThreshold:1,onRefresh:null,onBeforeScrollStart:function(a){a.preventDefault()},onScrollStart:null,onBeforeScrollMove:null,onScrollMove:null,onBeforeScrollEnd:null,onScrollEnd:null,onTouchEnd:null,onDestroy:null,onZoomStart:null,onZoom:null,onZoomEnd:null};for(w in f)g.options[w]=f[w];g.x=g.options.x;g.y=g.options.y;g.options.useTransform=k?g.options.useTransform:
+!1;g.options.hScrollbar=g.options.hScroll&&g.options.hScrollbar;g.options.vScrollbar=g.options.vScroll&&g.options.vScrollbar;g.options.zoom=g.options.useTransform&&g.options.zoom;g.options.useTransition=m&&g.options.useTransition;g.options.zoom&&c&&(n="translate(",o=")");g.scroller.style[b+"TransitionProperty"]=g.options.useTransform?"-"+b.toLowerCase()+"-transform":"top left";g.scroller.style[b+"TransitionDuration"]="0";g.scroller.style[b+"TransformOrigin"]="0 0";g.options.useTransition&&(g.scroller.style[b+
+"TransitionTimingFunction"]="cubic-bezier(0.33,0.66,0.66,1)");g.options.useTransform?g.scroller.style[b+"Transform"]=n+g.x+"px,"+g.y+"px"+o:g.scroller.style.cssText+=";position:absolute;top:"+g.y+"px;left:"+g.x+"px";g.options.useTransition&&(g.options.fixedScrollbar=!0);g.refresh();g._bind(t,window);g._bind(u);j||(g._bind("mouseout",g.wrapper),"none"!=g.options.wheelAction&&g._bind(v));g.options.checkDOMChanges&&(g.checkDOMTime=setInterval(function(){g._checkDOMChanges()},500))};e.prototype={enabled:!0,
+x:0,y:0,steps:[],scale:1,currPageX:0,currPageY:0,pagesX:[],pagesY:[],aniTime:null,wheelZoomCount:0,handleEvent:function(a){switch(a.type){case u:if(!j&&0!==a.button)break;this._start(a);break;case p:this._move(a);break;case q:case r:this._end(a);break;case t:this._resize();break;case v:this._wheel(a);break;case "mouseout":this._mouseout(a);break;case "webkitTransitionEnd":this._transitionEnd(a)}},_checkDOMChanges:function(){!this.moved&&(!this.zoomed&&!(this.animating||this.scrollerW==this.scroller.offsetWidth*
+this.scale&&this.scrollerH==this.scroller.offsetHeight*this.scale))&&this.refresh()},_scrollbar:function(c){var f=document,g;this[c+"Scrollbar"]?(this[c+"ScrollbarWrapper"]||(g=f.createElement("div"),this.options.scrollbarClass?g.className=this.options.scrollbarClass+c.toUpperCase():g.style.cssText="position:absolute;z-index:100;"+("h"==c?"height:7px;bottom:1px;left:2px;right:"+(this.vScrollbar?"7":"2")+"px":"width:7px;bottom:"+(this.hScrollbar?"7":"2")+"px;top:2px;right:1px"),g.style.cssText+=";pointer-events:none;-"+
+b+"-transition-property:opacity;-"+b+"-transition-duration:"+(this.options.fadeScrollbar?"350ms":"0")+";overflow:hidden;opacity:"+(this.options.hideScrollbar?"0":"1"),this.wrapper.appendChild(g),this[c+"ScrollbarWrapper"]=g,g=f.createElement("div"),this.options.scrollbarClass||(g.style.cssText="position:absolute;z-index:100;background:rgba(0,0,0,0.5);border:1px solid rgba(255,255,255,0.9);-"+b+"-background-clip:padding-box;-"+b+"-box-sizing:border-box;"+("h"==c?"height:100%":"width:100%")+";-"+b+
+"-border-radius:3px;border-radius:3px"),g.style.cssText+=";pointer-events:none;-"+b+"-transition-property:-"+b+"-transform;-"+b+"-transition-timing-function:cubic-bezier(0.33,0.66,0.66,1);-"+b+"-transition-duration:0;-"+b+"-transform:"+n+"0,0"+o,this.options.useTransition&&(g.style.cssText+=";-"+b+"-transition-timing-function:cubic-bezier(0.33,0.66,0.66,1)"),this[c+"ScrollbarWrapper"].appendChild(g),this[c+"ScrollbarIndicator"]=g),"h"==c?(this.hScrollbarSize=this.hScrollbarWrapper.clientWidth,this.hScrollbarIndicatorSize=
+a.max(this.hScrollbarSize*this.hScrollbarSize/this.scrollerW>>0,8),this.hScrollbarIndicator.style.width=this.hScrollbarIndicatorSize+"px",this.hScrollbarMaxScroll=this.hScrollbarSize-this.hScrollbarIndicatorSize,this.hScrollbarProp=this.hScrollbarMaxScroll/this.maxScrollX):(this.vScrollbarSize=this.vScrollbarWrapper.clientHeight,this.vScrollbarIndicatorSize=a.max(this.vScrollbarSize*this.vScrollbarSize/this.scrollerH>>0,8),this.vScrollbarIndicator.style.height=this.vScrollbarIndicatorSize+"px",this.vScrollbarMaxScroll=
+this.vScrollbarSize-this.vScrollbarIndicatorSize,this.vScrollbarProp=this.vScrollbarMaxScroll/this.maxScrollY),this._scrollbarPos(c,!0)):this[c+"ScrollbarWrapper"]&&(k&&(this[c+"ScrollbarIndicator"].style[b+"Transform"]=""),this[c+"ScrollbarWrapper"].parentNode.removeChild(this[c+"ScrollbarWrapper"]),this[c+"ScrollbarWrapper"]=null,this[c+"ScrollbarIndicator"]=null)},_resize:function(){var a=this;setTimeout(function(){a.refresh()},c?200:0)},_pos:function(a,c){a=this.hScroll?a:0;c=this.vScroll?c:0;
+this.options.useTransform?this.scroller.style[b+"Transform"]=n+a+"px,"+c+"px"+o+" scale("+this.scale+")":(a>>=0,c>>=0,this.scroller.style.left=a+"px",this.scroller.style.top=c+"px");this.x=a;this.y=c;this._scrollbarPos("h");this._scrollbarPos("v")},_scrollbarPos:function(a,c){var g="h"==a?this.x:this.y;this[a+"Scrollbar"]&&(g*=this[a+"ScrollbarProp"],0>g?(this.options.fixedScrollbar||(g=this[a+"ScrollbarIndicatorSize"]+(3*g>>0),8>g&&(g=8),this[a+"ScrollbarIndicator"].style["h"==a?"width":"height"]=
+g+"px"),g=0):g>this[a+"ScrollbarMaxScroll"]&&(this.options.fixedScrollbar?g=this[a+"ScrollbarMaxScroll"]:(g=this[a+"ScrollbarIndicatorSize"]-(3*(g-this[a+"ScrollbarMaxScroll"])>>0),8>g&&(g=8),this[a+"ScrollbarIndicator"].style["h"==a?"width":"height"]=g+"px",g=this[a+"ScrollbarMaxScroll"]+(this[a+"ScrollbarIndicatorSize"]-g))),this[a+"ScrollbarWrapper"].style[b+"TransitionDelay"]="0",this[a+"ScrollbarWrapper"].style.opacity=c&&this.options.hideScrollbar?"0":"1",this[a+"ScrollbarIndicator"].style[b+
+"Transform"]=n+("h"==a?g+"px,0":"0,"+g+"px")+o)},_start:function(c){var f=j?c.touches[0]:c,g,d;if(this.enabled){this.options.onBeforeScrollStart&&this.options.onBeforeScrollStart.call(this,c);(this.options.useTransition||this.options.zoom)&&this._transitionTime(0);this.zoomed=this.animating=this.moved=!1;this.dirY=this.dirX=this.absDistY=this.absDistX=this.distY=this.distX=0;this.options.zoom&&(j&&1<c.touches.length)&&(d=a.abs(c.touches[0].pageX-c.touches[1].pageX),g=a.abs(c.touches[0].pageY-c.touches[1].pageY),
+this.touchesDistStart=a.sqrt(d*d+g*g),this.originX=a.abs(c.touches[0].pageX+c.touches[1].pageX-2*this.wrapperOffsetLeft)/2-this.x,this.originY=a.abs(c.touches[0].pageY+c.touches[1].pageY-2*this.wrapperOffsetTop)/2-this.y,this.options.onZoomStart&&this.options.onZoomStart.call(this,c));if(this.options.momentum&&(this.options.useTransform?(g=getComputedStyle(this.scroller,null)[b+"Transform"].replace(/[^0-9-.,]/g,"").split(","),d=1*g[4],g=1*g[5]):(d=1*getComputedStyle(this.scroller,null).left.replace(/[^0-9-]/g,
+""),g=1*getComputedStyle(this.scroller,null).top.replace(/[^0-9-]/g,"")),d!=this.x||g!=this.y))this.options.useTransition?this._unbind("webkitTransitionEnd"):x(this.aniTime),this.steps=[],this._pos(d,g);this.absStartX=this.x;this.absStartY=this.y;this.startX=this.x;this.startY=this.y;this.pointX=f.pageX;this.pointY=f.pageY;this.startTime=c.timeStamp||Date.now();this.options.onScrollStart&&this.options.onScrollStart.call(this,c);this._bind(p);this._bind(q);this._bind(r)}},_move:function(c){var f=j?
+c.touches[0]:c,g=f.pageX-this.pointX,d=f.pageY-this.pointY,e=this.x+g,h=this.y+d,i=c.timeStamp||Date.now();this.options.onBeforeScrollMove&&this.options.onBeforeScrollMove.call(this,c);if(this.options.zoom&&j&&1<c.touches.length)e=a.abs(c.touches[0].pageX-c.touches[1].pageX),h=a.abs(c.touches[0].pageY-c.touches[1].pageY),this.touchesDist=a.sqrt(e*e+h*h),this.zoomed=!0,f=1/this.touchesDistStart*this.touchesDist*this.scale,f<this.options.zoomMin?f=0.5*this.options.zoomMin*Math.pow(2,f/this.options.zoomMin):
+f>this.options.zoomMax&&(f=2*this.options.zoomMax*Math.pow(0.5,this.options.zoomMax/f)),this.lastScale=f/this.scale,e=this.originX-this.originX*this.lastScale+this.x,h=this.originY-this.originY*this.lastScale+this.y,this.scroller.style[b+"Transform"]=n+e+"px,"+h+"px"+o+" scale("+f+")",this.options.onZoom&&this.options.onZoom.call(this,c);else{this.pointX=f.pageX;this.pointY=f.pageY;if(0<e||e<this.maxScrollX)e=this.options.bounce?this.x+g/2:0<=e||0<=this.maxScrollX?0:this.maxScrollX;if(h>this.minScrollY||
+h<this.maxScrollY)h=this.options.bounce?this.y+d/2:h>=this.minScrollY||0<=this.maxScrollY?this.minScrollY:this.maxScrollY;this.distX+=g;this.distY+=d;this.absDistX=a.abs(this.distX);this.absDistY=a.abs(this.distY);6>this.absDistX&&6>this.absDistY||(this.options.lockDirection&&(this.absDistX>this.absDistY+5?(h=this.y,d=0):this.absDistY>this.absDistX+5&&(e=this.x,g=0)),this.moved=!0,this._pos(e,h),this.dirX=0<g?-1:0>g?1:0,this.dirY=0<d?-1:0>d?1:0,300<i-this.startTime&&(this.startTime=i,this.startX=
+this.x,this.startY=this.y),this.options.onScrollMove&&this.options.onScrollMove.call(this,c))}},_end:function(c){if(!(j&&0!=c.touches.length)){var f=this,g=j?c.changedTouches[0]:c,d,e,h={dist:0,time:0},i={dist:0,time:0},k=(c.timeStamp||Date.now())-f.startTime,l=f.x,m=f.y;f._unbind(p);f._unbind(q);f._unbind(r);f.options.onBeforeScrollEnd&&f.options.onBeforeScrollEnd.call(f,c);if(f.zoomed)l=f.scale*f.lastScale,l=Math.max(f.options.zoomMin,l),l=Math.min(f.options.zoomMax,l),f.lastScale=l/f.scale,f.scale=
+l,f.x=f.originX-f.originX*f.lastScale+f.x,f.y=f.originY-f.originY*f.lastScale+f.y,f.scroller.style[b+"TransitionDuration"]="200ms",f.scroller.style[b+"Transform"]=n+f.x+"px,"+f.y+"px"+o+" scale("+f.scale+")",f.zoomed=!1,f.refresh(),f.options.onZoomEnd&&f.options.onZoomEnd.call(f,c);else{if(f.moved){if(300>k&&f.options.momentum){h=l?f._momentum(l-f.startX,k,-f.x,f.scrollerW-f.wrapperW+f.x,f.options.bounce?f.wrapperW:0):h;i=m?f._momentum(m-f.startY,k,-f.y,0>f.maxScrollY?f.scrollerH-f.wrapperH+f.y-f.minScrollY:
+0,f.options.bounce?f.wrapperH:0):i;l=f.x+h.dist;m=f.y+i.dist;if(0<f.x&&0<l||f.x<f.maxScrollX&&l<f.maxScrollX)h={dist:0,time:0};if(f.y>f.minScrollY&&m>f.minScrollY||f.y<f.maxScrollY&&m<f.maxScrollY)i={dist:0,time:0}}h.dist||i.dist?(h=a.max(a.max(h.time,i.time),10),f.options.snap&&(i=l-f.absStartX,k=m-f.absStartY,a.abs(i)<f.options.snapThreshold&&a.abs(k)<f.options.snapThreshold?f.scrollTo(f.absStartX,f.absStartY,200):(i=f._snap(l,m),l=i.x,m=i.y,h=a.max(i.time,h))),f.scrollTo(l>>0,m>>0,h)):f.options.snap?
+(i=l-f.absStartX,k=m-f.absStartY,a.abs(i)<f.options.snapThreshold&&a.abs(k)<f.options.snapThreshold?f.scrollTo(f.absStartX,f.absStartY,200):(i=f._snap(f.x,f.y),(i.x!=f.x||i.y!=f.y)&&f.scrollTo(i.x,i.y,i.time))):f._resetPos(200)}else j&&(f.doubleTapTimer&&f.options.zoom?(clearTimeout(f.doubleTapTimer),f.doubleTapTimer=null,f.options.onZoomStart&&f.options.onZoomStart.call(f,c),f.zoom(f.pointX,f.pointY,1==f.scale?f.options.doubleTapZoom:1),f.options.onZoomEnd&&setTimeout(function(){f.options.onZoomEnd.call(f,
+c)},200)):f.doubleTapTimer=setTimeout(function(){f.doubleTapTimer=null;for(d=g.target;1!=d.nodeType;)d=d.parentNode;"SELECT"!=d.tagName&&("INPUT"!=d.tagName&&"TEXTAREA"!=d.tagName)&&(e=document.createEvent("MouseEvents"),e.initMouseEvent("click",!0,!0,c.view,1,g.screenX,g.screenY,g.clientX,g.clientY,c.ctrlKey,c.altKey,c.shiftKey,c.metaKey,0,null),e._fake=!0,d.dispatchEvent(e))},f.options.zoom?250:0)),f._resetPos(200);f.options.onTouchEnd&&f.options.onTouchEnd.call(f,c)}}},_resetPos:function(a){var c=
+0<=this.x?0:this.x<this.maxScrollX?this.maxScrollX:this.x,g=this.y>=this.minScrollY||0<this.maxScrollY?this.minScrollY:this.y<this.maxScrollY?this.maxScrollY:this.y;if(c==this.x&&g==this.y){if(this.moved&&(this.moved=!1,this.options.onScrollEnd&&this.options.onScrollEnd.call(this)),this.hScrollbar&&this.options.hideScrollbar&&("webkit"==b&&(this.hScrollbarWrapper.style[b+"TransitionDelay"]="300ms"),this.hScrollbarWrapper.style.opacity="0"),this.vScrollbar&&this.options.hideScrollbar)"webkit"==b&&
+(this.vScrollbarWrapper.style[b+"TransitionDelay"]="300ms"),this.vScrollbarWrapper.style.opacity="0"}else this.scrollTo(c,g,a||0)},_wheel:function(a){var b=this,c,d;if("wheelDeltaX"in a)c=a.wheelDeltaX/12,d=a.wheelDeltaY/12;else if("wheelDelta"in a)c=d=a.wheelDelta/12;else if("detail"in a)c=d=3*-a.detail;else return;if("zoom"==b.options.wheelAction){if(d=b.scale*Math.pow(2,1/3*(d?d/Math.abs(d):0)),d<b.options.zoomMin&&(d=b.options.zoomMin),d>b.options.zoomMax&&(d=b.options.zoomMax),d!=b.scale)!b.wheelZoomCount&&
+b.options.onZoomStart&&b.options.onZoomStart.call(b,a),b.wheelZoomCount++,b.zoom(a.pageX,a.pageY,d,400),setTimeout(function(){b.wheelZoomCount--;!b.wheelZoomCount&&b.options.onZoomEnd&&b.options.onZoomEnd.call(b,a)},400)}else c=b.x+c,d=b.y+d,0<c?c=0:c<b.maxScrollX&&(c=b.maxScrollX),d>b.minScrollY?d=b.minScrollY:d<b.maxScrollY&&(d=b.maxScrollY),b.scrollTo(c,d,0)},_mouseout:function(a){var b=a.relatedTarget;if(b)for(;b=b.parentNode;)if(b==this.wrapper)return;this._end(a)},_transitionEnd:function(a){a.target==
+this.scroller&&(this._unbind("webkitTransitionEnd"),this._startAni())},_startAni:function(){var b=this,c=b.x,d=b.y,e=Date.now(),h,i,k;b.animating||(b.steps.length?(h=b.steps.shift(),h.x==c&&h.y==d&&(h.time=0),b.animating=!0,b.moved=!0,b.options.useTransition)?(b._transitionTime(h.time),b._pos(h.x,h.y),b.animating=!1,h.time?b._bind("webkitTransitionEnd"):b._resetPos(0)):(k=function(){var j=Date.now(),m;if(j>=e+h.time){b._pos(h.x,h.y);b.animating=false;b.options.onAnimationEnd&&b.options.onAnimationEnd.call(b);
+b._startAni()}else{j=(j-e)/h.time-1;i=a.sqrt(1-j*j);j=(h.x-c)*i+c;m=(h.y-d)*i+d;b._pos(j,m);if(b.animating)b.aniTime=s(k)}},k()):b._resetPos(400))},_transitionTime:function(a){a+="ms";this.scroller.style[b+"TransitionDuration"]=a;this.hScrollbar&&(this.hScrollbarIndicator.style[b+"TransitionDuration"]=a);this.vScrollbar&&(this.vScrollbarIndicator.style[b+"TransitionDuration"]=a)},_momentum:function(b,c,d,e,h){var c=a.abs(b)/c,i=c*c/0.0012;0<b&&i>d?(d+=h/(6/(6E-4*(i/c))),c=c*d/i,i=d):0>b&&i>e&&(e+=
+h/(6/(6E-4*(i/c))),c=c*e/i,i=e);return{dist:i*(0>b?-1:1),time:c/6E-4>>0}},_offset:function(a){for(var b=-a.offsetLeft,c=-a.offsetTop;a=a.offsetParent;)b-=a.offsetLeft,c-=a.offsetTop;a!=this.wrapper&&(b*=this.scale,c*=this.scale);return{left:b,top:c}},_snap:function(b,c){var d,e,h;h=this.pagesX.length-1;d=0;for(e=this.pagesX.length;d<e;d++)if(b>=this.pagesX[d]){h=d;break}h==this.currPageX&&(0<h&&0>this.dirX)&&h--;b=this.pagesX[h];e=(e=a.abs(b-this.pagesX[this.currPageX]))?500*(a.abs(this.x-b)/e):0;
+this.currPageX=h;h=this.pagesY.length-1;for(d=0;d<h;d++)if(c>=this.pagesY[d]){h=d;break}h==this.currPageY&&(0<h&&0>this.dirY)&&h--;c=this.pagesY[h];d=(d=a.abs(c-this.pagesY[this.currPageY]))?500*(a.abs(this.y-c)/d):0;this.currPageY=h;h=a.max(e,d)>>0;return{x:b,y:c,time:h||200}},_bind:function(a,b,c){(b||this.scroller).addEventListener(a,this,!!c)},_unbind:function(a,b,c){(b||this.scroller).removeEventListener(a,this,!!c)},destroy:function(){this.scroller.style[b+"Transform"]="";this.vScrollbar=this.hScrollbar=
+!1;this._scrollbar("h");this._scrollbar("v");this._unbind(t,window);this._unbind(u);this._unbind(p);this._unbind(q);this._unbind(r);this.options.hasTouch||(this._unbind("mouseout",this.wrapper),this._unbind(v));this.options.useTransition&&this._unbind("webkitTransitionEnd");this.options.checkDOMChanges&&clearInterval(this.checkDOMTime);this.options.onDestroy&&this.options.onDestroy.call(this)},refresh:function(){var a,c,d,e=0;c=0;this.scale<this.options.zoomMin&&(this.scale=this.options.zoomMin);
+this.wrapperW=this.wrapper.clientWidth||1;this.wrapperH=this.wrapper.clientHeight||1;this.minScrollY=-this.options.topOffset||0;this.scrollerW=this.scroller.offsetWidth*this.scale>>0;this.scrollerH=(this.scroller.offsetHeight+this.minScrollY)*this.scale>>0;this.maxScrollX=this.wrapperW-this.scrollerW;this.maxScrollY=this.wrapperH-this.scrollerH+this.minScrollY;this.dirY=this.dirX=0;this.options.onRefresh&&this.options.onRefresh.call(this);this.hScroll=this.options.hScroll&&0>this.maxScrollX;this.vScroll=
+this.options.vScroll&&(!this.options.bounceLock&&!this.hScroll||this.scrollerH>this.wrapperH);this.hScrollbar=this.hScroll&&this.options.hScrollbar;this.vScrollbar=this.vScroll&&this.options.vScrollbar&&this.scrollerH>this.wrapperH;a=this._offset(this.wrapper);this.wrapperOffsetLeft=-a.left;this.wrapperOffsetTop=-a.top;if("string"==typeof this.options.snap){this.pagesX=[];this.pagesY=[];d=this.scroller.querySelectorAll(this.options.snap);a=0;for(c=d.length;a<c;a++)e=this._offset(d[a]),e.left+=this.wrapperOffsetLeft,
+e.top+=this.wrapperOffsetTop,this.pagesX[a]=e.left<this.maxScrollX?this.maxScrollX:e.left*this.scale,this.pagesY[a]=e.top<this.maxScrollY?this.maxScrollY:e.top*this.scale}else if(this.options.snap){for(this.pagesX=[];e>=this.maxScrollX;)this.pagesX[c]=e,e-=this.wrapperW,c++;this.maxScrollX%this.wrapperW&&(this.pagesX[this.pagesX.length]=this.maxScrollX-this.pagesX[this.pagesX.length-1]+this.pagesX[this.pagesX.length-1]);c=e=0;for(this.pagesY=[];e>=this.maxScrollY;)this.pagesY[c]=e,e-=this.wrapperH,
+c++;this.maxScrollY%this.wrapperH&&(this.pagesY[this.pagesY.length]=this.maxScrollY-this.pagesY[this.pagesY.length-1]+this.pagesY[this.pagesY.length-1])}this._scrollbar("h");this._scrollbar("v");this.zoomed||(this.scroller.style[b+"TransitionDuration"]="0",this._resetPos(200))},scrollTo:function(a,b,c,d){var e=a;this.stop();e.length||(e=[{x:a,y:b,time:c,relative:d}]);a=0;for(b=e.length;a<b;a++)e[a].relative&&(e[a].x=this.x-e[a].x,e[a].y=this.y-e[a].y),this.steps.push({x:e[a].x,y:e[a].y,time:e[a].time||
+0});this._startAni()},scrollToElement:function(b,c){var d;if(b=b.nodeType?b:this.scroller.querySelector(b))d=this._offset(b),d.left+=this.wrapperOffsetLeft,d.top+=this.wrapperOffsetTop,d.left=0<d.left?0:d.left<this.maxScrollX?this.maxScrollX:d.left,d.top=d.top>this.minScrollY?this.minScrollY:d.top<this.maxScrollY?this.maxScrollY:d.top,c=void 0===c?a.max(2*a.abs(d.left),2*a.abs(d.top)):c,this.scrollTo(d.left,d.top,c)},scrollToPage:function(a,b,c){c=void 0===c?400:c;this.options.onScrollStart&&this.options.onScrollStart.call(this);
+if(this.options.snap)a="next"==a?this.currPageX+1:"prev"==a?this.currPageX-1:a,b="next"==b?this.currPageY+1:"prev"==b?this.currPageY-1:b,a=0>a?0:a>this.pagesX.length-1?this.pagesX.length-1:a,b=0>b?0:b>this.pagesY.length-1?this.pagesY.length-1:b,this.currPageX=a,this.currPageY=b,a=this.pagesX[a],b=this.pagesY[b];else if(a*=-this.wrapperW,b*=-this.wrapperH,a<this.maxScrollX&&(a=this.maxScrollX),b<this.maxScrollY)b=this.maxScrollY;this.scrollTo(a,b,c)},disable:function(){this.stop();this._resetPos(0);
+this.enabled=!1;this._unbind(p);this._unbind(q);this._unbind(r)},enable:function(){this.enabled=!0},stop:function(){this.options.useTransition?this._unbind("webkitTransitionEnd"):x(this.aniTime);this.steps=[];this.animating=this.moved=!1},zoom:function(a,c,d,e){var h=d/this.scale;this.options.useTransform&&(this.zoomed=!0,e=void 0===e?200:e,a=a-this.wrapperOffsetLeft-this.x,c=c-this.wrapperOffsetTop-this.y,this.x=a-a*h+this.x,this.y=c-c*h+this.y,this.scale=d,this.refresh(),this.x=0<this.x?0:this.x<
+this.maxScrollX?this.maxScrollX:this.x,this.y=this.y>this.minScrollY?this.minScrollY:this.y<this.maxScrollY?this.maxScrollY:this.y,this.scroller.style[b+"TransitionDuration"]=e+"ms",this.scroller.style[b+"Transform"]=n+this.x+"px,"+this.y+"px"+o+" scale("+d+")",this.zoomed=!1)},isReady:function(){return!this.moved&&!this.zoomed&&!this.animating}};"undefined"!==typeof exports?exports.iScroll=e:window.iScroll=e})();var minplayer=minplayer||{};
+function checkPlayType(a,b){if("function"===typeof a.canPlayType){if("object"===typeof b){for(var c=b.length,d="";c--&&!(d=checkPlayType(a,b[c])););return d}c=a.canPlayType(b);if("no"!==c&&""!==c)return b}return""}
+minplayer.compatibility=function(){var a=null,a=document.createElement("video");this.videoOGG=checkPlayType(a,"video/ogg");this.videoH264=checkPlayType(a,["video/mp4","video/h264"]);this.videoWEBM=checkPlayType(a,["video/x-webm","video/webm","application/octet-stream"]);a=document.createElement("audio");this.audioOGG=checkPlayType(a,"audio/ogg");this.audioMP3=checkPlayType(a,"audio/mpeg");this.audioMP4=checkPlayType(a,"audio/mp4")};
+minplayer.playTypes||(minplayer.playTypes=new minplayer.compatibility,minplayer.isAndroid=/android/gi.test(navigator.appVersion),minplayer.isIDevice=/iphone|ipad/gi.test(navigator.appVersion),minplayer.isPlaybook=/playbook/gi.test(navigator.appVersion),minplayer.isTouchPad=/hp-tablet/gi.test(navigator.appVersion),minplayer.hasTouch="ontouchstart"in window&&!minplayer.isTouchPad);minplayer=minplayer||{};minplayer.async=function(){this.value=null;this.queue=[]};
+minplayer.async.prototype.get=function(a){this.value!==null?a(this.value):this.queue.push(a)};minplayer.async.prototype.set=function(a){this.value=a;var b=this.queue.length;if(b){for(;b--;)this.queue[b](a);this.queue=[]}};minplayer=minplayer||{};minplayer.flags=function(){this.flag=0;this.ids={};this.numFlags=0};minplayer.flags.prototype.setFlag=function(a,b){if(!this.ids.hasOwnProperty(a)){this.ids[a]=this.numFlags;this.numFlags++}this.flag=b?this.flag|1<<this.ids[a]:this.flag&~(1<<this.ids[a])};
+minplayer=minplayer||{};minplayer.plugins=minplayer.plugins||{};minplayer.queue=minplayer.queue||[];minplayer.lock=!1;minplayer.plugin=function(a,b,c,d){this.name=a;this.pluginReady=false;this.options=c||{};this.queue=d||{};this.triggered={};this.lock=false;if(b){this.active=true;this.context=jQuery(b);this.construct()}};minplayer.plugin.prototype.construct=function(){this.addPlugin()};minplayer.plugin.prototype.destroy=function(){this.active=false;this.unbind()};
+minplayer.plugin.prototype.create=function(a,b,c){var d=null,b=b||"minplayer";window[b][a]||(b="minplayer");c=c||this.display;if(window[b][a]){d=window[b][a];d[this.options.template]&&(d=d[this.options.template]);typeof d!=="function"&&(d=window.minplayer[a]);if(typeof d==="function")return new d(c,this.options)}return null};minplayer.plugin.prototype.ready=function(){if(!this.pluginReady){this.pluginReady=true;this.trigger("ready");this.checkQueue()}};
+minplayer.plugin.prototype.isValid=function(){return!!this.options.id&&this.active};minplayer.plugin.prototype.addPlugin=function(a,b){a=a||this.name;b=b||this;if(b.isValid()){minplayer.plugins[this.options.id]||(minplayer.plugins[this.options.id]={});minplayer.plugins[this.options.id][a]||(minplayer.plugins[this.options.id][a]=[]);minplayer.plugins[this.options.id][a].push(b);this.checkQueue(b)}};
+minplayer.plugin.prototype.poll=function(a,b){var c=this;setTimeout(function e(){a.call(c)&&setTimeout(e,b)},b)};minplayer.plugin.prototype.get=function(a,b){if(typeof a==="function"){b=a;a=null}return minplayer.get.call(this,this.options.id,a,b)};
+minplayer.plugin.prototype.checkQueue=function(a){var b=null,c=0,d=false,e=[],a=a||this;minplayer.lock=true;for(var h=minplayer.queue.length,c=0;c<h;c++)if(minplayer.queue.hasOwnProperty(c)){b=minplayer.queue[c];d=!b.id&&!b.plugin;d=d|b.plugin==a.name;(d=d&(!b.id||b.id==this.options.id))&&(d=minplayer.bind.call(b.context,b.event,this.options.id,a.name,b.callback));d||e.push(b)}minplayer.queue=e;minplayer.lock=false};
+minplayer.plugin.prototype.trigger=function(a,b){if(!this.active)return this;this.triggered[a]=b;if(this.queue.hasOwnProperty(a)){var c=0,d={},e=this.queue[a];for(c in e)if(e.hasOwnProperty(c)){d=e[c];d.callback({target:this,data:d.data},b)}}return this};
+minplayer.plugin.prototype.bind=function(a,b,c){if(!this.active)return this;if(typeof b==="function"){c=b;b=null}if(a&&c){this.queue[a]=this.queue[a]||[];this.unbind(a,c);this.queue[a].push({callback:c,data:b});this.triggered.hasOwnProperty(a)&&c({target:this,data:b},this.triggered[a]);return this}};
+minplayer.plugin.prototype.unbind=function(a,b){if(this.lock){var c=this;setTimeout(function(){c.unbind(a,b)},10)}this.lock=true;var d=this.queue.hasOwnProperty(a)?this.queue[a]:null;if(a)if(b){if(d){var e=0,h={};for(e in d)if(d.hasOwnProperty(e)&&d[e].callback===b){h=this.queue[a].splice(e,1);delete h}}}else this.queue[a]=[];else this.queue={};this.lock=false;return this};
+minplayer.addQueue=function(a,b,c,d,e){minplayer.lock?setTimeout(function(){minplayer.addQueue(a,c,b,d,e)},10):minplayer.queue.push({context:a,id:c,event:b,plugin:d,callback:e})};
+minplayer.bind=function(a,b,c,d){if(!d)return false;var e=minplayer.plugins,h=[],i=function(a,b){if(e.hasOwnProperty(a)&&e[a].hasOwnProperty(b))for(var c=e[a][b].length;c--;)h.push(e[a][b][c])};if(b&&c)i(b,c);else if(!b&&c)for(b in e)i(b,c);else if(b&&!c&&e[b])for(c in e[b])i(b,c);else if(!b&&!c)for(b in e)for(c in e[b])i(b,c);for(i=h.length;i--;)h[i].bind(a,function(a){return function(b){d.call(a,b.target)}}(this));minplayer.addQueue(this,a,b,c,d);return h.length>0};
+minplayer.get=function(a,b,c){if(typeof a==="function"){c=a;b=a=null}if(typeof b==="function"){c=b;b=a;a=null}if(c=typeof c==="function"?c:null)minplayer.bind.call(this,"ready",a,b,c);else{var d=minplayer.plugins;if(!a&&!b&&!c)return d;if(a&&!b&&!c)return d[a];if(a&&b&&!c)return d[a][b];if(!a&&b&&!c){c=[];for(a in d)if(d.hasOwnProperty(a)&&d[a].hasOwnProperty(b))for(var e=d[a][b].length;e--;)c.push(d[a][b][e]);return c}}};minplayer=minplayer||{};
+minplayer.display=function(a,b,c,d){minplayer.plugin.call(this,a,b,c,d)};minplayer.display.prototype=new minplayer.plugin;minplayer.display.prototype.constructor=minplayer.display;minplayer.display.prototype.getDisplay=function(){return this.context};
+minplayer.display.prototype.construct=function(){this.display=this.getDisplay(this.context,this.options);minplayer.plugin.prototype.construct.call(this);this.options.pluginName="display";this.elements=this.getElements();if(this.onResize){var a=0;jQuery(window).resize(function(b){return function(){clearTimeout(a);a=setTimeout(function(){b.onResize()},200)}}(this))}};minplayer.display.prototype.onResize=!1;minplayer.display.prototype.hide=function(a){if(a=a||this.display){a.forceHide=true;a.unbind().hide()}};
+minplayer.display.prototype.fullScreenElement=function(){return this.display};minplayer.click=function(a,b){var c=false,a=jQuery(a);a.bind("touchstart click",function(a){if(!c){c=true;setTimeout(function(){c=false},100);b.call(this,a)}});return a};minplayer.display.prototype.onFocus=function(a){this.hasFocus=this.focus=a};minplayer.showHideElements=[];
+minplayer.showAll=function(){for(var a=minplayer.showHideElements.length,b=null;a--;){b=minplayer.showHideElements[a];minplayer.showThenHide(b.element,b.timeout,b.callback)}};minplayer.stopShowThenHide=function(a){a=jQuery(a);a.showTimer&&clearTimeout(a.showTimer);a.stopShowThenHide=true;a.shown=true;a.show()};
+minplayer.showThenHide=function(a,b,c){if(a){b=b||5E3;if(!a.showTimer){a.shown=true;a.stopShowThenHide=false;minplayer.showHideElements.push({element:a,timeout:b,callback:c});minplayer.click(document,function(){a.stopShowThenHide||minplayer.showThenHide(a,b,c)});jQuery(document).bind("mousemove",function(){a.stopShowThenHide||minplayer.showThenHide(a,b,c)})}clearTimeout(a.showTimer);if(!a.shown&&!a.forceHide){a.shown=true;a.show();c&&c(true)}a.showTimer=setTimeout(function(){a.hide("slow",function(){a.shown=
+false;c&&c(false)})},b)}};minplayer.display.prototype.fullscreen=function(a){var b=this.isFullScreen(),c=this.fullScreenElement();if(b&&!a){c.removeClass("fullscreen");screenfull&&screenfull.exit();this.trigger("fullscreen",false)}else if(!b&&a){c.addClass("fullscreen");if(screenfull){screenfull.request(c[0]);var d=this;screenfull.onchange=function(){screenfull.isFullscreen||d.fullscreen(false)}}this.trigger("fullscreen",true)}};minplayer.display.prototype.toggleFullScreen=function(){this.fullscreen(!this.isFullScreen())};
+minplayer.display.prototype.isFullScreen=function(){return this.fullScreenElement().hasClass("fullscreen")};minplayer.display.prototype.getScaledRect=function(a,b){var c={};c.x=b.x?b.x:0;c.y=b.y?b.y:0;c.width=b.width?b.width:0;c.height=b.height?b.height:0;if(a){if(b.width/b.height>a){c.height=b.height;c.width=Math.floor(b.height*a)}else{c.height=Math.floor(b.width/a);c.width=b.width}c.x=Math.floor((b.width-c.width)/2);c.y=Math.floor((b.height-c.height)/2)}return c};
+minplayer.display.prototype.getElements=function(){return{}};
+(function(a,b){var c;a:{for(var d=[["requestFullscreen","exitFullscreen","fullscreenchange","fullscreen","fullscreenElement"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitfullscreenchange","webkitIsFullScreen","webkitCurrentFullScreenElement"],["mozRequestFullScreen","mozCancelFullScreen","mozfullscreenchange","mozFullScreen","mozFullScreenElement"]],e=0,h=d.length;e<h;e++)if(d.hasOwnProperty(e)){var i=d[e];if(i[1]in b){c=i;break a}}c=void 0}if(!c)return a.screenfull=false;var j="ALLOW_KEYBOARD_INPUT"in
+Element,k={init:function(){b.addEventListener(c[2],function(a){k.isFullscreen=b[c[3]];k.element=b[c[4]];k.onchange(a)});return this},isFullscreen:b[c[3]],element:b[c[4]],request:function(a){a=a||b.documentElement;a[c[0]](j&&Element.ALLOW_KEYBOARD_INPUT);if(!b.isFullscreen)a[c[0]]()},exit:function(){b[c[1]]()},toggle:function(a){this.isFullscreen?this.exit():this.request(a)},onchange:function(){}};a.screenfull=k.init()})(window,document);
+jQuery.fn.minplayer||(jQuery.fn.minplayer=function(a){return jQuery(this).each(function(){a=a||{};a.id=a.id||jQuery(this).attr("id")||Math.random();if(!minplayer.plugins[a.id]){a.template=a.template||"default";minplayer[a.template]?new minplayer[a.template](jQuery(this),a):new minplayer(jQuery(this),a)}})});minplayer=jQuery.extend(function(a,b){minplayer.display.call(this,"player",a,b)},minplayer);minplayer.prototype=new minplayer.display;minplayer.prototype.constructor=minplayer;
+minplayer.prototype.construct=function(){jQuery.each(this.context[0].attributes,function(a){return function(c,d){a.options[d.name]=a.options[d.name]||d.value}}(this));this.options=jQuery.extend({id:"player",build:false,wmode:"transparent",preload:true,autoplay:false,autoload:true,loop:false,width:"100%",height:"350px",debug:false,volume:80,files:null,file:"",preview:"",attributes:{},logo:"",link:"",width:"100%",height:"100%"},this.options);minplayer.display.prototype.construct.call(this);this.options.pluginName=
+"player";this.controller=this.create("controller");this.playLoader=this.create("playLoader");minplayer.click(document,function(a){return function(c){var d=jQuery(c.target).closest("#"+a.options.id).length!=0;minplayer.get.call(this,a.options.id,null,function(a){a.onFocus(d)})}}(this));if(this.options.logo&&this.elements.logo){var a="";this.options.link&&(a=a+('<a target="_blank" href="'+this.options.link+'">'));a=a+('<img src="'+this.options.logo+'" >');this.options.link&&(a=a+"</a>");this.logo=this.elements.logo.append(a)}this.currentPlayer=
+"html5";this.addKeyEvents();this.addEvents();this.load(this.getFiles());this.ready()};minplayer.prototype.bindTo=function(a){a.bind("error",function(a){return function(c,d){if(a.currentPlayer=="html5"){minplayer.player="minplayer";a.options.file.player="minplayer";a.loadPlayer()}else a.showError(d)}}(this));a.bind("fullscreen",function(a){return function(){a.resize()}}(this))};minplayer.prototype.addEvents=function(){minplayer.get.call(this,this.options.id,null,function(a){return function(b){a.bindTo(b)}}(this))};
+minplayer.prototype.showError=function(a){if(typeof a!=="object"){a=a||"";if(this.elements.error){this.elements.error.text(a);if(a){this.elements.error.show();var b=this;setTimeout(function(){b.elements.error.hide("slow")},5E3)}else this.elements.error.hide()}}};minplayer.prototype.addKeyEvents=function(){jQuery(document).bind("keydown",function(a){return function(b){switch(b.keyCode){case 113:case 27:a.isFullScreen()&&a.fullscreen(false)}}}(this))};
+minplayer.prototype.getFiles=function(){if(this.options.files)return this.options.files;if(this.options.file)return this.options.file;var a=[],b=null;if(this.elements.media){(b=this.elements.media.attr("src"))&&a.push({path:b});jQuery("source",this.elements.media).each(function(){a.push({path:jQuery(this).attr("src"),mimetype:jQuery(this).attr("type"),codecs:jQuery(this).attr("codecs")})})}return a};
+minplayer.getMediaFile=function(a){if(!a)return null;if(typeof a==="string"||a.path||a.id)return new minplayer.file(a);var b=null,c=null,d;for(d in a)if(a.hasOwnProperty(d)){c=new minplayer.file(a[d]);c.player&&c.priority>0&&(b=c)}return b};
+minplayer.prototype.loadPlayer=function(){if(!this.options.file||this.elements.display.length==0||!this.options.file.player)return false;this.showError();var a=this.options.file.player.toString();if(!this.media||a!==this.currentPlayer){this.currentPlayer=a;if(this.elements.display){a={};if(this.media){a=this.media.queue;this.media.destroy()}pClass=minplayer.players[this.options.file.player];this.options.mediaelement=this.elements.media;this.media=new pClass(this.elements.display,this.options,a);this.get("media",
+function(a){return function(c){c.load(a.options.file);a.display.addClass("minplayer-player-"+c.mediaFile.player)}}(this));return true}this.showError("No media display found.")}else if(this.media){this.media.options=this.options;this.display.removeClass("minplayer-player-"+this.media.mediaFile.player);this.media.load(this.options.file);this.display.addClass("minplayer-player-"+this.media.mediaFile.player);return false}};
+minplayer.prototype.load=function(a){this.options.files=a||this.options.files;this.options.file=minplayer.getMediaFile(this.options.files);if(this.loadPlayer()){this.bindTo(this.media);this.options.file.mimetype&&!this.options.file.player&&this.showError("Cannot play media: "+this.options.file.mimetype)}};minplayer.prototype.resize=function(){this.get(function(a){if(a.onResize)a.onResize()})};minplayer=minplayer||{};
+minplayer.image=function(a,b){this.loaded=false;this.loader=null;this.ratio=0;this.img=null;minplayer.display.call(this,"image",a,b)};minplayer.image.prototype=new minplayer.display;minplayer.image.prototype.constructor=minplayer.image;
+minplayer.image.prototype.construct=function(){minplayer.display.prototype.construct.call(this);this.options.pluginName="image";this.display.css("overflow","hidden");this.loader=new Image;var a=this;this.loader.onload=function(){a.loaded=true;a.ratio=a.loader.width/a.loader.height;a.resize();a.trigger("loaded")};this.ready()};
+minplayer.image.prototype.load=function(a){this.clear(function(){this.display.empty();this.img=jQuery(document.createElement("img")).attr({src:""}).hide();this.display.append(this.img);this.loader.src=a;this.img.attr("src",a)})};minplayer.image.prototype.clear=function(a){this.loaded=false;this.img?this.img.fadeOut(function(b){return function(){b.img.attr("src","");b.loader.src="";jQuery(this).remove();a.call(b)}}(this)):a.call(this)};
+minplayer.image.prototype.resize=function(a,b){a=a||this.display.parent().width();b=b||this.display.parent().height();if(a&&b&&this.loaded){var c=this.getScaledRect(this.ratio,{width:a,height:b});this.img&&this.img.attr("src",this.loader.src).css({marginLeft:c.x,marginTop:c.y,width:c.width,height:c.height});this.img.fadeIn()}};minplayer.image.prototype.onResize=function(){this.resize()};minplayer=minplayer||{};
+minplayer.file=function(a){if(!a)return null;a=typeof a==="string"?{path:a}:a;if(a.hasOwnProperty("isMinPlayerFile"))return a;this.isMinPlayerFile=true;this.duration=a.duration||0;this.bytesTotal=a.bytesTotal||0;this.quality=a.quality||0;this.stream=a.stream||"";this.path=a.path||"";this.codecs=a.codecs||"";this.extension=a.extension||this.getFileExtension();this.mimetype=a.mimetype||a.filemime||this.getMimeType();this.type=a.type||this.getType();if(!this.type){this.mimetype=this.getMimeType();this.type=
+this.getType()}this.player=minplayer.player||a.player||this.getBestPlayer();this.priority=a.priority||this.getPriority();this.id=a.id||this.getId();if(!this.path)this.path=this.id};minplayer.player="";minplayer.file.prototype.getBestPlayer=function(){var a=null,b=0;jQuery.each(minplayer.players,function(c){return function(d,e){var h=e.getPriority();if(e.canPlay(c)&&h>b){a=d;b=h}}}(this));return a};
+minplayer.file.prototype.getPriority=function(){var a=1;this.player&&(a=minplayer.players[this.player].getPriority());switch(this.mimetype){case "video/x-webm":case "video/webm":case "application/octet-stream":return a*10;case "video/mp4":case "audio/mp4":case "audio/mpeg":return a*9;case "video/ogg":case "audio/ogg":case "video/quicktime":return a*8;default:return a*5}};minplayer.file.prototype.getFileExtension=function(){return this.path.substring(this.path.lastIndexOf(".")+1).toLowerCase()};
+minplayer.file.prototype.getMimeType=function(){switch(this.extension){case "mp4":case "m4v":case "flv":case "f4v":return"video/mp4";case "webm":return"video/webm";case "ogg":case "ogv":return"video/ogg";case "3g2":return"video/3gpp2";case "3gpp":case "3gp":return"video/3gpp";case "mov":return"video/quicktime";case "swf":return"application/x-shockwave-flash";case "oga":return"audio/ogg";case "mp3":return"audio/mpeg";case "m4a":case "f4a":return"audio/mp4";case "aac":return"audio/aac";case "wav":return"audio/vnd.wave";
+case "wma":return"audio/x-ms-wma";default:return"unknown"}};minplayer.file.prototype.getType=function(){var a=this.mimetype.match(/([^\/]+)(\/)/),a=a&&a.length>1?a[1]:"";return a=="video"||this.mimetype=="application/octet-stream"?"video":a=="audio"?"audio":""};minplayer.file.prototype.getId=function(){var a=minplayer.players[this.player];return a&&a.getMediaId?a.getMediaId(this):""};minplayer=minplayer||{};
+minplayer.playLoader=function(a,b){this.busy=new minplayer.flags;this.bigPlay=new minplayer.flags;this.previewFlag=new minplayer.flags;this.preview=null;this.enabled=true;minplayer.display.call(this,"playLoader",a,b)};minplayer.playLoader.prototype=new minplayer.display;minplayer.playLoader.prototype.constructor=minplayer.playLoader;minplayer.playLoader.prototype.construct=function(){minplayer.display.prototype.construct.call(this);this.options.pluginName="playLoader";this.initialize();this.ready()};
+minplayer.playLoader.prototype.initialize=function(){this.get("media",function(a){if(a.hasPlayLoader(this.options.preview)){this.enabled=false;this.hide(this.elements.busy);this.hide(this.elements.bigPlay);this.hide(this.elements.preview);this.hide()}else{this.enabled=true;if(!this.options.preview)this.options.preview=a.elements.media.attr("poster");a.elements.media.attr("poster","");this.loadPreview();this.elements.bigPlay&&minplayer.click(this.elements.bigPlay.unbind(),function(b){b.preventDefault();
+minplayer.showAll();jQuery(this).hide();a.play()});a.unbind("loadstart").bind("loadstart",function(a){return function(){a.busy.setFlag("media",true);a.bigPlay.setFlag("media",true);a.previewFlag.setFlag("media",true);a.checkVisibility()}}(this));a.bind("waiting",function(a){return function(){a.busy.setFlag("media",true);a.checkVisibility()}}(this));a.bind("loadeddata",function(a){return function(){a.busy.setFlag("media",false);a.checkVisibility()}}(this));a.bind("playing",function(b){return function(){b.busy.setFlag("media",
+false);b.bigPlay.setFlag("media",false);a.mediaFile.type!=="audio"&&b.previewFlag.setFlag("media",false);b.checkVisibility()}}(this));a.bind("pause",function(a){return function(){a.bigPlay.setFlag("media",true);a.checkVisibility()}}(this))}})};minplayer.playLoader.prototype.loadPreview=function(){if(this.enabled&&this.elements.preview)if(this.options.preview){this.elements.preview.addClass("has-preview").show();this.preview=new minplayer.image(this.elements.preview,this.options);this.preview.load(this.options.preview)}else this.elements.preview.hide()};
+minplayer.playLoader.prototype.checkVisibility=function(){if(this.enabled){this.busy.flag?this.elements.busy.show():this.elements.busy.hide();this.bigPlay.flag?this.elements.bigPlay.show():this.elements.bigPlay.hide();this.previewFlag.flag?this.elements.preview.show():this.elements.preview.hide();(this.bigPlay.flag||this.busy.flag||this.previewFlag.flag)&&this.display.show();!this.bigPlay.flag&&(!this.busy.flag&&!this.previewFlag.flag)&&this.display.hide()}};minplayer=minplayer||{};
+minplayer.players=minplayer.players||{};minplayer.players.base=function(a,b,c){minplayer.display.call(this,"media",a,b,c)};minplayer.players.base.prototype=new minplayer.display;minplayer.players.base.prototype.constructor=minplayer.players.base;minplayer.players.base.prototype.getElements=function(){var a=minplayer.display.prototype.getElements.call(this);return jQuery.extend(a,{media:this.options.mediaelement})};minplayer.players.base.getPriority=function(){return 0};
+minplayer.players.base.getMediaId=function(){return""};minplayer.players.base.canPlay=function(){return false};
+minplayer.players.base.prototype.construct=function(){minplayer.display.prototype.construct.call(this);this.options.pluginName="basePlayer";this.mediaFile=this.options.file;this.clear();this.playerFound()||this.addPlayer();this.player=this.getPlayer();minplayer.click(this.display,function(a){return function(){minplayer.showAll();a.playing?a.pause():a.play()}}(this));jQuery(document).bind("keydown",function(a){return function(b){if(a.hasFocus){b.preventDefault();switch(b.keyCode){case 32:case 179:a.playing?
+a.pause():a.play();break;case 38:a.setVolumeRelative(0.1);break;case 40:a.setVolumeRelative(-0.1);break;case 37:case 227:a.seekRelative(-0.05);break;case 39:case 228:a.seekRelative(0.05)}}}}(this))};minplayer.players.base.prototype.addPlayer=function(){this.elements.media&&this.elements.media.remove();this.elements.media=jQuery(this.create());this.display.html(this.elements.media)};minplayer.players.base.prototype.destroy=function(){minplayer.plugin.prototype.destroy.call(this);this.clear()};
+minplayer.players.base.prototype.clear=function(){this.playerReady=false;this.reset();this.player&&jQuery(this.player).unbind()};
+minplayer.players.base.prototype.reset=function(){this.duration=new minplayer.async;this.currentTime=new minplayer.async;this.bytesLoaded=new minplayer.async;this.bytesTotal=new minplayer.async;this.bytesStart=new minplayer.async;this.volume=new minplayer.async;this.loading=this.playing=this.hasFocus=false;this.trigger("pause");this.trigger("waiting");this.trigger("progress",{loaded:0,total:0,start:0});this.trigger("timeupdate",{currentTime:0,duration:0})};
+minplayer.players.base.prototype.onReady=function(){if(!this.playerReady){this.playerReady=true;this.setVolume(this.options.volume/100);this.loading=true;this.poll(function(a){return function(){a.loading&&a.getBytesLoaded(function(b){a.getBytesTotal(function(c){if(b||c){var d=0;a.getBytesStart(function(a){d=a});a.trigger("progress",{loaded:b,total:c,start:d});if(b>=c)a.loading=false}})});return a.loading}}(this),1E3);this.ready();this.trigger("loadstart")}};
+minplayer.players.base.prototype.onPlaying=function(){this.trigger("playing");this.playing=this.hasFocus=true;this.poll(function(a){return function(){a.playing&&a.getCurrentTime(function(b){a.getDuration(function(c){b=parseFloat(b);c=parseFloat(c);(b||c)&&a.trigger("timeupdate",{currentTime:b,duration:c})})});return a.playing}}(this),1E3)};minplayer.players.base.prototype.onPaused=function(){this.trigger("pause");this.playing=this.hasFocus=false};
+minplayer.players.base.prototype.onComplete=function(){if(this.playing)this.onPaused();this.hasFocus=this.loading=this.playing=false;this.trigger("ended")};minplayer.players.base.prototype.onLoaded=function(){this.options.autoplay&&this.play();this.trigger("loadeddata")};minplayer.players.base.prototype.onWaiting=function(){this.trigger("waiting")};minplayer.players.base.prototype.onError=function(a){this.hasFocus=false;this.trigger("error",a)};
+minplayer.players.base.prototype.isReady=function(){return this.player&&this.playerReady};minplayer.players.base.prototype.hasPlayLoader=function(){return false};minplayer.players.base.prototype.hasController=function(){return false};minplayer.players.base.prototype.playerFound=function(){return false};minplayer.players.base.prototype.create=function(){this.reset();return null};minplayer.players.base.prototype.getPlayer=function(){return this.player};
+minplayer.players.base.prototype.load=function(a){var b=typeof this.mediaFile=="string"?this.mediaFile:this.mediaFile.path;if(a&&this.isReady()&&a.path!=b){this.reset();this.mediaFile=a;return true}return false};minplayer.players.base.prototype.play=function(){return this.isReady()};minplayer.players.base.prototype.pause=function(){return this.isReady()};minplayer.players.base.prototype.stop=function(){this.hasFocus=this.loading=this.playing=false;return this.isReady()};
+minplayer.players.base.prototype.seekRelative=function(a){this.getCurrentTime(function(b){return function(c){b.getDuration(function(d){if(d){var e=0,e=a>-1&&a<1?(c/d+parseFloat(a))*d:c+parseFloat(a);b.seek(e)}})}}(this))};minplayer.players.base.prototype.seek=function(){return this.isReady()};minplayer.players.base.prototype.getValue=function(a,b){if(this.isReady()){var c=this.player[a]();c!==void 0&&c!==null&&b(c)}};
+minplayer.players.base.prototype.setVolumeRelative=function(a){this.getVolume(function(b){return function(c){c=c+parseFloat(a);c=c<0?0:c;b.setVolume(c>1?1:c)}}(this))};minplayer.players.base.prototype.setVolume=function(a){this.trigger("volumeupdate",a);return this.isReady()};minplayer.players.base.prototype.getVolume=function(a){return this.volume.get(a)};minplayer.players.base.prototype.getCurrentTime=function(a){return this.currentTime.get(a)};minplayer.players.base.prototype.getDuration=function(a){return this.duration.get(a)};
+minplayer.players.base.prototype.getBytesStart=function(a){return this.bytesStart.get(a)};minplayer.players.base.prototype.getBytesLoaded=function(a){return this.bytesLoaded.get(a)};minplayer.players.base.prototype.getBytesTotal=function(a){return this.bytesTotal.get(a)};minplayer=minplayer||{};minplayer.players=minplayer.players||{};minplayer.players.html5=function(a,b,c){minplayer.players.base.call(this,a,b,c)};minplayer.players.html5.prototype=new minplayer.players.base;
+minplayer.players.html5.prototype.constructor=minplayer.players.html5;minplayer.players.html5.getPriority=function(){return 10};
+minplayer.players.html5.canPlay=function(a){switch(a.mimetype){case "video/ogg":return!!minplayer.playTypes.videoOGG;case "video/mp4":case "video/x-mp4":case "video/m4v":case "video/x-m4v":return!!minplayer.playTypes.videoH264;case "video/x-webm":case "video/webm":case "application/octet-stream":return!!minplayer.playTypes.videoWEBM;case "audio/ogg":return!!minplayer.playTypes.audioOGG;case "audio/mpeg":return!!minplayer.playTypes.audioMP3;case "audio/mp4":return!!minplayer.playTypes.audioMP4;default:return false}};
+minplayer.players.html5.prototype.construct=function(){minplayer.players.base.prototype.construct.call(this);this.options.pluginName="html5";this.addPlayerEvents()};minplayer.players.html5.prototype.addPlayerEvent=function(a,b){this.player&&this.player.addEventListener(a,function(c){var d=a+"Event";c[d]&&c.player.removeEventListener(a,c[d],false);c[d]=function(a){b.call(c,a)};return c[d]}(this),false)};
+minplayer.players.html5.prototype.addPlayerEvents=function(){if(this.player){this.addPlayerEvent("abort",function(){this.trigger("abort")});this.addPlayerEvent("loadstart",function(){this.onReady()});this.addPlayerEvent("loadeddata",function(){this.onLoaded()});this.addPlayerEvent("loadedmetadata",function(){this.onLoaded()});this.addPlayerEvent("canplaythrough",function(){this.onLoaded()});this.addPlayerEvent("ended",function(){this.onComplete()});this.addPlayerEvent("pause",function(){this.onPaused()});
+this.addPlayerEvent("play",function(){this.onPlaying()});this.addPlayerEvent("playing",function(){this.onPlaying()});var a=false;this.addPlayerEvent("error",function(){if(!a){a=true;this.trigger("error","An error occured - "+this.player.error.code)}});this.addPlayerEvent("waiting",function(){this.onWaiting()});this.addPlayerEvent("durationchange",function(){this.duration.set(this.player.duration);this.trigger("durationchange",{duration:this.player.duration})});this.addPlayerEvent("progress",function(a){this.bytesTotal.set(a.total);
+this.bytesLoaded.set(a.loaded)});return true}return false};minplayer.players.html5.prototype.onReady=function(){minplayer.players.base.prototype.onReady.call(this);if(minplayer.isAndroid)this.onLoaded();if(minplayer.isIDevice){this.play();var a=this;setTimeout(function(){a.pause();a.onLoaded()},1)}};minplayer.players.html5.prototype.playerFound=function(){return this.display.find(this.mediaFile.type).length>0};
+minplayer.players.html5.prototype.create=function(){minplayer.players.base.prototype.create.call(this);var a=jQuery(document.createElement(this.mediaFile.type)).attr(this.options.attributes).append(jQuery(document.createElement("source")).attr({src:this.mediaFile.path}));a.eq(0)[0].setAttribute("width","100%");a.eq(0)[0].setAttribute("height","100%");a.eq(0)[0].setAttribute("autobuffer",true);var b=this.options.autoload?"auto":"metadata",b=minplayer.isIDevice?"metadata":b;a.eq(0)[0].setAttribute("preload",
+b);return a};minplayer.players.html5.prototype.getPlayer=function(){return this.elements.media.eq(0)[0]};minplayer.players.html5.prototype.load=function(a){if(minplayer.players.base.prototype.load.call(this,a)){var b=this.elements.media.attr("src");b||(b=jQuery("source",this.elements.media).eq(0).attr("src"));if(b!=a.path){this.addPlayer();this.player=this.getPlayer();this.addPlayerEvents();a='<source src="'+a.path+'"></source>';this.elements.media.removeAttr("src").empty().html(a);return true}}return false};
+minplayer.players.html5.prototype.play=function(){if(minplayer.players.base.prototype.play.call(this)){this.player.play();return true}return false};minplayer.players.html5.prototype.pause=function(){if(minplayer.players.base.prototype.pause.call(this)){this.player.pause();return true}return false};minplayer.players.html5.prototype.stop=function(){if(minplayer.players.base.prototype.stop.call(this)){this.player.pause();this.player.src="";return true}return false};
+minplayer.players.html5.prototype.seek=function(a){if(minplayer.players.base.prototype.seek.call(this,a)){this.player.currentTime=a;return true}return false};minplayer.players.html5.prototype.setVolume=function(a){if(minplayer.players.base.prototype.setVolume.call(this,a)){this.player.volume=a;return true}return false};minplayer.players.html5.prototype.getVolume=function(a){this.isReady()&&a(this.player.volume)};minplayer.players.html5.prototype.getDuration=function(a){this.isReady()&&a(this.player.duration)};
+minplayer.players.html5.prototype.getCurrentTime=function(a){this.isReady()&&a(this.player.currentTime)};
+minplayer.players.html5.prototype.getBytesLoaded=function(a){if(this.isReady()){var b=0;if(this.bytesLoaded.value)b=this.bytesLoaded.value;else if(this.player.buffered&&this.player.buffered.length>0&&this.player.buffered.end&&this.player.duration)b=this.player.buffered.end(0);else if(this.player.bytesTotal!=void 0&&this.player.bytesTotal>0&&this.player.bufferedBytes!=void 0)b=this.player.bufferedBytes;a(b)}};
+minplayer.players.html5.prototype.getBytesTotal=function(a){if(this.isReady()){var b=0;if(this.bytesTotal.value)b=this.bytesTotal.value;else if(this.player.buffered&&this.player.buffered.length>0&&this.player.buffered.end&&this.player.duration)b=this.player.duration;else if(this.player.bytesTotal!=void 0&&this.player.bytesTotal>0&&this.player.bufferedBytes!=void 0)b=this.player.bytesTotal;a(b)}};minplayer=minplayer||{};minplayer.players=minplayer.players||{};
+minplayer.players.flash=function(a,b,c){minplayer.players.base.call(this,a,b,c)};minplayer.players.flash.prototype=new minplayer.players.base;minplayer.players.flash.prototype.constructor=minplayer.players.flash;minplayer.players.flash.prototype.construct=function(){minplayer.players.base.prototype.construct.call(this);this.options.pluginName="flash"};minplayer.players.flash.getPriority=function(){return 0};minplayer.players.flash.canPlay=function(){return false};
+minplayer.players.flash.prototype.getFlash=function(a){var b=window.location.protocol;b.charAt(b.length-1)==":"&&(b=b.substring(0,b.length-1));var c=document.createElement("script");c.src=b+"://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js";b=document.getElementsByTagName("script")[0];b.parentNode.insertBefore(c,b);var d=this;setTimeout(function h(){typeof swfobject!=="undefined"?swfobject.embedSWF(a.swf,a.id,a.width,a.height,"9.0.0",false,a.flashvars,{allowscriptaccess:"always",allowfullscreen:"true",
+wmode:a.wmode,quality:"high"},{id:a.id,name:a.id,playerType:"flash"},function(a){d.player=a.ref}):setTimeout(h,200)},200);return'<div id="'+a.id+'"></div>'};minplayer.players.flash.prototype.playerFound=function(){return this.display.find('object[playerType="flash"]').length>0};minplayer=minplayer||{};minplayer.players=minplayer.players||{};minplayer.players.minplayer=function(a,b,c){minplayer.players.flash.call(this,a,b,c)};minplayer.players.minplayer.prototype=new minplayer.players.flash;
+minplayer.players.minplayer.prototype.constructor=minplayer.players.minplayer;minplayer.players.minplayer.prototype.construct=function(){minplayer.players.flash.prototype.construct.call(this);this.options.pluginName="minplayer"};window.onFlashPlayerReady=function(a){for(var a=minplayer.get(a,"media"),b=a.length;b--;)a[b].onReady()};window.onFlashPlayerUpdate=function(a,b){for(var c=minplayer.get(a,"media"),d=c.length;d--;)c[d].onMediaUpdate(b)};
+window.onFlashPlayerDebug=function(a){console&&console.log&&console.log(a)};minplayer.players.minplayer.getPriority=function(){return 1};minplayer.players.minplayer.canPlay=function(a){return!(jQuery.inArray(a.mimetype,["video/x-webm","video/webm","application/octet-stream"])>=0)&&(a.type=="video"||a.type=="audio")};
+minplayer.players.minplayer.prototype.create=function(){this.options=jQuery.extend({swfplayer:"flash/minplayer.swf"},this.options);minplayer.players.flash.prototype.create.call(this);return this.getFlash({swf:this.options.swfplayer,id:this.options.id+"_player",width:"100%",height:"100%",flashvars:{id:this.options.id,debug:this.options.debug,config:"nocontrols",file:this.mediaFile.path,autostart:this.options.autoplay,autoload:this.options.autoload},wmode:this.options.wmode})};
+minplayer.players.minplayer.prototype.onMediaUpdate=function(a){switch(a){case "mediaMeta":this.onLoaded();break;case "mediaPlaying":if(this.minplayerloaded)this.onPlaying();break;case "mediaPaused":this.minplayerloaded=true;this.onPaused();break;case "mediaComplete":this.onComplete()}};minplayer.players.minplayer.prototype.clear=function(){minplayer.players.flash.prototype.clear.call(this);this.minplayerloaded=this.options.autoplay};
+minplayer.players.minplayer.prototype.load=function(a){if(minplayer.players.flash.prototype.load.call(this,a)){this.player.loadMedia(a.path,a.stream);return true}return false};minplayer.players.minplayer.prototype.play=function(){if(minplayer.players.flash.prototype.play.call(this)){this.player.playMedia();return true}return false};minplayer.players.minplayer.prototype.pause=function(){if(minplayer.players.flash.prototype.pause.call(this)){this.player.pauseMedia();return true}return false};
+minplayer.players.minplayer.prototype.stop=function(){if(minplayer.players.flash.prototype.stop.call(this)){this.player.stopMedia();return true}return false};minplayer.players.minplayer.prototype.seek=function(a){if(minplayer.players.flash.prototype.seek.call(this,a)){this.player.seekMedia(a);return true}return false};minplayer.players.minplayer.prototype.setVolume=function(a){if(minplayer.players.flash.prototype.setVolume.call(this,a)){this.player.setVolume(a);return true}return false};
+minplayer.players.minplayer.prototype.getVolume=function(a){this.isReady()&&a(this.player.getVolume())};minplayer.players.minplayer.prototype.getDuration=function(a){if(this.isReady()){var b=this.player.getDuration();b?a(b):this.poll(function(c){return function(){(b=c.player.getDuration())&&a(b);return!b}}(this),1E3)}};minplayer.players.minplayer.prototype.getCurrentTime=function(a){this.isReady()&&a(this.player.getCurrentTime())};
+minplayer.players.minplayer.prototype.getBytesLoaded=function(a){this.isReady()&&a(this.player.getMediaBytesLoaded())};minplayer.players.minplayer.prototype.getBytesTotal=function(a){this.isReady()&&a(this.player.getMediaBytesTotal())};minplayer=minplayer||{};minplayer.players=minplayer.players||{};minplayer.players.youtube=function(a,b,c){this.quality="default";minplayer.players.base.call(this,a,b,c)};minplayer.players.youtube.prototype=new minplayer.players.base;
+minplayer.players.youtube.prototype.constructor=minplayer.players.youtube;minplayer.players.youtube.prototype.construct=function(){minplayer.players.base.prototype.construct.call(this);this.options.pluginName="youtube"};minplayer.players.youtube.getPriority=function(){return 10};minplayer.players.youtube.canPlay=function(a){return a.mimetype==="video/youtube"?true:a.path.search(/^http(s)?\:\/\/(www\.)?youtube\.com/i)===0};
+minplayer.players.youtube.getMediaId=function(a){var b=/^http[s]?\:\/\/(www\.)?youtube\.com\/watch\?v=([a-zA-Z0-9_\-]+)/i;return a.path.search(b)===0?a.path.match(b)[2]:a.path};minplayer.players.youtube.getImage=function(a,b,c){c("http://img.youtube.com/vi/"+a.id+"/"+(b=="thumbnail"?"1":"0")+".jpg")};
+minplayer.players.youtube.prototype.setPlayerState=function(a){switch(a){case YT.PlayerState.BUFFERING:this.onWaiting();break;case YT.PlayerState.PAUSED:this.onPaused();break;case YT.PlayerState.PLAYING:this.onPlaying();break;case YT.PlayerState.ENDED:this.onComplete()}};minplayer.players.youtube.prototype.onReady=function(){minplayer.players.base.prototype.onReady.call(this);this.options.autoplay||this.pause();this.onLoaded()};
+minplayer.players.youtube.prototype.playerFound=function(){return this.display.find("iframe#"+this.options.id+"-player.youtube-player").length>0};minplayer.players.youtube.prototype.onPlayerStateChange=function(a){this.setPlayerState(a.data)};minplayer.players.youtube.prototype.onQualityChange=function(a){this.quality=a.data};minplayer.players.youtube.prototype.hasPlayLoader=function(a){return minplayer.hasTouch||!a};minplayer.players.youtube.prototype.hasController=function(){return minplayer.isIDevice};
+minplayer.players.youtube.prototype.create=function(){minplayer.players.base.prototype.create.call(this);var a=document.createElement("script");a.src="https://www.youtube.com/player_api";var b=document.getElementsByTagName("script")[0];b.parentNode.insertBefore(a,b);this.playerId=this.options.id+"-player";this.poll(function(a){return function(){var b=jQuery("#"+a.playerId).length>0;if(b=(b=b&&"YT"in window)&&typeof YT.Player=="function"){jQuery("#"+a.playerId).addClass("youtube-player");var e=location.protocol,
+e=e+("//"+location.hostname),e=e+(location.port&&":"+location.port),h={};minplayer.isIDevice?h.origin=e:h={enablejsapi:minplayer.isIDevice?0:1,origin:e,wmode:"opaque",controls:minplayer.isAndroid?1:0};a.player=new YT.Player(a.playerId,{height:"100%",width:"100%",frameborder:0,videoId:a.mediaFile.id,playerVars:h,events:{onReady:function(b){a.onReady(b)},onStateChange:function(b){a.onPlayerStateChange(b)},onPlaybackQualityChange:function(b){a.onQualityChange(b)},onError:function(b){a.onError(b)}}})}return!b}}(this),
+200);return jQuery(document.createElement("div")).attr({id:this.playerId})};minplayer.players.youtube.prototype.load=function(a){if(minplayer.players.base.prototype.load.call(this,a)){this.player.loadVideoById(a.id,0,this.quality);return true}return false};minplayer.players.youtube.prototype.play=function(){if(minplayer.players.base.prototype.play.call(this)){this.onWaiting();this.player.playVideo();return true}return false};
+minplayer.players.youtube.prototype.pause=function(){if(minplayer.players.base.prototype.pause.call(this)){this.player.pauseVideo();return true}return false};minplayer.players.youtube.prototype.stop=function(){if(minplayer.players.base.prototype.stop.call(this)){this.player.stopVideo();return true}return false};minplayer.players.youtube.prototype.seek=function(a){if(minplayer.players.base.prototype.seek.call(this,a)){this.onWaiting();this.player.seekTo(a,true);return true}return false};
+minplayer.players.youtube.prototype.setVolume=function(a){if(minplayer.players.base.prototype.setVolume.call(this,a)){this.player.setVolume(a*100);return true}return false};minplayer.players.youtube.prototype.getVolume=function(a){this.getValue("getVolume",a)};minplayer.players.youtube.prototype.getDuration=function(a){this.getValue("getDuration",a)};minplayer.players.youtube.prototype.getCurrentTime=function(a){this.getValue("getCurrentTime",a)};
+minplayer.players.youtube.prototype.getBytesStart=function(a){this.getValue("getVideoStartBytes",a)};minplayer.players.youtube.prototype.getBytesLoaded=function(a){this.getValue("getVideoBytesLoaded",a)};minplayer.players.youtube.prototype.getBytesTotal=function(a){this.getValue("getVideoBytesTotal",a)};minplayer=minplayer||{};minplayer.players=minplayer.players||{};minplayer.players.vimeo=function(a,b,c){minplayer.players.base.call(this,a,b,c)};minplayer.players.vimeo.prototype=new minplayer.players.base;
+minplayer.players.vimeo.prototype.constructor=minplayer.players.vimeo;minplayer.players.vimeo.prototype.construct=function(){minplayer.players.base.prototype.construct.call(this);this.options.pluginName="vimeo"};minplayer.players.vimeo.getPriority=function(){return 10};minplayer.players.vimeo.canPlay=function(a){return a.mimetype==="video/vimeo"?true:a.path.search(/^http(s)?\:\/\/(www\.)?vimeo\.com/i)===0};minplayer.players.vimeo.prototype.hasPlayLoader=function(a){return minplayer.hasTouch||!a};
+minplayer.players.vimeo.prototype.hasController=function(){return minplayer.hasTouch};minplayer.players.vimeo.getMediaId=function(a){var b=/^http[s]?\:\/\/(www\.)?vimeo\.com\/(\?v\=)?([0-9]+)/i;return a.path.search(b)===0?a.path.match(b)[3]:a.path};minplayer.players.vimeo.getImage=function(a,b,c){jQuery.ajax({url:"http://vimeo.com/api/v2/video/"+a.id+".json",dataType:"jsonp",success:function(a){c(a[0].thumbnail_large)}})};minplayer.players.vimeo.prototype.reset=function(){minplayer.players.base.prototype.reset.call(this)};
+minplayer.players.vimeo.prototype.create=function(){minplayer.players.base.prototype.create.call(this);var a=document.createElement("script");a.src="http://a.vimeocdn.com/js/froogaloop2.min.js";var b=document.getElementsByTagName("script")[0];b.parentNode.insertBefore(a,b);var c=document.createElement("iframe");c.setAttribute("id",this.options.id+"-player");c.setAttribute("type","text/html");c.setAttribute("width","100%");c.setAttribute("height","100%");c.setAttribute("frameborder","0");jQuery(c).addClass("vimeo-player");
+a="http://player.vimeo.com/video/"+(this.mediaFile.id+"?");a=a+jQuery.param({wmode:"opaque",api:1,player_id:this.options.id+"-player",title:0,byline:0,portrait:0,autoplay:this.options.autoplay,loop:this.options.loop});c.setAttribute("src",a);this.poll(function(a){return function(){if(window.Froogaloop){a.player=window.Froogaloop(c);var b=0;a.player.addEvent("ready",function(){clearTimeout(b);a.onReady();a.onError("")});b=setTimeout(function(){a.onReady();a.onError("Unable to play video.")},2E3)}return!window.Froogaloop}}(this),
+200);this.trigger("loadstart");return c};
+minplayer.players.vimeo.prototype.onReady=function(){this.player.addEvent("loadProgress",function(a){return function(b){a.duration.set(parseFloat(b.duration));a.bytesLoaded.set(b.bytesLoaded);a.bytesTotal.set(b.bytesTotal)}}(this));this.player.addEvent("playProgress",function(a){return function(b){a.duration.set(parseFloat(b.duration));a.currentTime.set(parseFloat(b.seconds))}}(this));this.player.addEvent("play",function(a){return function(){a.onPlaying()}}(this));this.player.addEvent("pause",function(a){return function(){a.onPaused()}}(this));
+this.player.addEvent("finish",function(a){return function(){a.onComplete()}}(this));minplayer.players.base.prototype.onReady.call(this);this.onLoaded()};minplayer.players.vimeo.prototype.clear=function(){this.player&&this.player.api("unload");minplayer.players.base.prototype.clear.call(this)};minplayer.players.vimeo.prototype.load=function(a){if(minplayer.players.base.prototype.load.call(this,a)){this.construct();return true}return false};
+minplayer.players.vimeo.prototype.play=function(){if(minplayer.players.base.prototype.play.call(this)){this.player.api("play");return true}return false};minplayer.players.vimeo.prototype.pause=function(){if(minplayer.players.base.prototype.pause.call(this)){this.player.api("pause");return true}return false};minplayer.players.vimeo.prototype.stop=function(){if(minplayer.players.base.prototype.stop.call(this)){this.player.api("unload");return true}return false};
+minplayer.players.vimeo.prototype.seek=function(a){if(minplayer.players.base.prototype.seek.call(this,a)){this.player.api("seekTo",a);return true}return false};minplayer.players.vimeo.prototype.setVolume=function(a){if(minplayer.players.base.prototype.setVolume.call(this,a)){this.volume.set(a);this.player.api("setVolume",a);return true}return false};minplayer.players.vimeo.prototype.getVolume=function(a){this.player.api("getVolume",function(b){a(b)})};
+minplayer.players.vimeo.prototype.getDuration=function(a){this.isReady()&&(this.duration.value?a(this.duration.value):this.player.api("getDuration",function(b){a(b)}))};minplayer=minplayer||{};minplayer.controller=function(a,b){minplayer.display.call(this,"controller",a,b)};minplayer.controller.prototype=new minplayer.display;minplayer.controller.prototype.constructor=minplayer.controller;
+minplayer.formatTime=function(a){var a=a||0,b=0,c=0,d=0,e="",d=Math.floor(a/3600),a=a-d*3600,c=Math.floor(a/60),b=Math.floor((a-c*60)%60);if(d){e=e+String(d);e=e+":"}e=e+(c>=10?String(c):"0"+String(c));e=e+":"+(b>=10?String(b):"0"+String(b));return{time:e,units:""}};minplayer.controller.prototype.getElements=function(){var a=minplayer.display.prototype.getElements.call(this);return jQuery.extend(a,{play:null,pause:null,fullscreen:null,seek:null,progress:null,volume:null,timer:null})};
+minplayer.controller.prototype.construct=function(){minplayer.display.prototype.construct.call(this);this.options.pluginName="controller";this.dragging=false;this.vol=0;if(this.elements.seek)this.seekBar=this.elements.seek.slider({range:"min",create:function(a){jQuery(".ui-slider-range",a.target).addClass("ui-state-active")}});if(this.elements.volume)this.volumeBar=this.elements.volume.slider({range:"min",orientation:"vertical"});this.get("player",function(a){this.elements.fullscreen&&minplayer.click(this.elements.fullscreen.unbind(),
+function(){a.toggleFullScreen()}).css({pointer:"hand"})});this.get("media",function(a){if(a.hasController())this.hide();else{if(this.elements.pause){minplayer.click(this.elements.pause.unbind(),function(b){return function(c){c.preventDefault();b.playPause(false,a)}}(this));a.bind("pause",function(a){return function(){a.setPlayPause(true)}}(this))}if(this.elements.play){minplayer.click(this.elements.play.unbind(),function(b){return function(c){c.preventDefault();b.playPause(true,a)}}(this));a.bind("playing",
+function(a){return function(){a.setPlayPause(false)}}(this))}if(this.elements.duration){a.bind("durationchange",function(a){return function(c,d){a.setTimeString("duration",d.duration)}}(this));a.getDuration(function(a){return function(c){a.setTimeString("duration",c)}}(this))}this.elements.progress&&a.bind("progress",function(a){return function(c,d){a.elements.progress.width((d.total?d.loaded/d.total*100:0)+"%")}}(this));(this.seekBar||this.elements.timer)&&a.bind("timeupdate",function(a){return function(c,
+d){if(!a.dragging){var e=0;d.duration&&(e=d.currentTime/d.duration*100);a.seekBar&&a.seekBar.slider("option","value",e);a.setTimeString("timer",d.currentTime)}}}(this));this.seekBar&&this.seekBar.slider({start:function(a){return function(){a.dragging=true}}(this),stop:function(b){return function(c,d){b.dragging=false;a.getDuration(function(b){a.seek(d.value/100*b)})}}(this),slide:function(b){return function(c,d){a.getDuration(function(c){c=d.value/100*c;b.dragging||a.seek(c);b.setTimeString("timer",
+c)})}}(this)});this.elements.mute&&minplayer.click(this.elements.mute,function(b){return function(c){c.preventDefault();c=b.volumeBar.slider("option","value");if(c>0){b.vol=c;b.volumeBar.slider("option","value",0);a.setVolume(0)}else{b.volumeBar.slider("option","value",b.vol);a.setVolume(b.vol/100)}}}(this));if(this.volumeBar){this.volumeBar.slider({slide:function(b,c){a.setVolume(c.value/100)}});a.bind("volumeupdate",function(a){return function(c,d){a.volumeBar.slider("option","value",d*100)}}(this));
+a.getVolume(function(a){return function(c){a.volumeBar.slider("option","value",c*100)}}(this))}}});this.ready()};minplayer.controller.prototype.setPlayPause=function(a){this.elements.play&&this.elements.play.css("display",a?"inherit":"none");this.elements.pause&&this.elements.pause.css("display",a?"none":"inherit")};minplayer.controller.prototype.playPause=function(a,b){var c=a?"play":"pause";this.display.trigger(c);this.setPlayPause(!a);if(b)b[c]()};
+minplayer.controller.prototype.setTimeString=function(a,b){this.elements[a]&&this.elements[a].text(minplayer.formatTime(b).time)};jQuery.fn.osmplayer||(jQuery.fn.osmplayer=function(a){return jQuery(this).each(function(){a=a||{};a.id=a.id||jQuery(this).attr("id")||Math.random();if(!minplayer.plugins[a.id]){a.template=a.template||"default";osmplayer[a.template]?new osmplayer[a.template](jQuery(this),a):new osmplayer(jQuery(this),a)}})});osmplayer=function(a,b){minplayer.call(this,a,b)};
+osmplayer.prototype=new minplayer;osmplayer.prototype.constructor=osmplayer;osmplayer.prototype.create=function(a,b,c){return minplayer.prototype.create.call(this,a,"osmplayer",c)};
+osmplayer.prototype.construct=function(){this.options=jQuery.extend({playlist:"",node:{},swfplayer:"minplayer/flash/minplayer.swf",logo:"logo.png",link:"http://www.mediafront.org"},this.options);minplayer.prototype.construct.call(this);this.playQueue=[];this.playIndex=0;this.create("playlist","osmplayer");this.get("playlist",function(a){a.bind("nodeLoad",function(a){return function(c,d){a.loadNode(d)}}(this))});this.get("media",function(a){return function(b){b.bind("ended",function(){a.options.autoplay=
+true;a.playNext()})}}(this));this.options.node&&this.loadNode(this.options.node)};osmplayer.prototype.fullScreenElement=function(){return this.elements.minplayer};
+osmplayer.prototype.loadNode=function(a){if(a&&a.mediafiles){var b=a.mediafiles.media;if(b){this.playQueue.length=0;this.playQueue=[];this.playIndex=0;var c=null,d=[],d=minplayer.isAndroid||minplayer.isIDevice?["media"]:["intro","commercial","prereel","media","postreel"];jQuery.each(d,function(a){return function(d,i){if(c=a.addToQueue(b[i]))c.queueType=i}}(this))}osmplayer.getImage(a.mediafiles,"preview",function(a){return function(b){a.options.preview=b.path;a.playLoader&&a.playLoader.initialize()}}(this));
+this.playNext()}};osmplayer.prototype.addToQueue=function(a){(a=minplayer.getMediaFile(a))&&this.playQueue.push(a);return a};osmplayer.prototype.playNext=function(){if(this.playQueue.length>this.playIndex){this.load(this.playQueue[this.playIndex]);this.playIndex++}else if(this.options.repeat){this.playIndex=0;this.playNext()}else if(this.playQueue.length>0){this.options.autoplay=false;this.playIndex=0;this.playNext()}else this.media&&this.media.stop()};
+osmplayer.getImage=function(a,b,c){var d="",e=a.image;if(e)if(e[b])d=e[b];else if(e.image)d=e.image;else for(b in e)if(e.hasOwnProperty(b)){d=e[b];break}if(d)c(new minplayer.file(d));else if(a=minplayer.getMediaFile(a.media.media))(d=minplayer.players[a.player])&&typeof d.getImage==="function"&&d.getImage(a,b,function(a){c(new minplayer.file(a))})};var osmplayer=osmplayer||{};osmplayer.parser=osmplayer.parser||{};
+osmplayer.parser["default"]={priority:1,valid:function(){return true},getType:function(){return"json"},getFeed:function(a,b,c){a=a.replace(/(.*)\??(.*)/i,"$1");return a+("?start-index="+b)+("&max-results="+c)},parse:function(a){return a}};osmplayer=osmplayer||{};osmplayer.parser=osmplayer.parser||{};
+osmplayer.parser.youtube={priority:10,valid:function(a){return a.search(/^http(s)?\:\/\/gdata\.youtube\.com/i)===0},getType:function(){return"jsonp"},getFeed:function(a,b,c){a=a.replace(/(.*)\??(.*)/i,"$1");return a+("?start-index="+(b+1))+("&max-results="+c)+"&v=2&alt=jsonc"},parse:function(a){var a=a.data,b={total_rows:a.totalItems,nodes:[]},c;for(c in a.items)if(a.items.hasOwnProperty(c)){var d=a.items[c];b.nodes.push({title:d.title,description:d.description,mediafiles:{image:{thumbnail:{path:d.thumbnail.sqDefault},
+image:{path:d.thumbnail.hqDefault}},media:{media:{player:"youtube",id:d.id}}}})}return b}};osmplayer=osmplayer||{};osmplayer.parser=osmplayer.parser||{};
+osmplayer.parser.rss={priority:8,valid:function(a){a=a.replace(/(.*)\??(.*)/i,"$1");return a.match(/\.rss$/i)!==null},getType:function(){return"xml"},getFeed:function(a){return a},parse:function(a){var b={total_rows:0,nodes:[]};jQuery("rss channel",a).find("item").each(function(){osmplayer.parser.rss.addRSSItem(b,jQuery(this))});return b},addRSSItem:function(a,b){a.total_rows++;a.nodes.push({title:b.find("title").text(),description:b.find("annotation").text(),mediafiles:{image:{image:{path:b.find("image").text()}},
+media:{media:{path:b.find("location").text()}}}})}};osmplayer=osmplayer||{};osmplayer.parser=osmplayer.parser||{};osmplayer.parser.asx={priority:8,valid:function(a){a=a.replace(/(.*)\??(.*)/i,"$1");return a.match(/\.asx$/i)!==null},getType:function(){return"xml"},getFeed:function(a){return a},parse:function(a){var b={total_rows:0,nodes:[]};jQuery("asx entry",a).each(function(){osmplayer.parser.rss.addRSSItem(b,jQuery(this))});return b}};osmplayer=osmplayer||{};osmplayer.parser=osmplayer.parser||{};
+osmplayer.parser.xsfp={priority:8,valid:function(a){a=a.replace(/(.*)\??(.*)/i,"$1");return a.match(/\.xml$/i)!==null},getType:function(){return"xml"},getFeed:function(a){return a},parse:function(a){var b={total_rows:0,nodes:[]};jQuery("playlist trackList track",a).each(function(){osmplayer.parser.rss.addRSSItem(b,jQuery(this))});return b}};osmplayer=osmplayer||{};osmplayer.playlist=function(a,b){minplayer.display.call(this,"playlist",a,b)};osmplayer.playlist.prototype=new minplayer.display;
+osmplayer.playlist.prototype.constructor=osmplayer.playlist;
+osmplayer.playlist.prototype.construct=function(){this.options=jQuery.extend({vertical:true,playlist:"",pageLimit:10,autoNext:true,shuffle:false,loop:false,hysteresis:40,scrollSpeed:20,scrollMode:"auto"},this.options);minplayer.display.prototype.construct.call(this);this.nodes=[];this.page=-1;this.totalItems=0;this.currentItem=-1;this.playqueue=[];this.playqueuepos=0;this.playlist=this.options.playlist;this.scroll=null;this.orient={pos:this.options.vertical?"y":"x",pagePos:this.options.vertical?"pageY":
+"pageX",offset:this.options.vertical?"top":"left",wrapperSize:this.options.vertical?"wrapperH":"wrapperW",minScroll:this.options.vertical?"minScrollY":"minScrollX",maxScroll:this.options.vertical?"maxScrollY":"maxScrollX",size:this.options.vertical?"height":"width"};this.pager=this.create("pager","osmplayer");this.pager.bind("nextPage",function(a){return function(){a.nextPage()}}(this));this.pager.bind("prevPage",function(a){return function(){a.prevPage()}}(this));this.next()&&this.options.autoNext&&
+this.get("media",function(a){a.bind("ended",function(b){return function(){a.options.autoplay=true;b.next()}}(this))});this.ready()};osmplayer.playlist.prototype.scrollTo=function(a,b){if(this.scroll){this.scroll.options.hideScrollbar=false;this.options.vertical?this.scroll.scrollTo(0,a,0,b):this.scroll.scrollTo(a,0,0,b);this.scroll.options.hideScrollbar=true}};
+osmplayer.playlist.prototype.refreshScroll=function(){if(window.addEventListener){var a=this.elements.list,b=this.elements.scroll;if(!this.scroll&&a.length>0&&b.length>0&&a[this.orient.size]()>b[this.orient.size]()){this.scroll=new iScroll(this.elements.scroll.eq(0)[0],{hScroll:!this.options.vertical,hScrollbar:!this.options.vertical,vScroll:this.options.vertical,vScrollbar:this.options.vertical,hideScrollbar:true});this.options.scrollMode=="auto"&&!minplayer.hasTouch&&this.elements.list.bind("mousemove",
+function(a){return function(b){b.preventDefault();var c=a.display.offset()[a.orient.offset];a.mousePos=b[a.orient.pagePos];a.mousePos=a.mousePos-c}}(this)).bind("mouseenter",function(a){return function(b){b.preventDefault();a.scrolling=true;var c=function(){if(a.scrolling){var b=a.scroll[a.orient.wrapperSize]/2,d=a.mousePos-b;if(Math.abs(d)>a.options.hysteresis){var h=a.options.hysteresis,d=a.options.scrollSpeed*(d+h*(d>0?-1:0)),d=d/b,b=a.scroll[a.orient.pos]-d,h=a.scroll[a.orient.minScroll]||0,s=
+a.scroll[a.orient.maxScroll];b>=h?a.scrollTo(h):b<=s?a.scrollTo(s):a.scrollTo(d,true)}setTimeout(c,30)}};c()}}(this)).bind("mouseleave",function(a){return function(b){b.preventDefault();a.scrolling=false}}(this));if(!this.options.vertical){var c=0;jQuery.each(this.elements.list.children(),function(){c=c+jQuery(this).outerWidth()});this.elements.list.width(c)}this.scroll.refresh();this.scroll.scrollTo(0,0,200)}else if(this.scroll){this.scroll.disable();this.elements.list.unbind("mousemove").unbind("mouseenter").unbind("mouseleave")}}else{var d=
+this;setTimeout(function(){d.refreshScroll.call(d)},200)}};
+osmplayer.playlist.prototype.set=function(a,b){if(typeof a!=="object")this.trigger("error","Playlist must be an object to set");else if(a.hasOwnProperty("total_rows")){if(a.total_rows&&a.nodes.length){this.totalItems=a.total_rows;this.currentItem=0;(this.page+1)*this.options.pageLimit>=this.totalItems?this.pager.nextPage.hide():this.pager.nextPage.show();var c=null,d=a.nodes.length;this.elements.list.empty();this.nodes=[];for(var e=0;e<d;e++){c=this.create("teaser","osmplayer",this.elements.list);
+c.setNode(a.nodes[e]);c.bind("nodeLoad",function(a,b){return function(){a.loadItem(b)}}(this,e));this.nodes.push(c);b===e&&this.loadItem(e)}this.refreshScroll();this.trigger("playlistLoad",a)}this.elements.playlist_busy&&this.elements.playlist_busy.hide()}else this.trigger("error","Unknown playlist format.")};osmplayer.playlist.prototype.setQueue=function(){this.playqueue.push({page:this.page,item:this.currentItem});this.playqueuepos=this.playqueue.length};
+osmplayer.playlist.prototype.next=function(){var a=0,b=this.page;if(this.playqueuepos>=this.playqueue.length){if(this.options.shuffle){a=Math.floor(Math.random()*this.totalItems);b=Math.floor(a/this.options.pageLimit);a=a%this.options.pageLimit;return this.load(b,a)}a=this.currentItem+1;return a>=this.nodes.length?this.load(b+1,0):this.loadItem(a)}this.playqueuepos=this.playqueuepos+1;a=this.playqueue[this.playqueuepos];return this.load(a.page,a.item)};
+osmplayer.playlist.prototype.prev=function(){this.playqueuepos=this.playqueuepos-1;this.playqueuepos=this.playqueuepos<0?0:this.playqueuepos;var a=this.playqueue[this.playqueuepos];return a?this.load(a.page,a.item):false};osmplayer.playlist.prototype.loadItem=function(a){if(a<this.nodes.length){this.setQueue();var b=this.nodes[this.currentItem];b.select(false);this.currentItem=a;b=this.nodes[a];b.select(true);this.trigger("nodeLoad",b.node);return true}return false};
+osmplayer.playlist.prototype.nextPage=function(a){return this.load(this.page+1,a)};osmplayer.playlist.prototype.prevPage=function(a){return this.load(this.page-1,a)};
+osmplayer.playlist.prototype.load=function(a,b){if(this.playlist==this.options.playlist&&a==this.page)return this.loadItem(b);this.playlist=this.options.playlist;if(!this.playlist)return false;if(a>Math.floor(this.totalItems/this.options.pageLimit))if(this.options.loop)b=a=0;else return false;this.elements.playlist_busy&&this.elements.playlist_busy.show();a=a||0;a=a<0?0:a;this.setQueue();this.page=a;this.page==0?this.pager.prevPage.hide():this.pager.prevPage.show();if(typeof this.playlist=="object"){this.set(this.playlist,
+b);if(this.playlist.endpoint)this.playlist=this.options.playlist=this.playlist.endpoint;return true}var c=osmplayer.parser["default"],d;for(d in osmplayer.parser)osmplayer.parser.hasOwnProperty(d)&&osmplayer.parser[d].valid(this.playlist)&&osmplayer.parser[d].priority>c.priority&&(c=osmplayer.parser[d]);var e=this,h=this;d={type:"GET",url:c.getFeed(this.playlist,this.page*this.options.pageLimit,this.options.pageLimit),success:function(a){e.set(c.parse(a),b)},error:function(a,b){h.elements.playlist_busy&&
+h.elements.playlist_busy.hide();h.trigger("error",b)}};var i="";if(i=c.getType())d.dataType=i;jQuery.ajax(d);return true};osmplayer=osmplayer||{};osmplayer.pager=function(a,b){minplayer.display.call(this,"pager",a,b)};osmplayer.pager.prototype=new minplayer.display;osmplayer.pager.prototype.constructor=osmplayer.pager;
+osmplayer.pager.prototype.construct=function(){minplayer.display.prototype.construct.call(this);if(this.elements.prevPage)this.prevPage=this.elements.prevPage.click(function(a){return function(b){b.preventDefault();a.trigger("prevPage")}}(this));if(this.elements.nextPage)this.nextPage=this.elements.nextPage.click(function(a){return function(b){b.preventDefault();a.trigger("nextPage")}}(this))};osmplayer=osmplayer||{};
+osmplayer.teaser=function(a,b){this.preview=null;minplayer.display.call(this,"teaser",a,b)};osmplayer.teaser.prototype=new minplayer.display;osmplayer.teaser.prototype.constructor=osmplayer.teaser;osmplayer.teaser.prototype.select=function(){};
+osmplayer.teaser.prototype.setNode=function(a){this.node=a;this.elements.title&&this.elements.title.text(a.title);if(a.mediafiles&&a.mediafiles.image)if((a=osmplayer.getImage(a.mediafiles,"thumbnail"))&&this.elements.image){this.preview=new minplayer.image(this.elements.image);this.preview.load(a)}this.display.unbind("click").click(function(a){return function(c){c.preventDefault();a.trigger("nodeLoad",a.node)}}(this))};
diff --git a/public/admin/js/osmplayer/bin/osmplayer.js b/public/admin/js/osmplayer/bin/osmplayer.js
new file mode 100644
index 0000000000000000000000000000000000000000..2474b50690cbeefb64712097e35fa9eec63a89d7
--- /dev/null
+++ b/public/admin/js/osmplayer/bin/osmplayer.js
@@ -0,0 +1,7082 @@
+/*!
+ * iScroll v4.1.9 ~ Copyright (c) 2011 Matteo Spinelli, http://cubiq.org
+ * Released under MIT license, http://cubiq.org/license
+ */
+(function(){
+var m = Math,
+	mround = function (r) { return r >> 0; },
+	vendor = (/webkit/i).test(navigator.appVersion) ? 'webkit' :
+		(/firefox/i).test(navigator.userAgent) ? 'Moz' :
+		(/trident/i).test(navigator.userAgent) ? 'ms' :
+		'opera' in window ? 'O' : '',
+
+    // Browser capabilities
+    isAndroid = (/android/gi).test(navigator.appVersion),
+    isIDevice = (/iphone|ipad/gi).test(navigator.appVersion),
+    isPlaybook = (/playbook/gi).test(navigator.appVersion),
+    isTouchPad = (/hp-tablet/gi).test(navigator.appVersion),
+
+    has3d = 'WebKitCSSMatrix' in window && 'm11' in new WebKitCSSMatrix(),
+    hasTouch = 'ontouchstart' in window && !isTouchPad,
+    hasTransform = vendor + 'Transform' in document.documentElement.style,
+    hasTransitionEnd = isIDevice || isPlaybook,
+
+	nextFrame = (function() {
+	    return window.requestAnimationFrame
+			|| window.webkitRequestAnimationFrame
+			|| window.mozRequestAnimationFrame
+			|| window.oRequestAnimationFrame
+			|| window.msRequestAnimationFrame
+			|| function(callback) { return setTimeout(callback, 1); }
+	})(),
+	cancelFrame = (function () {
+	    return window.cancelRequestAnimationFrame
+			|| window.webkitCancelAnimationFrame
+			|| window.webkitCancelRequestAnimationFrame
+			|| window.mozCancelRequestAnimationFrame
+			|| window.oCancelRequestAnimationFrame
+			|| window.msCancelRequestAnimationFrame
+			|| clearTimeout
+	})(),
+
+	// Events
+	RESIZE_EV = 'onorientationchange' in window ? 'orientationchange' : 'resize',
+	START_EV = hasTouch ? 'touchstart' : 'mousedown',
+	MOVE_EV = hasTouch ? 'touchmove' : 'mousemove',
+	END_EV = hasTouch ? 'touchend' : 'mouseup',
+	CANCEL_EV = hasTouch ? 'touchcancel' : 'mouseup',
+	WHEEL_EV = vendor == 'Moz' ? 'DOMMouseScroll' : 'mousewheel',
+
+	// Helpers
+	trnOpen = 'translate' + (has3d ? '3d(' : '('),
+	trnClose = has3d ? ',0)' : ')',
+
+	// Constructor
+	iScroll = function (el, options) {
+		var that = this,
+			doc = document,
+			i;
+
+		that.wrapper = typeof el == 'object' ? el : doc.getElementById(el);
+		that.wrapper.style.overflow = 'hidden';
+		that.scroller = that.wrapper.children[0];
+
+		// Default options
+		that.options = {
+			hScroll: true,
+			vScroll: true,
+			x: 0,
+			y: 0,
+			bounce: true,
+			bounceLock: false,
+			momentum: true,
+			lockDirection: true,
+			useTransform: true,
+			useTransition: false,
+			topOffset: 0,
+			checkDOMChanges: false,		// Experimental
+
+			// Scrollbar
+			hScrollbar: true,
+			vScrollbar: true,
+			fixedScrollbar: isAndroid,
+			hideScrollbar: isIDevice,
+			fadeScrollbar: isIDevice && has3d,
+			scrollbarClass: '',
+
+			// Zoom
+			zoom: false,
+			zoomMin: 1,
+			zoomMax: 4,
+			doubleTapZoom: 2,
+			wheelAction: 'scroll',
+
+			// Snap
+			snap: false,
+			snapThreshold: 1,
+
+			// Events
+			onRefresh: null,
+			onBeforeScrollStart: function (e) { e.preventDefault(); },
+			onScrollStart: null,
+			onBeforeScrollMove: null,
+			onScrollMove: null,
+			onBeforeScrollEnd: null,
+			onScrollEnd: null,
+			onTouchEnd: null,
+			onDestroy: null,
+			onZoomStart: null,
+			onZoom: null,
+			onZoomEnd: null
+		};
+
+		// User defined options
+		for (i in options) that.options[i] = options[i];
+		
+		// Set starting position
+		that.x = that.options.x;
+		that.y = that.options.y;
+
+		// Normalize options
+		that.options.useTransform = hasTransform ? that.options.useTransform : false;
+		that.options.hScrollbar = that.options.hScroll && that.options.hScrollbar;
+		that.options.vScrollbar = that.options.vScroll && that.options.vScrollbar;
+		that.options.zoom = that.options.useTransform && that.options.zoom;
+		that.options.useTransition = hasTransitionEnd && that.options.useTransition;
+
+		// Helpers FIX ANDROID BUG!
+		// translate3d and scale doesn't work together! 
+		// Ignoring 3d ONLY WHEN YOU SET that.options.zoom
+		if ( that.options.zoom && isAndroid ){
+			trnOpen = 'translate(';
+			trnClose = ')';
+		}
+		
+		// Set some default styles
+		that.scroller.style[vendor + 'TransitionProperty'] = that.options.useTransform ? '-' + vendor.toLowerCase() + '-transform' : 'top left';
+		that.scroller.style[vendor + 'TransitionDuration'] = '0';
+		that.scroller.style[vendor + 'TransformOrigin'] = '0 0';
+		if (that.options.useTransition) that.scroller.style[vendor + 'TransitionTimingFunction'] = 'cubic-bezier(0.33,0.66,0.66,1)';
+		
+		if (that.options.useTransform) that.scroller.style[vendor + 'Transform'] = trnOpen + that.x + 'px,' + that.y + 'px' + trnClose;
+		else that.scroller.style.cssText += ';position:absolute;top:' + that.y + 'px;left:' + that.x + 'px';
+
+		if (that.options.useTransition) that.options.fixedScrollbar = true;
+
+		that.refresh();
+
+		that._bind(RESIZE_EV, window);
+		that._bind(START_EV);
+		if (!hasTouch) {
+			that._bind('mouseout', that.wrapper);
+			if (that.options.wheelAction != 'none')
+				that._bind(WHEEL_EV);
+		}
+
+		if (that.options.checkDOMChanges) that.checkDOMTime = setInterval(function () {
+			that._checkDOMChanges();
+		}, 500);
+	};
+
+// Prototype
+iScroll.prototype = {
+	enabled: true,
+	x: 0,
+	y: 0,
+	steps: [],
+	scale: 1,
+	currPageX: 0, currPageY: 0,
+	pagesX: [], pagesY: [],
+	aniTime: null,
+	wheelZoomCount: 0,
+	
+	handleEvent: function (e) {
+		var that = this;
+		switch(e.type) {
+			case START_EV:
+				if (!hasTouch && e.button !== 0) return;
+				that._start(e);
+				break;
+			case MOVE_EV: that._move(e); break;
+			case END_EV:
+			case CANCEL_EV: that._end(e); break;
+			case RESIZE_EV: that._resize(); break;
+			case WHEEL_EV: that._wheel(e); break;
+			case 'mouseout': that._mouseout(e); break;
+			case 'webkitTransitionEnd': that._transitionEnd(e); break;
+		}
+	},
+	
+	_checkDOMChanges: function () {
+		if (this.moved || this.zoomed || this.animating ||
+			(this.scrollerW == this.scroller.offsetWidth * this.scale && this.scrollerH == this.scroller.offsetHeight * this.scale)) return;
+
+		this.refresh();
+	},
+	
+	_scrollbar: function (dir) {
+		var that = this,
+			doc = document,
+			bar;
+
+		if (!that[dir + 'Scrollbar']) {
+			if (that[dir + 'ScrollbarWrapper']) {
+				if (hasTransform) that[dir + 'ScrollbarIndicator'].style[vendor + 'Transform'] = '';
+				that[dir + 'ScrollbarWrapper'].parentNode.removeChild(that[dir + 'ScrollbarWrapper']);
+				that[dir + 'ScrollbarWrapper'] = null;
+				that[dir + 'ScrollbarIndicator'] = null;
+			}
+
+			return;
+		}
+
+		if (!that[dir + 'ScrollbarWrapper']) {
+			// Create the scrollbar wrapper
+			bar = doc.createElement('div');
+
+			if (that.options.scrollbarClass) bar.className = that.options.scrollbarClass + dir.toUpperCase();
+			else bar.style.cssText = 'position:absolute;z-index:100;' + (dir == 'h' ? 'height:7px;bottom:1px;left:2px;right:' + (that.vScrollbar ? '7' : '2') + 'px' : 'width:7px;bottom:' + (that.hScrollbar ? '7' : '2') + 'px;top:2px;right:1px');
+
+			bar.style.cssText += ';pointer-events:none;-' + vendor + '-transition-property:opacity;-' + vendor + '-transition-duration:' + (that.options.fadeScrollbar ? '350ms' : '0') + ';overflow:hidden;opacity:' + (that.options.hideScrollbar ? '0' : '1');
+
+			that.wrapper.appendChild(bar);
+			that[dir + 'ScrollbarWrapper'] = bar;
+
+			// Create the scrollbar indicator
+			bar = doc.createElement('div');
+			if (!that.options.scrollbarClass) {
+				bar.style.cssText = 'position:absolute;z-index:100;background:rgba(0,0,0,0.5);border:1px solid rgba(255,255,255,0.9);-' + vendor + '-background-clip:padding-box;-' + vendor + '-box-sizing:border-box;' + (dir == 'h' ? 'height:100%' : 'width:100%') + ';-' + vendor + '-border-radius:3px;border-radius:3px';
+			}
+			bar.style.cssText += ';pointer-events:none;-' + vendor + '-transition-property:-' + vendor + '-transform;-' + vendor + '-transition-timing-function:cubic-bezier(0.33,0.66,0.66,1);-' + vendor + '-transition-duration:0;-' + vendor + '-transform:' + trnOpen + '0,0' + trnClose;
+			if (that.options.useTransition) bar.style.cssText += ';-' + vendor + '-transition-timing-function:cubic-bezier(0.33,0.66,0.66,1)';
+
+			that[dir + 'ScrollbarWrapper'].appendChild(bar);
+			that[dir + 'ScrollbarIndicator'] = bar;
+		}
+
+		if (dir == 'h') {
+			that.hScrollbarSize = that.hScrollbarWrapper.clientWidth;
+			that.hScrollbarIndicatorSize = m.max(mround(that.hScrollbarSize * that.hScrollbarSize / that.scrollerW), 8);
+			that.hScrollbarIndicator.style.width = that.hScrollbarIndicatorSize + 'px';
+			that.hScrollbarMaxScroll = that.hScrollbarSize - that.hScrollbarIndicatorSize;
+			that.hScrollbarProp = that.hScrollbarMaxScroll / that.maxScrollX;
+		} else {
+			that.vScrollbarSize = that.vScrollbarWrapper.clientHeight;
+			that.vScrollbarIndicatorSize = m.max(mround(that.vScrollbarSize * that.vScrollbarSize / that.scrollerH), 8);
+			that.vScrollbarIndicator.style.height = that.vScrollbarIndicatorSize + 'px';
+			that.vScrollbarMaxScroll = that.vScrollbarSize - that.vScrollbarIndicatorSize;
+			that.vScrollbarProp = that.vScrollbarMaxScroll / that.maxScrollY;
+		}
+
+		// Reset position
+		that._scrollbarPos(dir, true);
+	},
+	
+	_resize: function () {
+		var that = this;
+		setTimeout(function () { that.refresh(); }, isAndroid ? 200 : 0);
+	},
+	
+	_pos: function (x, y) {
+		x = this.hScroll ? x : 0;
+		y = this.vScroll ? y : 0;
+
+		if (this.options.useTransform) {
+			this.scroller.style[vendor + 'Transform'] = trnOpen + x + 'px,' + y + 'px' + trnClose + ' scale(' + this.scale + ')';
+		} else {
+			x = mround(x);
+			y = mround(y);
+			this.scroller.style.left = x + 'px';
+			this.scroller.style.top = y + 'px';
+		}
+
+		this.x = x;
+		this.y = y;
+
+		this._scrollbarPos('h');
+		this._scrollbarPos('v');
+	},
+
+	_scrollbarPos: function (dir, hidden) {
+		var that = this,
+			pos = dir == 'h' ? that.x : that.y,
+			size;
+
+		if (!that[dir + 'Scrollbar']) return;
+
+		pos = that[dir + 'ScrollbarProp'] * pos;
+
+		if (pos < 0) {
+			if (!that.options.fixedScrollbar) {
+				size = that[dir + 'ScrollbarIndicatorSize'] + mround(pos * 3);
+				if (size < 8) size = 8;
+				that[dir + 'ScrollbarIndicator'].style[dir == 'h' ? 'width' : 'height'] = size + 'px';
+			}
+			pos = 0;
+		} else if (pos > that[dir + 'ScrollbarMaxScroll']) {
+			if (!that.options.fixedScrollbar) {
+				size = that[dir + 'ScrollbarIndicatorSize'] - mround((pos - that[dir + 'ScrollbarMaxScroll']) * 3);
+				if (size < 8) size = 8;
+				that[dir + 'ScrollbarIndicator'].style[dir == 'h' ? 'width' : 'height'] = size + 'px';
+				pos = that[dir + 'ScrollbarMaxScroll'] + (that[dir + 'ScrollbarIndicatorSize'] - size);
+			} else {
+				pos = that[dir + 'ScrollbarMaxScroll'];
+			}
+		}
+
+		that[dir + 'ScrollbarWrapper'].style[vendor + 'TransitionDelay'] = '0';
+		that[dir + 'ScrollbarWrapper'].style.opacity = hidden && that.options.hideScrollbar ? '0' : '1';
+		that[dir + 'ScrollbarIndicator'].style[vendor + 'Transform'] = trnOpen + (dir == 'h' ? pos + 'px,0' : '0,' + pos + 'px') + trnClose;
+	},
+	
+	_start: function (e) {
+		var that = this,
+			point = hasTouch ? e.touches[0] : e,
+			matrix, x, y,
+			c1, c2;
+
+		if (!that.enabled) return;
+
+		if (that.options.onBeforeScrollStart) that.options.onBeforeScrollStart.call(that, e);
+
+		if (that.options.useTransition || that.options.zoom) that._transitionTime(0);
+
+		that.moved = false;
+		that.animating = false;
+		that.zoomed = false;
+		that.distX = 0;
+		that.distY = 0;
+		that.absDistX = 0;
+		that.absDistY = 0;
+		that.dirX = 0;
+		that.dirY = 0;
+
+		// Gesture start
+		if (that.options.zoom && hasTouch && e.touches.length > 1) {
+			c1 = m.abs(e.touches[0].pageX-e.touches[1].pageX);
+			c2 = m.abs(e.touches[0].pageY-e.touches[1].pageY);
+			that.touchesDistStart = m.sqrt(c1 * c1 + c2 * c2);
+
+			that.originX = m.abs(e.touches[0].pageX + e.touches[1].pageX - that.wrapperOffsetLeft * 2) / 2 - that.x;
+			that.originY = m.abs(e.touches[0].pageY + e.touches[1].pageY - that.wrapperOffsetTop * 2) / 2 - that.y;
+
+			if (that.options.onZoomStart) that.options.onZoomStart.call(that, e);
+		}
+
+		if (that.options.momentum) {
+			if (that.options.useTransform) {
+				// Very lame general purpose alternative to CSSMatrix
+				matrix = getComputedStyle(that.scroller, null)[vendor + 'Transform'].replace(/[^0-9-.,]/g, '').split(',');
+				x = matrix[4] * 1;
+				y = matrix[5] * 1;
+			} else {
+				x = getComputedStyle(that.scroller, null).left.replace(/[^0-9-]/g, '') * 1;
+				y = getComputedStyle(that.scroller, null).top.replace(/[^0-9-]/g, '') * 1;
+			}
+			
+			if (x != that.x || y != that.y) {
+				if (that.options.useTransition) that._unbind('webkitTransitionEnd');
+				else cancelFrame(that.aniTime);
+				that.steps = [];
+				that._pos(x, y);
+			}
+		}
+
+		that.absStartX = that.x;	// Needed by snap threshold
+		that.absStartY = that.y;
+
+		that.startX = that.x;
+		that.startY = that.y;
+		that.pointX = point.pageX;
+		that.pointY = point.pageY;
+
+		that.startTime = e.timeStamp || Date.now();
+
+		if (that.options.onScrollStart) that.options.onScrollStart.call(that, e);
+
+		that._bind(MOVE_EV);
+		that._bind(END_EV);
+		that._bind(CANCEL_EV);
+	},
+	
+	_move: function (e) {
+		var that = this,
+			point = hasTouch ? e.touches[0] : e,
+			deltaX = point.pageX - that.pointX,
+			deltaY = point.pageY - that.pointY,
+			newX = that.x + deltaX,
+			newY = that.y + deltaY,
+			c1, c2, scale,
+			timestamp = e.timeStamp || Date.now();
+
+		if (that.options.onBeforeScrollMove) that.options.onBeforeScrollMove.call(that, e);
+
+		// Zoom
+		if (that.options.zoom && hasTouch && e.touches.length > 1) {
+			c1 = m.abs(e.touches[0].pageX - e.touches[1].pageX);
+			c2 = m.abs(e.touches[0].pageY - e.touches[1].pageY);
+			that.touchesDist = m.sqrt(c1*c1+c2*c2);
+
+			that.zoomed = true;
+
+			scale = 1 / that.touchesDistStart * that.touchesDist * this.scale;
+
+			if (scale < that.options.zoomMin) scale = 0.5 * that.options.zoomMin * Math.pow(2.0, scale / that.options.zoomMin);
+			else if (scale > that.options.zoomMax) scale = 2.0 * that.options.zoomMax * Math.pow(0.5, that.options.zoomMax / scale);
+
+			that.lastScale = scale / this.scale;
+
+			newX = this.originX - this.originX * that.lastScale + this.x,
+			newY = this.originY - this.originY * that.lastScale + this.y;
+
+			this.scroller.style[vendor + 'Transform'] = trnOpen + newX + 'px,' + newY + 'px' + trnClose + ' scale(' + scale + ')';
+
+			if (that.options.onZoom) that.options.onZoom.call(that, e);
+			return;
+		}
+
+		that.pointX = point.pageX;
+		that.pointY = point.pageY;
+
+		// Slow down if outside of the boundaries
+		if (newX > 0 || newX < that.maxScrollX) {
+			newX = that.options.bounce ? that.x + (deltaX / 2) : newX >= 0 || that.maxScrollX >= 0 ? 0 : that.maxScrollX;
+		}
+		if (newY > that.minScrollY || newY < that.maxScrollY) { 
+			newY = that.options.bounce ? that.y + (deltaY / 2) : newY >= that.minScrollY || that.maxScrollY >= 0 ? that.minScrollY : that.maxScrollY;
+		}
+
+		that.distX += deltaX;
+		that.distY += deltaY;
+		that.absDistX = m.abs(that.distX);
+		that.absDistY = m.abs(that.distY);
+
+		if (that.absDistX < 6 && that.absDistY < 6) {
+			return;
+		}
+
+		// Lock direction
+		if (that.options.lockDirection) {
+			if (that.absDistX > that.absDistY + 5) {
+				newY = that.y;
+				deltaY = 0;
+			} else if (that.absDistY > that.absDistX + 5) {
+				newX = that.x;
+				deltaX = 0;
+			}
+		}
+
+		that.moved = true;
+		that._pos(newX, newY);
+		that.dirX = deltaX > 0 ? -1 : deltaX < 0 ? 1 : 0;
+		that.dirY = deltaY > 0 ? -1 : deltaY < 0 ? 1 : 0;
+
+		if (timestamp - that.startTime > 300) {
+			that.startTime = timestamp;
+			that.startX = that.x;
+			that.startY = that.y;
+		}
+		
+		if (that.options.onScrollMove) that.options.onScrollMove.call(that, e);
+	},
+	
+	_end: function (e) {
+		if (hasTouch && e.touches.length != 0) return;
+
+		var that = this,
+			point = hasTouch ? e.changedTouches[0] : e,
+			target, ev,
+			momentumX = { dist:0, time:0 },
+			momentumY = { dist:0, time:0 },
+			duration = (e.timeStamp || Date.now()) - that.startTime,
+			newPosX = that.x,
+			newPosY = that.y,
+			distX, distY,
+			newDuration,
+			snap,
+			scale;
+
+		that._unbind(MOVE_EV);
+		that._unbind(END_EV);
+		that._unbind(CANCEL_EV);
+
+		if (that.options.onBeforeScrollEnd) that.options.onBeforeScrollEnd.call(that, e);
+
+		if (that.zoomed) {
+			scale = that.scale * that.lastScale;
+			scale = Math.max(that.options.zoomMin, scale);
+			scale = Math.min(that.options.zoomMax, scale);
+			that.lastScale = scale / that.scale;
+			that.scale = scale;
+
+			that.x = that.originX - that.originX * that.lastScale + that.x;
+			that.y = that.originY - that.originY * that.lastScale + that.y;
+			
+			that.scroller.style[vendor + 'TransitionDuration'] = '200ms';
+			that.scroller.style[vendor + 'Transform'] = trnOpen + that.x + 'px,' + that.y + 'px' + trnClose + ' scale(' + that.scale + ')';
+			
+			that.zoomed = false;
+			that.refresh();
+
+			if (that.options.onZoomEnd) that.options.onZoomEnd.call(that, e);
+			return;
+		}
+
+		if (!that.moved) {
+			if (hasTouch) {
+				if (that.doubleTapTimer && that.options.zoom) {
+					// Double tapped
+					clearTimeout(that.doubleTapTimer);
+					that.doubleTapTimer = null;
+					if (that.options.onZoomStart) that.options.onZoomStart.call(that, e);
+					that.zoom(that.pointX, that.pointY, that.scale == 1 ? that.options.doubleTapZoom : 1);
+					if (that.options.onZoomEnd) {
+						setTimeout(function() {
+							that.options.onZoomEnd.call(that, e);
+						}, 200); // 200 is default zoom duration
+					}
+				} else {
+					that.doubleTapTimer = setTimeout(function () {
+						that.doubleTapTimer = null;
+
+						// Find the last touched element
+						target = point.target;
+						while (target.nodeType != 1) target = target.parentNode;
+
+						if (target.tagName != 'SELECT' && target.tagName != 'INPUT' && target.tagName != 'TEXTAREA') {
+							ev = document.createEvent('MouseEvents');
+							ev.initMouseEvent('click', true, true, e.view, 1,
+								point.screenX, point.screenY, point.clientX, point.clientY,
+								e.ctrlKey, e.altKey, e.shiftKey, e.metaKey,
+								0, null);
+							ev._fake = true;
+							target.dispatchEvent(ev);
+						}
+					}, that.options.zoom ? 250 : 0);
+				}
+			}
+
+			that._resetPos(200);
+
+			if (that.options.onTouchEnd) that.options.onTouchEnd.call(that, e);
+			return;
+		}
+
+		if (duration < 300 && that.options.momentum) {
+			momentumX = newPosX ? that._momentum(newPosX - that.startX, duration, -that.x, that.scrollerW - that.wrapperW + that.x, that.options.bounce ? that.wrapperW : 0) : momentumX;
+			momentumY = newPosY ? that._momentum(newPosY - that.startY, duration, -that.y, (that.maxScrollY < 0 ? that.scrollerH - that.wrapperH + that.y - that.minScrollY : 0), that.options.bounce ? that.wrapperH : 0) : momentumY;
+
+			newPosX = that.x + momentumX.dist;
+			newPosY = that.y + momentumY.dist;
+
+ 			if ((that.x > 0 && newPosX > 0) || (that.x < that.maxScrollX && newPosX < that.maxScrollX)) momentumX = { dist:0, time:0 };
+ 			if ((that.y > that.minScrollY && newPosY > that.minScrollY) || (that.y < that.maxScrollY && newPosY < that.maxScrollY)) momentumY = { dist:0, time:0 };
+		}
+
+		if (momentumX.dist || momentumY.dist) {
+			newDuration = m.max(m.max(momentumX.time, momentumY.time), 10);
+
+			// Do we need to snap?
+			if (that.options.snap) {
+				distX = newPosX - that.absStartX;
+				distY = newPosY - that.absStartY;
+				if (m.abs(distX) < that.options.snapThreshold && m.abs(distY) < that.options.snapThreshold) { that.scrollTo(that.absStartX, that.absStartY, 200); }
+				else {
+					snap = that._snap(newPosX, newPosY);
+					newPosX = snap.x;
+					newPosY = snap.y;
+					newDuration = m.max(snap.time, newDuration);
+				}
+			}
+
+			that.scrollTo(mround(newPosX), mround(newPosY), newDuration);
+
+			if (that.options.onTouchEnd) that.options.onTouchEnd.call(that, e);
+			return;
+		}
+
+		// Do we need to snap?
+		if (that.options.snap) {
+			distX = newPosX - that.absStartX;
+			distY = newPosY - that.absStartY;
+			if (m.abs(distX) < that.options.snapThreshold && m.abs(distY) < that.options.snapThreshold) that.scrollTo(that.absStartX, that.absStartY, 200);
+			else {
+				snap = that._snap(that.x, that.y);
+				if (snap.x != that.x || snap.y != that.y) that.scrollTo(snap.x, snap.y, snap.time);
+			}
+
+			if (that.options.onTouchEnd) that.options.onTouchEnd.call(that, e);
+			return;
+		}
+
+		that._resetPos(200);
+		if (that.options.onTouchEnd) that.options.onTouchEnd.call(that, e);
+	},
+	
+	_resetPos: function (time) {
+		var that = this,
+			resetX = that.x >= 0 ? 0 : that.x < that.maxScrollX ? that.maxScrollX : that.x,
+			resetY = that.y >= that.minScrollY || that.maxScrollY > 0 ? that.minScrollY : that.y < that.maxScrollY ? that.maxScrollY : that.y;
+
+		if (resetX == that.x && resetY == that.y) {
+			if (that.moved) {
+				that.moved = false;
+				if (that.options.onScrollEnd) that.options.onScrollEnd.call(that);		// Execute custom code on scroll end
+			}
+
+			if (that.hScrollbar && that.options.hideScrollbar) {
+				if (vendor == 'webkit') that.hScrollbarWrapper.style[vendor + 'TransitionDelay'] = '300ms';
+				that.hScrollbarWrapper.style.opacity = '0';
+			}
+			if (that.vScrollbar && that.options.hideScrollbar) {
+				if (vendor == 'webkit') that.vScrollbarWrapper.style[vendor + 'TransitionDelay'] = '300ms';
+				that.vScrollbarWrapper.style.opacity = '0';
+			}
+
+			return;
+		}
+
+		that.scrollTo(resetX, resetY, time || 0);
+	},
+
+	_wheel: function (e) {
+		var that = this,
+			wheelDeltaX, wheelDeltaY,
+			deltaX, deltaY,
+			deltaScale;
+
+		if ('wheelDeltaX' in e) {
+			wheelDeltaX = e.wheelDeltaX / 12;
+			wheelDeltaY = e.wheelDeltaY / 12;
+		} else if('wheelDelta' in e) {
+			wheelDeltaX = wheelDeltaY = e.wheelDelta / 12;
+		} else if ('detail' in e) {
+			wheelDeltaX = wheelDeltaY = -e.detail * 3;
+		} else {
+			return;
+		}
+		
+		if (that.options.wheelAction == 'zoom') {
+			deltaScale = that.scale * Math.pow(2, 1/3 * (wheelDeltaY ? wheelDeltaY / Math.abs(wheelDeltaY) : 0));
+			if (deltaScale < that.options.zoomMin) deltaScale = that.options.zoomMin;
+			if (deltaScale > that.options.zoomMax) deltaScale = that.options.zoomMax;
+			
+			if (deltaScale != that.scale) {
+				if (!that.wheelZoomCount && that.options.onZoomStart) that.options.onZoomStart.call(that, e);
+				that.wheelZoomCount++;
+				
+				that.zoom(e.pageX, e.pageY, deltaScale, 400);
+				
+				setTimeout(function() {
+					that.wheelZoomCount--;
+					if (!that.wheelZoomCount && that.options.onZoomEnd) that.options.onZoomEnd.call(that, e);
+				}, 400);
+			}
+			
+			return;
+		}
+		
+		deltaX = that.x + wheelDeltaX;
+		deltaY = that.y + wheelDeltaY;
+
+		if (deltaX > 0) deltaX = 0;
+		else if (deltaX < that.maxScrollX) deltaX = that.maxScrollX;
+
+		if (deltaY > that.minScrollY) deltaY = that.minScrollY;
+		else if (deltaY < that.maxScrollY) deltaY = that.maxScrollY;
+
+		that.scrollTo(deltaX, deltaY, 0);
+	},
+	
+	_mouseout: function (e) {
+		var t = e.relatedTarget;
+
+		if (!t) {
+			this._end(e);
+			return;
+		}
+
+		while (t = t.parentNode) if (t == this.wrapper) return;
+		
+		this._end(e);
+	},
+
+	_transitionEnd: function (e) {
+		var that = this;
+
+		if (e.target != that.scroller) return;
+
+		that._unbind('webkitTransitionEnd');
+		
+		that._startAni();
+	},
+
+
+	/**
+	 *
+	 * Utilities
+	 *
+	 */
+	_startAni: function () {
+		var that = this,
+			startX = that.x, startY = that.y,
+			startTime = Date.now(),
+			step, easeOut,
+			animate;
+
+		if (that.animating) return;
+		
+		if (!that.steps.length) {
+			that._resetPos(400);
+			return;
+		}
+		
+		step = that.steps.shift();
+		
+		if (step.x == startX && step.y == startY) step.time = 0;
+
+		that.animating = true;
+		that.moved = true;
+		
+		if (that.options.useTransition) {
+			that._transitionTime(step.time);
+			that._pos(step.x, step.y);
+			that.animating = false;
+			if (step.time) that._bind('webkitTransitionEnd');
+			else that._resetPos(0);
+			return;
+		}
+
+		animate = function () {
+			var now = Date.now(),
+				newX, newY;
+
+			if (now >= startTime + step.time) {
+				that._pos(step.x, step.y);
+				that.animating = false;
+				if (that.options.onAnimationEnd) that.options.onAnimationEnd.call(that);			// Execute custom code on animation end
+				that._startAni();
+				return;
+			}
+
+			now = (now - startTime) / step.time - 1;
+			easeOut = m.sqrt(1 - now * now);
+			newX = (step.x - startX) * easeOut + startX;
+			newY = (step.y - startY) * easeOut + startY;
+			that._pos(newX, newY);
+			if (that.animating) that.aniTime = nextFrame(animate);
+		};
+
+		animate();
+	},
+
+	_transitionTime: function (time) {
+		time += 'ms';
+		this.scroller.style[vendor + 'TransitionDuration'] = time;
+		if (this.hScrollbar) this.hScrollbarIndicator.style[vendor + 'TransitionDuration'] = time;
+		if (this.vScrollbar) this.vScrollbarIndicator.style[vendor + 'TransitionDuration'] = time;
+	},
+
+	_momentum: function (dist, time, maxDistUpper, maxDistLower, size) {
+		var deceleration = 0.0006,
+			speed = m.abs(dist) / time,
+			newDist = (speed * speed) / (2 * deceleration),
+			newTime = 0, outsideDist = 0;
+
+		// Proportinally reduce speed if we are outside of the boundaries 
+		if (dist > 0 && newDist > maxDistUpper) {
+			outsideDist = size / (6 / (newDist / speed * deceleration));
+			maxDistUpper = maxDistUpper + outsideDist;
+			speed = speed * maxDistUpper / newDist;
+			newDist = maxDistUpper;
+		} else if (dist < 0 && newDist > maxDistLower) {
+			outsideDist = size / (6 / (newDist / speed * deceleration));
+			maxDistLower = maxDistLower + outsideDist;
+			speed = speed * maxDistLower / newDist;
+			newDist = maxDistLower;
+		}
+
+		newDist = newDist * (dist < 0 ? -1 : 1);
+		newTime = speed / deceleration;
+
+		return { dist: newDist, time: mround(newTime) };
+	},
+
+	_offset: function (el) {
+		var left = -el.offsetLeft,
+			top = -el.offsetTop;
+			
+		while (el = el.offsetParent) {
+			left -= el.offsetLeft;
+			top -= el.offsetTop;
+		}
+		
+		if (el != this.wrapper) {
+			left *= this.scale;
+			top *= this.scale;
+		}
+
+		return { left: left, top: top };
+	},
+
+	_snap: function (x, y) {
+		var that = this,
+			i, l,
+			page, time,
+			sizeX, sizeY;
+
+		// Check page X
+		page = that.pagesX.length - 1;
+		for (i=0, l=that.pagesX.length; i<l; i++) {
+			if (x >= that.pagesX[i]) {
+				page = i;
+				break;
+			}
+		}
+		if (page == that.currPageX && page > 0 && that.dirX < 0) page--;
+		x = that.pagesX[page];
+		sizeX = m.abs(x - that.pagesX[that.currPageX]);
+		sizeX = sizeX ? m.abs(that.x - x) / sizeX * 500 : 0;
+		that.currPageX = page;
+
+		// Check page Y
+		page = that.pagesY.length-1;
+		for (i=0; i<page; i++) {
+			if (y >= that.pagesY[i]) {
+				page = i;
+				break;
+			}
+		}
+		if (page == that.currPageY && page > 0 && that.dirY < 0) page--;
+		y = that.pagesY[page];
+		sizeY = m.abs(y - that.pagesY[that.currPageY]);
+		sizeY = sizeY ? m.abs(that.y - y) / sizeY * 500 : 0;
+		that.currPageY = page;
+
+		// Snap with constant speed (proportional duration)
+		time = mround(m.max(sizeX, sizeY)) || 200;
+
+		return { x: x, y: y, time: time };
+	},
+
+	_bind: function (type, el, bubble) {
+		(el || this.scroller).addEventListener(type, this, !!bubble);
+	},
+
+	_unbind: function (type, el, bubble) {
+		(el || this.scroller).removeEventListener(type, this, !!bubble);
+	},
+
+
+	/**
+	 *
+	 * Public methods
+	 *
+	 */
+	destroy: function () {
+		var that = this;
+
+		that.scroller.style[vendor + 'Transform'] = '';
+
+		// Remove the scrollbars
+		that.hScrollbar = false;
+		that.vScrollbar = false;
+		that._scrollbar('h');
+		that._scrollbar('v');
+
+		// Remove the event listeners
+		that._unbind(RESIZE_EV, window);
+		that._unbind(START_EV);
+		that._unbind(MOVE_EV);
+		that._unbind(END_EV);
+		that._unbind(CANCEL_EV);
+		
+		if (!that.options.hasTouch) {
+			that._unbind('mouseout', that.wrapper);
+			that._unbind(WHEEL_EV);
+		}
+		
+		if (that.options.useTransition) that._unbind('webkitTransitionEnd');
+		
+		if (that.options.checkDOMChanges) clearInterval(that.checkDOMTime);
+		
+		if (that.options.onDestroy) that.options.onDestroy.call(that);
+	},
+
+	refresh: function () {
+		var that = this,
+			offset,
+			i, l,
+			els,
+			pos = 0,
+			page = 0;
+
+		if (that.scale < that.options.zoomMin) that.scale = that.options.zoomMin;
+		that.wrapperW = that.wrapper.clientWidth || 1;
+		that.wrapperH = that.wrapper.clientHeight || 1;
+
+		that.minScrollY = -that.options.topOffset || 0;
+		that.scrollerW = mround(that.scroller.offsetWidth * that.scale);
+		that.scrollerH = mround((that.scroller.offsetHeight + that.minScrollY) * that.scale);
+		that.maxScrollX = that.wrapperW - that.scrollerW;
+		that.maxScrollY = that.wrapperH - that.scrollerH + that.minScrollY;
+		that.dirX = 0;
+		that.dirY = 0;
+
+		if (that.options.onRefresh) that.options.onRefresh.call(that);
+
+		that.hScroll = that.options.hScroll && that.maxScrollX < 0;
+		that.vScroll = that.options.vScroll && (!that.options.bounceLock && !that.hScroll || that.scrollerH > that.wrapperH);
+
+		that.hScrollbar = that.hScroll && that.options.hScrollbar;
+		that.vScrollbar = that.vScroll && that.options.vScrollbar && that.scrollerH > that.wrapperH;
+
+		offset = that._offset(that.wrapper);
+		that.wrapperOffsetLeft = -offset.left;
+		that.wrapperOffsetTop = -offset.top;
+
+		// Prepare snap
+		if (typeof that.options.snap == 'string') {
+			that.pagesX = [];
+			that.pagesY = [];
+			els = that.scroller.querySelectorAll(that.options.snap);
+			for (i=0, l=els.length; i<l; i++) {
+				pos = that._offset(els[i]);
+				pos.left += that.wrapperOffsetLeft;
+				pos.top += that.wrapperOffsetTop;
+				that.pagesX[i] = pos.left < that.maxScrollX ? that.maxScrollX : pos.left * that.scale;
+				that.pagesY[i] = pos.top < that.maxScrollY ? that.maxScrollY : pos.top * that.scale;
+			}
+		} else if (that.options.snap) {
+			that.pagesX = [];
+			while (pos >= that.maxScrollX) {
+				that.pagesX[page] = pos;
+				pos = pos - that.wrapperW;
+				page++;
+			}
+			if (that.maxScrollX%that.wrapperW) that.pagesX[that.pagesX.length] = that.maxScrollX - that.pagesX[that.pagesX.length-1] + that.pagesX[that.pagesX.length-1];
+
+			pos = 0;
+			page = 0;
+			that.pagesY = [];
+			while (pos >= that.maxScrollY) {
+				that.pagesY[page] = pos;
+				pos = pos - that.wrapperH;
+				page++;
+			}
+			if (that.maxScrollY%that.wrapperH) that.pagesY[that.pagesY.length] = that.maxScrollY - that.pagesY[that.pagesY.length-1] + that.pagesY[that.pagesY.length-1];
+		}
+
+		// Prepare the scrollbars
+		that._scrollbar('h');
+		that._scrollbar('v');
+
+		if (!that.zoomed) {
+			that.scroller.style[vendor + 'TransitionDuration'] = '0';
+			that._resetPos(200);
+		}
+	},
+
+	scrollTo: function (x, y, time, relative) {
+		var that = this,
+			step = x,
+			i, l;
+
+		that.stop();
+
+		if (!step.length) step = [{ x: x, y: y, time: time, relative: relative }];
+		
+		for (i=0, l=step.length; i<l; i++) {
+			if (step[i].relative) { step[i].x = that.x - step[i].x; step[i].y = that.y - step[i].y; }
+			that.steps.push({ x: step[i].x, y: step[i].y, time: step[i].time || 0 });
+		}
+
+		that._startAni();
+	},
+
+	scrollToElement: function (el, time) {
+		var that = this, pos;
+		el = el.nodeType ? el : that.scroller.querySelector(el);
+		if (!el) return;
+
+		pos = that._offset(el);
+		pos.left += that.wrapperOffsetLeft;
+		pos.top += that.wrapperOffsetTop;
+
+		pos.left = pos.left > 0 ? 0 : pos.left < that.maxScrollX ? that.maxScrollX : pos.left;
+		pos.top = pos.top > that.minScrollY ? that.minScrollY : pos.top < that.maxScrollY ? that.maxScrollY : pos.top;
+		time = time === undefined ? m.max(m.abs(pos.left)*2, m.abs(pos.top)*2) : time;
+
+		that.scrollTo(pos.left, pos.top, time);
+	},
+
+	scrollToPage: function (pageX, pageY, time) {
+		var that = this, x, y;
+		
+		time = time === undefined ? 400 : time;
+
+		if (that.options.onScrollStart) that.options.onScrollStart.call(that);
+
+		if (that.options.snap) {
+			pageX = pageX == 'next' ? that.currPageX+1 : pageX == 'prev' ? that.currPageX-1 : pageX;
+			pageY = pageY == 'next' ? that.currPageY+1 : pageY == 'prev' ? that.currPageY-1 : pageY;
+
+			pageX = pageX < 0 ? 0 : pageX > that.pagesX.length-1 ? that.pagesX.length-1 : pageX;
+			pageY = pageY < 0 ? 0 : pageY > that.pagesY.length-1 ? that.pagesY.length-1 : pageY;
+
+			that.currPageX = pageX;
+			that.currPageY = pageY;
+			x = that.pagesX[pageX];
+			y = that.pagesY[pageY];
+		} else {
+			x = -that.wrapperW * pageX;
+			y = -that.wrapperH * pageY;
+			if (x < that.maxScrollX) x = that.maxScrollX;
+			if (y < that.maxScrollY) y = that.maxScrollY;
+		}
+
+		that.scrollTo(x, y, time);
+	},
+
+	disable: function () {
+		this.stop();
+		this._resetPos(0);
+		this.enabled = false;
+
+		// If disabled after touchstart we make sure that there are no left over events
+		this._unbind(MOVE_EV);
+		this._unbind(END_EV);
+		this._unbind(CANCEL_EV);
+	},
+	
+	enable: function () {
+		this.enabled = true;
+	},
+	
+	stop: function () {
+		if (this.options.useTransition) this._unbind('webkitTransitionEnd');
+		else cancelFrame(this.aniTime);
+		this.steps = [];
+		this.moved = false;
+		this.animating = false;
+	},
+	
+	zoom: function (x, y, scale, time) {
+		var that = this,
+			relScale = scale / that.scale;
+
+		if (!that.options.useTransform) return;
+
+		that.zoomed = true;
+		time = time === undefined ? 200 : time;
+		x = x - that.wrapperOffsetLeft - that.x;
+		y = y - that.wrapperOffsetTop - that.y;
+		that.x = x - x * relScale + that.x;
+		that.y = y - y * relScale + that.y;
+
+		that.scale = scale;
+		that.refresh();
+
+		that.x = that.x > 0 ? 0 : that.x < that.maxScrollX ? that.maxScrollX : that.x;
+		that.y = that.y > that.minScrollY ? that.minScrollY : that.y < that.maxScrollY ? that.maxScrollY : that.y;
+
+		that.scroller.style[vendor + 'TransitionDuration'] = time + 'ms';
+		that.scroller.style[vendor + 'Transform'] = trnOpen + that.x + 'px,' + that.y + 'px' + trnClose + ' scale(' + scale + ')';
+		that.zoomed = false;
+	},
+	
+	isReady: function () {
+		return !this.moved && !this.zoomed && !this.animating;
+	}
+};
+
+if (typeof exports !== 'undefined') exports.iScroll = iScroll;
+else window.iScroll = iScroll;
+
+})();
+/** The minplayer namespace. */
+var minplayer = minplayer || {};
+
+// Private function to check a single element's play type.
+function checkPlayType(elem, playType) {
+  if ((typeof elem.canPlayType) === 'function') {
+    if (typeof playType === 'object') {
+      var i = playType.length;
+      var mimetype = '';
+      while (i--) {
+        mimetype = checkPlayType(elem, playType[i]);
+        if (!!mimetype) {
+          break;
+        }
+      }
+      return mimetype;
+    }
+    else {
+      var canPlay = elem.canPlayType(playType);
+      if (('no' !== canPlay) && ('' !== canPlay)) {
+        return playType;
+      }
+    }
+  }
+  return '';
+}
+
+/**
+ * @constructor
+ * @class This class is used to define the types of media that can be played
+ * within the browser.
+ * <p>
+ * <strong>Usage:</strong>
+ * <pre><code>
+ *   var playTypes = new minplayer.compatibility();
+ *
+ *   if (playTypes.videoOGG) {
+ *     console.log("This browser can play OGG video");
+ *   }
+ *
+ *   if (playTypes.videoH264) {
+ *     console.log("This browser can play H264 video");
+ *   }
+ *
+ *   if (playTypes.videoWEBM) {
+ *     console.log("This browser can play WebM video");
+ *   }
+ *
+ *   if (playTypes.audioOGG) {
+ *     console.log("This browser can play OGG audio");
+ *   }
+ *
+ *   if (playTypes.audioMP3) {
+ *     console.log("This browser can play MP3 audio");
+ *   }
+ *
+ *   if (playTypes.audioMP4) {
+ *     console.log("This browser can play MP4 audio");
+ *   }
+ * </code></pre>
+ */
+minplayer.compatibility = function() {
+  var elem = null;
+
+  // Create a video element.
+  elem = document.createElement('video');
+
+  /** Can play OGG video */
+  this.videoOGG = checkPlayType(elem, 'video/ogg');
+
+  /** Can play H264 video */
+  this.videoH264 = checkPlayType(elem, [
+    'video/mp4',
+    'video/h264'
+  ]);
+
+  /** Can play WEBM video */
+  this.videoWEBM = checkPlayType(elem, [
+    'video/x-webm',
+    'video/webm',
+    'application/octet-stream'
+  ]);
+
+  // Create an audio element.
+  elem = document.createElement('audio');
+
+  /** Can play audio OGG */
+  this.audioOGG = checkPlayType(elem, 'audio/ogg');
+
+  /** Can play audio MP3 */
+  this.audioMP3 = checkPlayType(elem, 'audio/mpeg');
+
+  /** Can play audio MP4 */
+  this.audioMP4 = checkPlayType(elem, 'audio/mp4');
+};
+
+if (!minplayer.playTypes) {
+
+  /** The compatible playtypes for this browser. */
+  minplayer.playTypes = new minplayer.compatibility();
+
+  /** See if we are an android device. */
+  minplayer.isAndroid = (/android/gi).test(navigator.appVersion);
+
+  /** See if we are an iOS device. */
+  minplayer.isIDevice = (/iphone|ipad/gi).test(navigator.appVersion);
+
+  /** See if we are a playbook device. */
+  minplayer.isPlaybook = (/playbook/gi).test(navigator.appVersion);
+
+  /** See if we are a touchpad device. */
+  minplayer.isTouchPad = (/hp-tablet/gi).test(navigator.appVersion);
+
+  /** Determine if we have a touchscreen. */
+  minplayer.hasTouch = 'ontouchstart' in window && !minplayer.isTouchPad;
+}
+/** The minplayer namespace. */
+var minplayer = minplayer || {};
+
+/**
+ * @constructor
+ * @class This class keeps track of asynchronous get requests for certain
+ * variables within the player.
+ */
+minplayer.async = function() {
+
+  /** The final value of this asynchronous variable. */
+  this.value = null;
+
+  /** The queue of callbacks to call when this value is determined. */
+  this.queue = [];
+};
+
+/**
+ * Retrieve the value of this variable.
+ *
+ * @param {function} callback The function to call when the value is determined.
+ * @param {function} pollValue The poll function to try and get the value every
+ * 1 second if the value is not set.
+ */
+minplayer.async.prototype.get = function(callback, pollValue) {
+
+  // If the value is set, then immediately call the callback, otherwise, just
+  // add it to the queue when the variable is set.
+  if (this.value !== null) {
+    callback(this.value);
+  }
+  else {
+
+    // Add this callback to the queue.
+    this.queue.push(callback);
+  }
+};
+
+/**
+ * Sets the value of an asynchronous value.
+ *
+ * @param {void} val The value to set.
+ */
+minplayer.async.prototype.set = function(val) {
+
+  // Set the value.
+  this.value = val;
+
+  // Get the callback queue length.
+  var i = this.queue.length;
+
+  // Iterate through all the callbacks and call them.
+  if (i) {
+    while (i--) {
+      this.queue[i](val);
+    }
+
+    // Reset the queue.
+    this.queue = [];
+  }
+};
+/** The minplayer namespace. */
+var minplayer = minplayer || {};
+
+/**
+ * @constructor
+ * @class This is a class used to keep track of flag states
+ * which is used to control the busy cursor, big play button, among other
+ * items in which multiple components can have an interest in hiding or
+ * showing a single element on the screen.
+ *
+ * <p>
+ * <strong>Usage:</strong>
+ * <pre><code>
+ *   // Declare a flags variable.
+ *   var flags = new minplayer.flags();
+ *
+ *   // Set the flag based on two components interested in the flag.
+ *   flags.setFlag("component1", true);
+ *   flags.setFlag("component2", true);
+ *
+ *   // Print out the value of the flags. ( Prints 3 )
+ *   console.log(flags.flags);
+ *
+ *   // Now unset a single components flag.
+ *   flags.setFlag("component1", false);
+ *
+ *   // Print out the value of the flags.
+ *   console.log(flags.flags);
+ *
+ *   // Unset the other components flag.
+ *   flags.setFlag("component2", false);
+ *
+ *   // Print out the value of the flags.
+ *   console.log(flags.flags);
+ * </code></pre>
+ * </p>
+ */
+minplayer.flags = function() {
+
+  /** The flag. */
+  this.flag = 0;
+
+  /** Id map to reference id with the flag index. */
+  this.ids = {};
+
+  /** The number of flags. */
+  this.numFlags = 0;
+};
+
+/**
+ * Sets a flag based on boolean logic operators.
+ *
+ * @param {string} id The id of the controller interested in this flag.
+ * @param {boolean} value The value of this flag ( true or false ).
+ */
+minplayer.flags.prototype.setFlag = function(id, value) {
+
+  // Define this id if it isn't present.
+  if (!this.ids.hasOwnProperty(id)) {
+    this.ids[id] = this.numFlags;
+    this.numFlags++;
+  }
+
+  // Use binary operations to keep track of the flag state
+  if (value) {
+    this.flag |= (1 << this.ids[id]);
+  }
+  else {
+    this.flag &= ~(1 << this.ids[id]);
+  }
+};
+/** The minplayer namespace. */
+minplayer = minplayer || {};
+
+/** Static array to keep track of all plugins. */
+minplayer.plugins = minplayer.plugins || {};
+
+/** Static array to keep track of queues. */
+minplayer.queue = minplayer.queue || [];
+
+/** Mutex lock to keep multiple triggers from occuring. */
+minplayer.lock = false;
+
+/**
+ * @constructor
+ * @class The base class for all plugins.
+ *
+ * @param {string} name The name of this plugin.
+ * @param {object} context The jQuery context.
+ * @param {object} options This components options.
+ * @param {object} queue The event queue to pass events around.
+ */
+minplayer.plugin = function(name, context, options, queue) {
+
+  /** The name of this plugin. */
+  this.name = name;
+
+  /** The ready flag. */
+  this.pluginReady = false;
+
+  /** The options for this plugin. */
+  this.options = options || {};
+
+  /** The event queue. */
+  this.queue = queue || {};
+
+  /** Keep track of already triggered events. */
+  this.triggered = {};
+
+  /** Create a queue lock. */
+  this.lock = false;
+
+  // Only call the constructor if we have a context.
+  if (context) {
+
+    /** Say that we are active. */
+    this.active = true;
+
+    /** Keep track of the context. */
+    this.context = jQuery(context);
+
+    // Construct this plugin.
+    this.construct();
+  }
+};
+
+/**
+ * The constructor which is called once the context is set.
+ * Any class deriving from the plugin class should place all context
+ * dependant functionality within this function instead of the standard
+ * constructor function since it is called on object derivation as well
+ * as object creation.
+ */
+minplayer.plugin.prototype.construct = function() {
+
+  // Adds this as a plugin.
+  this.addPlugin();
+};
+
+/**
+ * Destructor.
+ */
+minplayer.plugin.prototype.destroy = function() {
+
+  // Unbind all events.
+  this.active = false;
+  this.unbind();
+};
+
+/**
+ * Creates a new plugin within this context.
+ *
+ * @param {string} name The name of the plugin you wish to create.
+ * @param {object} base The base object for this plugin.
+ * @param {object} context The context which you would like to create.
+ * @return {object} The new plugin object.
+ */
+minplayer.plugin.prototype.create = function(name, base, context) {
+  var plugin = null;
+
+  // Make sure we have a base object.
+  base = base || 'minplayer';
+  if (!window[base][name]) {
+    base = 'minplayer';
+  }
+
+  // Make sure there is a context.
+  context = context || this.display;
+
+  // See if this plugin exists within this object.
+  if (window[base][name]) {
+
+    // Set the plugin.
+    plugin = window[base][name];
+
+    // See if a template version of the plugin exists.
+    if (plugin[this.options.template]) {
+
+      plugin = plugin[this.options.template];
+    }
+
+    // Make sure the plugin is a function.
+    if (typeof plugin !== 'function') {
+      plugin = window['minplayer'][name];
+    }
+
+    // Make sure it is a function.
+    if (typeof plugin === 'function') {
+      return new plugin(context, this.options);
+    }
+  }
+
+  return null;
+};
+
+/**
+ * Plugins should call this method when they are ready.
+ */
+minplayer.plugin.prototype.ready = function() {
+
+  // Keep this plugin from triggering multiple ready events.
+  if (!this.pluginReady) {
+
+    // Set the ready flag.
+    this.pluginReady = true;
+
+    // Now trigger that I am ready.
+    this.trigger('ready');
+
+    // Check the queue.
+    this.checkQueue();
+  }
+};
+
+/**
+ * Returns if this component is valid.
+ *
+ * @return {boolean} TRUE if the plugin display is valid.
+ */
+minplayer.plugin.prototype.isValid = function() {
+  return !!this.options.id && this.active;
+};
+
+/**
+ * Adds a new plugin to this player.
+ *
+ * @param {string} name The name of this plugin.
+ * @param {object} plugin A new plugin object, derived from media.plugin.
+ */
+minplayer.plugin.prototype.addPlugin = function(name, plugin) {
+  name = name || this.name;
+  plugin = plugin || this;
+
+  // Make sure the plugin is valid.
+  if (plugin.isValid()) {
+
+    // If the plugins for this instance do not exist.
+    if (!minplayer.plugins[this.options.id]) {
+
+      // Initialize the plugins.
+      minplayer.plugins[this.options.id] = {};
+    }
+
+    if (!minplayer.plugins[this.options.id][name]) {
+
+      // Add the plugins array.
+      minplayer.plugins[this.options.id][name] = [];
+    }
+
+    // Add this plugin.
+    minplayer.plugins[this.options.id][name].push(plugin);
+
+    // Now check the queue for this plugin.
+    this.checkQueue(plugin);
+  }
+};
+
+/**
+ * Create a polling timer.
+ *
+ * @param {function} callback The function to call when you poll.
+ * @param {integer} interval The interval you would like to poll.
+ */
+minplayer.plugin.prototype.poll = function(callback, interval) {
+  setTimeout((function(context) {
+    return function callLater() {
+      if (callback.call(context)) {
+        setTimeout(callLater, interval);
+      }
+    };
+  })(this), interval);
+};
+
+/**
+ * Gets a plugin by name and calls callback when it is ready.
+ *
+ * @param {string} plugin The plugin of the plugin.
+ * @param {function} callback Called when the plugin is ready.
+ * @return {object} The plugin if no callback is provided.
+ */
+minplayer.plugin.prototype.get = function(plugin, callback) {
+
+  // If they pass just a callback, then return all plugins when ready.
+  if (typeof plugin === 'function') {
+    callback = plugin;
+    plugin = null;
+  }
+
+  // Return the minplayer.get equivalent.
+  return minplayer.get.call(this, this.options.id, plugin, callback);
+};
+
+/**
+ * Check the queue and execute it.
+ *
+ * @param {object} plugin The plugin object to check the queue against.
+ */
+minplayer.plugin.prototype.checkQueue = function(plugin) {
+
+  // Initialize our variables.
+  var q = null, i = 0, check = false, newqueue = [];
+
+  // Normalize the plugin variable.
+  plugin = plugin || this;
+
+  // Set the lock.
+  minplayer.lock = true;
+
+  // Iterate through all the queues.
+  var length = minplayer.queue.length;
+  for (i = 0; i < length; i++) {
+    if (minplayer.queue.hasOwnProperty(i)) {
+      // Get the queue.
+      q = minplayer.queue[i];
+
+      // Now check to see if this queue is about us.
+      check = !q.id && !q.plugin;
+      check |= (q.plugin == plugin.name);
+      check &= (!q.id || (q.id == this.options.id));
+
+      // If the check passes...
+      if (check) {
+        check = minplayer.bind.call(
+          q.context,
+          q.event,
+          this.options.id,
+          plugin.name,
+          q.callback
+        );
+      }
+
+      // Add the queue back if it doesn't check out.
+      if (!check) {
+
+        // Add this back to the queue.
+        newqueue.push(q);
+      }
+    }
+  }
+
+  // Set the old queue to the new queue.
+  minplayer.queue = newqueue;
+
+  // Release the lock.
+  minplayer.lock = false;
+};
+
+/**
+ * Trigger a media event.
+ *
+ * @param {string} type The event type.
+ * @param {object} data The event data object.
+ * @return {object} The plugin object.
+ */
+minplayer.plugin.prototype.trigger = function(type, data) {
+
+  // Don't trigger if this plugin is inactive.
+  if (!this.active) {
+    return this;
+  }
+
+  // Add this to our triggered array.
+  this.triggered[type] = data;
+
+  // Check to make sure the queue for this type exists.
+  if (this.queue.hasOwnProperty(type)) {
+
+    var i = 0, queue = {}, queuetype = this.queue[type];
+
+    // Iterate through all the callbacks in this queue.
+    for (i in queuetype) {
+
+      // Check to make sure the queue index exists.
+      if (queuetype.hasOwnProperty(i)) {
+
+        // Setup the event object, and call the callback.
+        queue = queuetype[i];
+        queue.callback({target: this, data: queue.data}, data);
+      }
+    }
+  }
+
+  // Return the plugin object.
+  return this;
+};
+
+/**
+ * Bind to a media event.
+ *
+ * @param {string} type The event type.
+ * @param {object} data The data to bind with the event.
+ * @param {function} fn The callback function.
+ * @return {object} The plugin object.
+ **/
+minplayer.plugin.prototype.bind = function(type, data, fn) {
+
+  // Only bind if active.
+  if (!this.active) {
+    return this;
+  }
+
+  // Allow the data to be the callback.
+  if (typeof data === 'function') {
+    fn = data;
+    data = null;
+  }
+
+  // You must bind to a specific event and have a callback.
+  if (!type || !fn) {
+    return;
+  }
+
+  // Initialize the queue for this type.
+  this.queue[type] = this.queue[type] || [];
+
+  // Unbind any existing equivalent events.
+  this.unbind(type, fn);
+
+  // Now add this event to the queue.
+  this.queue[type].push({
+    callback: fn,
+    data: data
+  });
+
+  // Now see if this event has already been triggered.
+  if (this.triggered.hasOwnProperty(type)) {
+
+    // Go ahead and trigger the event.
+    fn({target: this, data: data}, this.triggered[type]);
+  }
+
+  // Return the plugin.
+  return this;
+};
+
+/**
+ * Unbind a media event.
+ *
+ * @param {string} type The event type.
+ * @param {function} fn The callback function.
+ * @return {object} The plugin object.
+ **/
+minplayer.plugin.prototype.unbind = function(type, fn) {
+
+  // If this is locked then try again after 10ms.
+  if (this.lock) {
+    setTimeout((function(plugin) {
+      return function() {
+        plugin.unbind(type, fn);
+      };
+    })(this), 10);
+  }
+
+  // Set the lock.
+  this.lock = true;
+
+  // Get the queue type.
+  var queuetype = this.queue.hasOwnProperty(type) ? this.queue[type] : null;
+
+  if (!type) {
+    this.queue = {};
+  }
+  else if (!fn) {
+    this.queue[type] = [];
+  }
+  else if (queuetype) {
+    // Iterate through all the callbacks and search for equal callbacks.
+    var i = 0, queue = {};
+    for (i in queuetype) {
+      if (queuetype.hasOwnProperty(i)) {
+        if (queuetype[i].callback === fn) {
+          queue = this.queue[type].splice(i, 1);
+          delete queue;
+        }
+      }
+    }
+  }
+
+  // Reset the lock.
+  this.lock = false;
+
+  // Return the plugin.
+  return this;
+};
+
+/**
+ * Adds an item to the queue.
+ *
+ * @param {object} context The context which this is called within.
+ * @param {string} event The event to trigger on.
+ * @param {string} id The player ID.
+ * @param {string} plugin The name of the plugin.
+ * @param {function} callback Called when the event occurs.
+ */
+minplayer.addQueue = function(context, event, id, plugin, callback) {
+
+  // See if it is locked...
+  if (!minplayer.lock) {
+    minplayer.queue.push({
+      context: context,
+      id: id,
+      event: event,
+      plugin: plugin,
+      callback: callback
+    });
+  }
+  else {
+
+    // If so, then try again after 10 milliseconds.
+    setTimeout(function() {
+      minplayer.addQueue(context, id, event, plugin, callback);
+    }, 10);
+  }
+};
+
+/**
+ * Binds an event to a plugin instance, and if it doesn't exist, then caches
+ * it for a later time.
+ *
+ * @param {string} event The event to trigger on.
+ * @param {string} id The player ID.
+ * @param {string} plugin The name of the plugin.
+ * @param {function} callback Called when the event occurs.
+ * @return {boolean} If the bind was successful.
+ * @this The object in context who called this method.
+ */
+minplayer.bind = function(event, id, plugin, callback) {
+
+  // If no callback exists, then just return false.
+  if (!callback) {
+    return false;
+  }
+
+  // Get the plugins.
+  var plugins = minplayer.plugins;
+
+  // Determine the selected plugins.
+  var selected = [];
+
+  // Create a quick add.
+  var addSelected = function(id, plugin) {
+    if (plugins.hasOwnProperty(id) && plugins[id].hasOwnProperty(plugin)) {
+      var i = plugins[id][plugin].length;
+      while (i--) {
+        selected.push(plugins[id][plugin][i]);
+      }
+    }
+  };
+
+  // If they provide id && plugin
+  if (id && plugin) {
+    addSelected(id, plugin);
+  }
+
+  // If they provide no id but a plugin.
+  else if (!id && plugin) {
+    for (var id in plugins) {
+      addSelected(id, plugin);
+    }
+  }
+
+  // If they provide an id but no plugin.
+  else if (id && !plugin && plugins[id]) {
+    for (var plugin in plugins[id]) {
+      addSelected(id, plugin);
+    }
+  }
+
+  // If they provide niether an id or a plugin.
+  else if (!id && !plugin) {
+    for (var id in plugins) {
+      for (var plugin in plugins[id]) {
+        addSelected(id, plugin);
+      }
+    }
+  }
+
+  // Iterate through the selected plugins and bind.
+  var i = selected.length;
+  while (i--) {
+    selected[i].bind(event, (function(context) {
+      return function(event) {
+        callback.call(context, event.target);
+      };
+    })(this));
+  }
+
+  // Add it to the queue for post bindings...
+  minplayer.addQueue(this, event, id, plugin, callback);
+
+  // Return that this wasn't handled.
+  return (selected.length > 0);
+};
+
+/**
+ * The main API for minPlayer.
+ *
+ * Provided that this function takes three parameters, there are 8 different
+ * ways to use this api.
+ *
+ *   id (0x100) - You want a specific player.
+ *   plugin (0x010) - You want a specific plugin.
+ *   callback (0x001) - You only want it when it is ready.
+ *
+ *   000 - You want all plugins from all players, ready or not.
+ *
+ *          var plugins = minplayer.get();
+ *
+ *   001 - You want all plugins from all players, but only when ready.
+ *
+ *          minplayer.get(function(plugin) {
+ *            // Code goes here.
+ *          });
+ *
+ *   010 - You want a specific plugin from all players, ready or not...
+ *
+ *          var medias = minplayer.get(null, 'media');
+ *
+ *   011 - You want a specific plugin from all players, but only when ready.
+ *
+ *          minplayer.get('player', function(player) {
+ *            // Code goes here.
+ *          });
+ *
+ *   100 - You want all plugins from a specific player, ready or not.
+ *
+ *          var plugins = minplayer.get('player_id');
+ *
+ *   101 - You want all plugins from a specific player, but only when ready.
+ *
+ *          minplayer.get('player_id', null, function(plugin) {
+ *            // Code goes here.
+ *          });
+ *
+ *   110 - You want a specific plugin from a specific player, ready or not.
+ *
+ *          var plugin = minplayer.get('player_id', 'media');
+ *
+ *   111 - You want a specific plugin from a specific player, only when ready.
+ *
+ *          minplayer.get('player_id', 'media', function(media) {
+ *            // Code goes here.
+ *          });
+ *
+ * @this The context in which this function was called.
+ * @param {string} id The ID of the widget to get the plugins from.
+ * @param {string} plugin The name of the plugin.
+ * @param {function} callback Called when the plugin is ready.
+ * @return {object} The plugin object if it is immediately available.
+ */
+minplayer.get = function(id, plugin, callback) {
+
+  // Normalize the arguments for a better interface.
+  if (typeof id === 'function') {
+    callback = id;
+    plugin = id = null;
+  }
+
+  if (typeof plugin === 'function') {
+    callback = plugin;
+    plugin = id;
+    id = null;
+  }
+
+  // Make sure the callback is a callback.
+  callback = (typeof callback === 'function') ? callback : null;
+
+  // If a callback was provided, then just go ahead and bind.
+  if (callback) {
+    minplayer.bind.call(this, 'ready', id, plugin, callback);
+    return;
+  }
+
+  // Get the plugins.
+  var plugins = minplayer.plugins;
+
+  // 0x000
+  if (!id && !plugin && !callback) {
+    return plugins;
+  }
+  // 0x100
+  else if (id && !plugin && !callback) {
+    return plugins[id];
+  }
+  // 0x110
+  else if (id && plugin && !callback) {
+    return plugins[id][plugin];
+  }
+  // 0x010
+  else if (!id && plugin && !callback) {
+    var plugin_types = [];
+    for (var id in plugins) {
+      if (plugins.hasOwnProperty(id) && plugins[id].hasOwnProperty(plugin)) {
+        var i = plugins[id][plugin].length;
+        while (i--) {
+          plugin_types.push(plugins[id][plugin][i]);
+        }
+      }
+    }
+    return plugin_types;
+  }
+};
+/** The minplayer namespace. */
+minplayer = minplayer || {};
+
+/**
+ * @constructor
+ * @extends minplayer.plugin
+ * @class Base class used to provide the display and options for any component
+ * deriving from this class.  Components who derive are expected to provide
+ * the elements that they define by implementing the getElements method.
+ *
+ * @param {string} name The name of this plugin.
+ * @param {object} context The jQuery context this component resides.
+ * @param {object} options The options for this component.
+ * @param {object} queue The event queue to pass events around.
+ */
+minplayer.display = function(name, context, options, queue) {
+
+  // Derive from plugin
+  minplayer.plugin.call(this, name, context, options, queue);
+};
+
+/** Derive from minplayer.plugin. */
+minplayer.display.prototype = new minplayer.plugin();
+
+/** Reset the constructor. */
+minplayer.display.prototype.constructor = minplayer.display;
+
+/**
+ * Returns the display for this component.
+ *
+ * @return {object} The jQuery context for this display.
+ */
+minplayer.display.prototype.getDisplay = function() {
+  return this.context;
+};
+
+/**
+ * @see minplayer.plugin.construct
+ */
+minplayer.display.prototype.construct = function() {
+
+  // Set the display.
+  this.display = this.getDisplay(this.context, this.options);
+
+  // Call the plugin constructor.
+  minplayer.plugin.prototype.construct.call(this);
+
+  // Set the plugin name within the options.
+  this.options.pluginName = 'display';
+
+  // Get the display elements.
+  this.elements = this.getElements();
+
+  // Only do this if they allow resize for this display.
+  if (this.onResize) {
+
+    // Set the resize timeout and this pointer.
+    var resizeTimeout = 0;
+
+    // Add a handler to trigger a resize event.
+    jQuery(window).resize((function(display) {
+      return function() {
+        clearTimeout(resizeTimeout);
+        resizeTimeout = setTimeout(function() {
+          display.onResize();
+        }, 200);
+      };
+    })(this));
+  }
+};
+
+/**
+ * Called when the window resizes.
+ */
+minplayer.display.prototype.onResize = false;
+
+/**
+ * Wrapper around hide that will always not show.
+ *
+ * @param {object} element The element you wish to hide.
+ */
+minplayer.display.prototype.hide = function(element) {
+  element = element || this.display;
+  if (element) {
+    element.forceHide = true;
+    element.unbind().hide();
+  }
+};
+
+/**
+ * Gets the full screen element.
+ *
+ * @return {object} The display to be used for full screen support.
+ */
+minplayer.display.prototype.fullScreenElement = function() {
+  return this.display;
+};
+
+/**
+ * Fix for the click function in jQuery to be cross platform.
+ *
+ * @param {object} element The element that will be clicked.
+ * @param {function} fn Called when the element is clicked.
+ * @return {object} The element that is to be clicked.
+ */
+minplayer.click = function(element, fn) {
+  var flag = false;
+  element = jQuery(element);
+  element.bind('touchstart click', function(event) {
+    if (!flag) {
+      flag = true;
+      setTimeout(function() {
+        flag = false;
+      }, 100);
+      fn.call(this, event);
+    }
+  });
+  return element;
+};
+
+/**
+ * Determines if the player is in focus or not.
+ *
+ * @param {boolean} focus If the player is in focus.
+ */
+minplayer.display.prototype.onFocus = function(focus) {
+  this.hasFocus = this.focus = focus;
+};
+
+/** Keep track of all the show hide elements. */
+minplayer.showHideElements = [];
+
+/**
+ * Show all the show hide elements.
+ */
+minplayer.showAll = function() {
+  var i = minplayer.showHideElements.length;
+  var obj = null;
+  while (i--) {
+    obj = minplayer.showHideElements[i];
+    minplayer.showThenHide(obj.element, obj.timeout, obj.callback);
+  }
+};
+
+/**
+ * Stops the whole show then hide from happening.
+ *
+ * @param {object} element The element you want the showThenHide to stop.
+ */
+minplayer.stopShowThenHide = function(element) {
+  element = jQuery(element);
+  if (element.showTimer) {
+    clearTimeout(element.showTimer);
+  }
+  element.stopShowThenHide = true;
+  element.shown = true;
+  element.show();
+};
+
+/**
+ * Called if you would like for your display item to show then hide.
+ *
+ * @param {object} element The element you would like to hide or show.
+ * @param {number} timeout The timeout to hide and show.
+ * @param {function} callback Called when something happens.
+ */
+minplayer.showThenHide = function(element, timeout, callback) {
+
+  // If no element exists, then just return.
+  if (!element) {
+    return;
+  }
+
+  // Ensure we have a timeout.
+  timeout = timeout || 5000;
+
+  // If this has not yet been configured.
+  if (!element.showTimer) {
+    element.shown = true;
+    element.stopShowThenHide = false;
+
+    // Add this to our showHideElements.
+    minplayer.showHideElements.push({
+      element: element,
+      timeout: timeout,
+      callback: callback
+    });
+
+    // Bind to a click event.
+    minplayer.click(document, function() {
+      if (!element.stopShowThenHide) {
+        minplayer.showThenHide(element, timeout, callback);
+      }
+    });
+
+    // Bind to the mousemove event.
+    jQuery(document).bind('mousemove', function() {
+      if (!element.stopShowThenHide) {
+        minplayer.showThenHide(element, timeout, callback);
+      }
+    });
+  }
+
+  // Clear the timeout, and then setup the show then hide functionality.
+  clearTimeout(element.showTimer);
+
+  // Show the display.
+  if (!element.shown && !element.forceHide) {
+    element.shown = true;
+    element.show();
+    if (callback) {
+      callback(true);
+    }
+  }
+
+  // Set a timer to hide it after the timeout.
+  element.showTimer = setTimeout(function() {
+    element.hide('slow', function() {
+      element.shown = false;
+      if (callback) {
+        callback(false);
+      }
+    });
+  }, timeout);
+};
+
+/**
+ * Make this display element go fullscreen.
+ *
+ * @param {boolean} full Tell the player to go into fullscreen or not.
+ */
+minplayer.display.prototype.fullscreen = function(full) {
+  var isFull = this.isFullScreen();
+  var element = this.fullScreenElement();
+  if (isFull && !full) {
+    element.removeClass('fullscreen');
+    if (screenfull) {
+      screenfull.exit();
+    }
+    this.trigger('fullscreen', false);
+  }
+  else if (!isFull && full) {
+    element.addClass('fullscreen');
+    if (screenfull) {
+      screenfull.request(element[0]);
+      screenfull.onchange = (function(display) {
+        return function(e) {
+          if (!screenfull.isFullscreen) {
+            display.fullscreen(false);
+          }
+        };
+      })(this);
+    }
+    this.trigger('fullscreen', true);
+  }
+};
+
+/**
+ * Toggle fullscreen.
+ */
+minplayer.display.prototype.toggleFullScreen = function() {
+  this.fullscreen(!this.isFullScreen());
+};
+
+/**
+ * Checks to see if we are in fullscreen mode.
+ *
+ * @return {boolean} TRUE - fullscreen, FALSE - otherwise.
+ */
+minplayer.display.prototype.isFullScreen = function() {
+  return this.fullScreenElement().hasClass('fullscreen');
+};
+
+/**
+ * Returns a scaled rectangle provided a ratio and the container rect.
+ *
+ * @param {number} ratio The width/height ratio of what is being scaled.
+ * @param {object} rect The bounding rectangle for scaling.
+ * @return {object} The Rectangle object of the scaled rectangle.
+ */
+minplayer.display.prototype.getScaledRect = function(ratio, rect) {
+  var scaledRect = {};
+  scaledRect.x = rect.x ? rect.x : 0;
+  scaledRect.y = rect.y ? rect.y : 0;
+  scaledRect.width = rect.width ? rect.width : 0;
+  scaledRect.height = rect.height ? rect.height : 0;
+  if (ratio) {
+    if ((rect.width / rect.height) > ratio) {
+      scaledRect.height = rect.height;
+      scaledRect.width = Math.floor(rect.height * ratio);
+    }
+    else {
+      scaledRect.height = Math.floor(rect.width / ratio);
+      scaledRect.width = rect.width;
+    }
+    scaledRect.x = Math.floor((rect.width - scaledRect.width) / 2);
+    scaledRect.y = Math.floor((rect.height - scaledRect.height) / 2);
+  }
+  return scaledRect;
+};
+
+/**
+ * Returns all the jQuery elements that this component uses.
+ *
+ * @return {object} An object which defines all the jQuery elements that
+ * this component uses.
+ */
+minplayer.display.prototype.getElements = function() {
+  return {};
+};
+
+/**
+ * From https://github.com/sindresorhus/screenfull.js
+ */
+/*global Element:true*/
+(function(window, document) {
+  'use strict';
+  var methods = (function() {
+    var methodMap = [
+      [
+        'requestFullscreen',
+        'exitFullscreen',
+        'fullscreenchange',
+        'fullscreen',
+        'fullscreenElement'
+      ],
+      [
+        'webkitRequestFullScreen',
+        'webkitCancelFullScreen',
+        'webkitfullscreenchange',
+        'webkitIsFullScreen',
+        'webkitCurrentFullScreenElement'
+      ],
+      [
+        'mozRequestFullScreen',
+        'mozCancelFullScreen',
+        'mozfullscreenchange',
+        'mozFullScreen',
+        'mozFullScreenElement'
+      ]
+    ];
+    for (var i = 0, l = methodMap.length; i < l; i++) {
+      if (methodMap.hasOwnProperty(i)) {
+        var val = methodMap[i];
+        if (val[1] in document) {
+          return val;
+        }
+      }
+    }
+  })();
+
+  if (!methods) {
+    return window.screenfull = false;
+  }
+
+  var keyboardAllowed = 'ALLOW_KEYBOARD_INPUT' in Element;
+
+  var screenfull = {
+    init: function() {
+      document.addEventListener(methods[2], function(e) {
+        screenfull.isFullscreen = document[methods[3]];
+        screenfull.element = document[methods[4]];
+        screenfull.onchange(e);
+      });
+      return this;
+    },
+    isFullscreen: document[methods[3]],
+    element: document[methods[4]],
+    request: function(elem) {
+      elem = elem || document.documentElement;
+      elem[methods[0]](keyboardAllowed && Element.ALLOW_KEYBOARD_INPUT);
+      // Work around Safari 5.1 bug: reports support for keyboard in fullscreen
+      // even though it doesn't.
+      if (!document.isFullscreen) {
+        elem[methods[0]]();
+      }
+    },
+    exit: function() {
+      document[methods[1]]();
+    },
+    toggle: function(elem) {
+      if (this.isFullscreen) {
+        this.exit();
+      } else {
+        this.request(elem);
+      }
+    },
+    onchange: function() {}
+  };
+
+  window.screenfull = screenfull.init();
+})(window, document);
+// Add a way to instanciate using jQuery prototype.
+if (!jQuery.fn.minplayer) {
+
+  /**
+   * @constructor
+   *
+   * Define a jQuery minplayer prototype.
+   *
+   * @param {object} options The options for this jQuery prototype.
+   * @return {Array} jQuery object.
+   */
+  jQuery.fn.minplayer = function(options) {
+    return jQuery(this).each(function() {
+      options = options || {};
+      options.id = options.id || jQuery(this).attr('id') || Math.random();
+      if (!minplayer.plugins[options.id]) {
+        options.template = options.template || 'default';
+        if (minplayer[options.template]) {
+          new minplayer[options.template](jQuery(this), options);
+        }
+        else {
+          new minplayer(jQuery(this), options);
+        }
+      }
+    });
+  };
+}
+
+/**
+ * @constructor
+ * @extends minplayer.display
+ * @class The core media player class which governs the media player
+ * functionality.
+ *
+ * <p><strong>Usage:</strong>
+ * <pre><code>
+ *
+ *   // Create a media player.
+ *   var player = jQuery("#player").minplayer({
+ *
+ *   });
+ *
+ * </code></pre>
+ * </p>
+ *
+ * @param {object} context The jQuery context.
+ * @param {object} options This components options.
+ */
+minplayer = jQuery.extend(function(context, options) {
+
+  // Derive from display
+  minplayer.display.call(this, 'player', context, options);
+}, minplayer);
+
+/** Derive from minplayer.display. */
+minplayer.prototype = new minplayer.display();
+
+/** Reset the constructor. */
+minplayer.prototype.constructor = minplayer;
+
+/**
+ * @see minplayer.plugin.construct
+ */
+minplayer.prototype.construct = function() {
+
+  // Allow them to provide arguments based off of the DOM attributes.
+  jQuery.each(this.context[0].attributes, (function(player) {
+    return function(index, attr) {
+      player.options[attr.name] = player.options[attr.name] || attr.value;
+    };
+  })(this));
+
+  // Make sure we provide default options...
+  this.options = jQuery.extend({
+    id: 'player',
+    build: false,
+    wmode: 'transparent',
+    preload: true,
+    autoplay: false,
+    autoload: true,
+    loop: false,
+    width: '100%',
+    height: '350px',
+    debug: false,
+    volume: 80,
+    files: null,
+    file: '',
+    preview: '',
+    attributes: {},
+    logo: '',
+    link: '',
+    width: '100%',
+    height: '100%'
+  }, this.options);
+
+  // Call the minplayer display constructor.
+  minplayer.display.prototype.construct.call(this);
+
+  // Set the plugin name within the options.
+  this.options.pluginName = 'player';
+
+  /** The controller for this player. */
+  this.controller = this.create('controller');
+
+  /** The play loader for this player. */
+  this.playLoader = this.create('playLoader');
+
+  // Set the focus of the element based on if they click in or outside of it.
+  minplayer.click(document, (function(player) {
+    return function(event) {
+      var target = jQuery(event.target);
+      var focus = !(target.closest('#' + player.options.id).length == 0);
+      minplayer.get.call(this, player.options.id, null, function(plugin) {
+        plugin.onFocus(focus);
+      });
+    };
+  })(this));
+
+  /** Add the logo for the player. */
+  if (this.options.logo && this.elements.logo) {
+
+    var code = '';
+    if (this.options.link) {
+      code += '<a target="_blank" href="' + this.options.link + '">';
+    }
+    code += '<img src="' + this.options.logo + '" >';
+    if (this.options.link) {
+      code += '</a>';
+    }
+    this.logo = this.elements.logo.append(code);
+  }
+
+  /** Variable to store the current media player. */
+  this.currentPlayer = 'html5';
+
+  // Add key events to the window.
+  this.addKeyEvents();
+
+  // Called to add events.
+  this.addEvents();
+
+  // Now load these files.
+  this.load(this.getFiles());
+
+  // The player is ready.
+  this.ready();
+};
+
+/**
+ * Called when an error occurs.
+ *
+ * @param {object} plugin The plugin you wish to bind to.
+ */
+minplayer.prototype.bindTo = function(plugin) {
+  plugin.bind('error', (function(player) {
+    return function(event, data) {
+      if (player.currentPlayer == 'html5') {
+        minplayer.player = 'minplayer';
+        player.options.file.player = 'minplayer';
+        player.loadPlayer();
+      }
+      else {
+        player.showError(data);
+      }
+    };
+  })(this));
+
+  // Bind to the fullscreen event.
+  plugin.bind('fullscreen', (function(player) {
+    return function(event, data) {
+      player.resize();
+    };
+  })(this));
+};
+
+/**
+ * We need to bind to events we are interested in.
+ */
+minplayer.prototype.addEvents = function() {
+  minplayer.get.call(this, this.options.id, null, (function(player) {
+    return function(plugin) {
+      player.bindTo(plugin);
+    };
+  })(this));
+};
+
+/**
+ * Sets an error on the player.
+ *
+ * @param {string} error The error to display on the player.
+ */
+minplayer.prototype.showError = function(error) {
+  if (typeof error !== 'object') {
+    error = error || '';
+    if (this.elements.error) {
+
+      // Set the error text.
+      this.elements.error.text(error);
+      if (error) {
+        // Show the error message.
+        this.elements.error.show();
+
+        // Only show this error for a time interval.
+        setTimeout((function(player) {
+          return function() {
+            player.elements.error.hide('slow');
+          };
+        })(this), 5000);
+      }
+      else {
+        this.elements.error.hide();
+      }
+    }
+  }
+};
+
+/**
+ * Adds key events to the player.
+ */
+minplayer.prototype.addKeyEvents = function() {
+  jQuery(document).bind('keydown', (function(player) {
+    return function(event) {
+      switch (event.keyCode) {
+        case 113: // ESC
+        case 27:  // Q
+          if (player.isFullScreen()) {
+            player.fullscreen(false);
+          }
+          break;
+      }
+    };
+  })(this));
+};
+
+/**
+ * Returns all the media files available for this player.
+ *
+ * @return {array} All the media files for this player.
+ */
+minplayer.prototype.getFiles = function() {
+
+  // If they provide the files in the options, use those first.
+  if (this.options.files) {
+    return this.options.files;
+  }
+
+  if (this.options.file) {
+    return this.options.file;
+  }
+
+  var files = [];
+  var mediaSrc = null;
+
+  // Get the files involved...
+  if (this.elements.media) {
+    mediaSrc = this.elements.media.attr('src');
+    if (mediaSrc) {
+      files.push({'path': mediaSrc});
+    }
+    jQuery('source', this.elements.media).each(function() {
+      files.push({
+        'path': jQuery(this).attr('src'),
+        'mimetype': jQuery(this).attr('type'),
+        'codecs': jQuery(this).attr('codecs')
+      });
+    });
+  }
+
+  return files;
+};
+
+/**
+ * Returns the full media player object.
+ *
+ * @param {array} files An array of files to chose from.
+ * @return {object} The best media file to play in the current browser.
+ */
+minplayer.getMediaFile = function(files) {
+
+  // If there are no files then return null.
+  if (!files) {
+    return null;
+  }
+
+  // If the file is already a file object then just return.
+  if ((typeof files === 'string') || files.path || files.id) {
+    return new minplayer.file(files);
+  }
+
+  // Add the files and get the best player to play.
+  var bestPriority = 0, mFile = null, file = null;
+  for (var i in files) {
+    if (files.hasOwnProperty(i)) {
+      file = new minplayer.file(files[i]);
+      if (file.player && (file.priority > bestPriority)) {
+        mFile = file;
+      }
+    }
+  }
+
+  // Return the best minplayer file.
+  return mFile;
+};
+
+/**
+ * Loads a media player based on the current file.
+ *
+ * @return {boolean} If a new player was loaded.
+ */
+minplayer.prototype.loadPlayer = function() {
+
+  // Do nothing if there isn't a file or anywhere to put it.
+  if (!this.options.file || (this.elements.display.length == 0)) {
+    return false;
+  }
+
+  // If no player is set, then also return false.
+  if (!this.options.file.player) {
+    return false;
+  }
+
+  // Reset the error.
+  this.showError();
+
+  // Only destroy if the current player is different than the new player.
+  var player = this.options.file.player.toString();
+
+  // If there isn't media or if the players are different.
+  if (!this.media || (player !== this.currentPlayer)) {
+
+    // Set the current media player.
+    this.currentPlayer = player;
+
+    // Do nothing if we don't have a display.
+    if (!this.elements.display) {
+      this.showError('No media display found.');
+      return;
+    }
+
+    // Destroy the current media.
+    var queue = {};
+    if (this.media) {
+      queue = this.media.queue;
+      this.media.destroy();
+    }
+
+    // Get the class name and create the new player.
+    pClass = minplayer.players[this.options.file.player];
+
+    // Create the new media player.
+    this.options.mediaelement = this.elements.media;
+    this.media = new pClass(this.elements.display, this.options, queue);
+
+    // Now get the media when it is ready.
+    this.get('media', (function(player) {
+      return function(media) {
+
+        // Load the media.
+        media.load(player.options.file);
+        player.display.addClass('minplayer-player-' + media.mediaFile.player);
+      };
+    })(this));
+
+    // Return that a new player is loaded.
+    return true;
+  }
+  // If the media object already exists...
+  else if (this.media) {
+
+    // Now load the different media file.
+    this.media.options = this.options;
+    this.display.removeClass('minplayer-player-' + this.media.mediaFile.player);
+    this.media.load(this.options.file);
+    this.display.addClass('minplayer-player-' + this.media.mediaFile.player);
+    return false;
+  }
+};
+
+/**
+ * Load a set of files or a single file for the media player.
+ *
+ * @param {array} files An array of files to chose from to load.
+ */
+minplayer.prototype.load = function(files) {
+
+  // Set the id and class.
+  var id = '', pClass = '';
+
+  // If no file was provided, then get it.
+  this.options.files = files || this.options.files;
+  this.options.file = minplayer.getMediaFile(this.options.files);
+
+  // Now load the player.
+  if (this.loadPlayer()) {
+
+    // Add the events since we now have a player.
+    this.bindTo(this.media);
+
+    // If the player isn't valid, then show an error.
+    if (this.options.file.mimetype && !this.options.file.player) {
+      this.showError('Cannot play media: ' + this.options.file.mimetype);
+    }
+  }
+};
+
+/**
+ * Called when the player is resized.
+ */
+minplayer.prototype.resize = function() {
+
+  // Call onRezie for each plugin.
+  this.get(function(plugin) {
+    if (plugin.onResize) {
+      plugin.onResize();
+    }
+  });
+};
+/** The minplayer namespace. */
+var minplayer = minplayer || {};
+
+/**
+ * @constructor
+ * @class A class to easily handle images.
+ * @param {object} context The jQuery context.
+ * @param {object} options This components options.
+ */
+minplayer.image = function(context, options) {
+
+  // Determine if the image is loaded.
+  this.loaded = false;
+
+  // The image loader.
+  this.loader = null;
+
+  // The ratio of the image.
+  this.ratio = 0;
+
+  // The image element.
+  this.img = null;
+
+  // Derive from display
+  minplayer.display.call(this, 'image', context, options);
+};
+
+/** Derive from minplayer.display. */
+minplayer.image.prototype = new minplayer.display();
+
+/** Reset the constructor. */
+minplayer.image.prototype.constructor = minplayer.image;
+
+/**
+ * @see minplayer.plugin.construct
+ */
+minplayer.image.prototype.construct = function() {
+
+  // Call the media display constructor.
+  minplayer.display.prototype.construct.call(this);
+
+  // Set the plugin name within the options.
+  this.options.pluginName = 'image';
+
+  // Set the container to not show any overflow...
+  this.display.css('overflow', 'hidden');
+
+  /** The loader for the image. */
+  this.loader = new Image();
+
+  /** Register for when the image is loaded within the loader. */
+  this.loader.onload = (function(image) {
+    return function() {
+      image.loaded = true;
+      image.ratio = (image.loader.width / image.loader.height);
+      image.resize();
+      image.trigger('loaded');
+    };
+  })(this);
+
+  // We are now ready.
+  this.ready();
+};
+
+/**
+ * Loads an image.
+ *
+ * @param {string} src The source of the image to load.
+ */
+minplayer.image.prototype.load = function(src) {
+
+  // First clear the previous image.
+  this.clear(function() {
+
+    // Create the new image, and append to the display.
+    this.display.empty();
+    this.img = jQuery(document.createElement('img')).attr({src: ''}).hide();
+    this.display.append(this.img);
+    this.loader.src = src;
+    this.img.attr('src', src);
+  });
+};
+
+/**
+ * Clears an image.
+ *
+ * @param {function} callback Called when the image is done clearing.
+ */
+minplayer.image.prototype.clear = function(callback) {
+  this.loaded = false;
+  if (this.img) {
+    this.img.fadeOut((function(image) {
+      return function() {
+        image.img.attr('src', '');
+        image.loader.src = '';
+        jQuery(this).remove();
+        callback.call(image);
+      };
+    })(this));
+  }
+  else {
+    callback.call(this);
+  }
+};
+
+/**
+ * Resize the image provided a width and height or nothing.
+ *
+ * @param {integer} width (optional) The width of the container.
+ * @param {integer} height (optional) The height of the container.
+ */
+minplayer.image.prototype.resize = function(width, height) {
+  width = width || this.display.parent().width();
+  height = height || this.display.parent().height();
+  if (width && height && this.loaded) {
+
+    // Get the scaled rectangle.
+    var rect = this.getScaledRect(this.ratio, {
+      width: width,
+      height: height
+    });
+
+    // Now set this image to the new size.
+    if (this.img) {
+      this.img.attr('src', this.loader.src).css({
+        marginLeft: rect.x,
+        marginTop: rect.y,
+        width: rect.width,
+        height: rect.height
+      });
+    }
+
+    // Show the container.
+    this.img.fadeIn();
+  }
+};
+
+/**
+ * @see minplayer.display#onResize
+ */
+minplayer.image.prototype.onResize = function() {
+
+  // Resize the image to fit.
+  this.resize();
+};
+/** The minplayer namespace. */
+var minplayer = minplayer || {};
+
+/**
+ * @constructor
+ * @class A wrapper class used to provide all the data necessary to control an
+ * individual file within this media player.
+ *
+ * @param {object} file A media file object with minimal required information.
+ */
+minplayer.file = function(file) {
+
+  // If there isn't a file provided, then just return null.
+  if (!file) {
+    return null;
+  }
+
+  file = (typeof file === 'string') ? {path: file} : file;
+
+  // If we already are a minplayer file, then just return this file.
+  if (file.hasOwnProperty('isMinPlayerFile')) {
+    return file;
+  }
+
+  this.isMinPlayerFile = true;
+  this.duration = file.duration || 0;
+  this.bytesTotal = file.bytesTotal || 0;
+  this.quality = file.quality || 0;
+  this.stream = file.stream || '';
+  this.path = file.path || '';
+  this.codecs = file.codecs || '';
+
+  // These should be provided, but just in case...
+  this.extension = file.extension || this.getFileExtension();
+  this.mimetype = file.mimetype || file.filemime || this.getMimeType();
+  this.type = file.type || this.getType();
+
+  // Fail safe to try and guess the mimetype and media type.
+  if (!this.type) {
+    this.mimetype = this.getMimeType();
+    this.type = this.getType();
+  }
+
+  // Get the player.
+  this.player = minplayer.player || file.player || this.getBestPlayer();
+  this.priority = file.priority || this.getPriority();
+  this.id = file.id || this.getId();
+  if (!this.path) {
+    this.path = this.id;
+  }
+};
+
+/** Used to force the player for all media. */
+minplayer.player = '';
+
+/**
+ * Returns the best player for the job.
+ *
+ * @return {string} The best player to play the media file.
+ */
+minplayer.file.prototype.getBestPlayer = function() {
+  var bestplayer = null, bestpriority = 0;
+  jQuery.each(minplayer.players, (function(file) {
+    return function(name, player) {
+      var priority = player.getPriority();
+      if (player.canPlay(file) && (priority > bestpriority)) {
+        bestplayer = name;
+        bestpriority = priority;
+      }
+    };
+  })(this));
+  return bestplayer;
+};
+
+/**
+ * The priority of this file is determined by the priority of the best
+ * player multiplied by the priority of the mimetype.
+ *
+ * @return {integer} The priority of the media file.
+ */
+minplayer.file.prototype.getPriority = function() {
+  var priority = 1;
+  if (this.player) {
+    priority = minplayer.players[this.player].getPriority();
+  }
+  switch (this.mimetype) {
+    case 'video/x-webm':
+    case 'video/webm':
+    case 'application/octet-stream':
+      return priority * 10;
+    case 'video/mp4':
+    case 'audio/mp4':
+    case 'audio/mpeg':
+      return priority * 9;
+    case 'video/ogg':
+    case 'audio/ogg':
+    case 'video/quicktime':
+      return priority * 8;
+    default:
+      return priority * 5;
+  }
+};
+
+/**
+ * Returns the file extension of the file path.
+ *
+ * @return {string} The file extension.
+ */
+minplayer.file.prototype.getFileExtension = function() {
+  return this.path.substring(this.path.lastIndexOf('.') + 1).toLowerCase();
+};
+
+/**
+ * Returns the proper mimetype based off of the extension.
+ *
+ * @return {string} The mimetype of the file based off of extension.
+ */
+minplayer.file.prototype.getMimeType = function() {
+  switch (this.extension) {
+    case 'mp4': case 'm4v': case 'flv': case 'f4v':
+      return 'video/mp4';
+    case'webm':
+      return 'video/webm';
+    case 'ogg': case 'ogv':
+      return 'video/ogg';
+    case '3g2':
+      return 'video/3gpp2';
+    case '3gpp':
+    case '3gp':
+      return 'video/3gpp';
+    case 'mov':
+      return 'video/quicktime';
+    case'swf':
+      return 'application/x-shockwave-flash';
+    case 'oga':
+      return 'audio/ogg';
+    case 'mp3':
+      return 'audio/mpeg';
+    case 'm4a': case 'f4a':
+      return 'audio/mp4';
+    case 'aac':
+      return 'audio/aac';
+    case 'wav':
+      return 'audio/vnd.wave';
+    case 'wma':
+      return 'audio/x-ms-wma';
+    default:
+      return 'unknown';
+  }
+};
+
+/**
+ * The type of media this is: video or audio.
+ *
+ * @return {string} "video" or "audio" based on what the type of media this
+ * is.
+ */
+minplayer.file.prototype.getType = function() {
+  var type = this.mimetype.match(/([^\/]+)(\/)/);
+  type = (type && (type.length > 1)) ? type[1] : '';
+  if (type == 'video' || this.mimetype == 'application/octet-stream') {
+    return 'video';
+  }
+  if (type == 'audio') {
+    return 'audio';
+  }
+  return '';
+};
+
+/**
+ * Returns the ID for this media file.
+ *
+ * @return {string} The id for this media file which is provided by the player.
+ */
+minplayer.file.prototype.getId = function() {
+  var player = minplayer.players[this.player];
+  return (player && player.getMediaId) ? player.getMediaId(this) : '';
+};
+/** The minplayer namespace. */
+var minplayer = minplayer || {};
+
+/**
+ * @constructor
+ * @extends minplayer.display
+ * @class The play loader base class, which is used to control the busy
+ * cursor, big play button, and the opaque background which shows when the
+ * player is paused.
+ *
+ * @param {object} context The jQuery context.
+ * @param {object} options This components options.
+ */
+minplayer.playLoader = function(context, options) {
+
+  // Define the flags that control the busy cursor.
+  this.busy = new minplayer.flags();
+
+  // Define the flags that control the big play button.
+  this.bigPlay = new minplayer.flags();
+
+  // Define the flags the control the preview.
+  this.previewFlag = new minplayer.flags();
+
+  /** The preview image. */
+  this.preview = null;
+
+  /** If the playLoader is enabled. */
+  this.enabled = true;
+
+  // Derive from display
+  minplayer.display.call(this, 'playLoader', context, options);
+};
+
+/** Derive from minplayer.display. */
+minplayer.playLoader.prototype = new minplayer.display();
+
+/** Reset the constructor. */
+minplayer.playLoader.prototype.constructor = minplayer.playLoader;
+
+/**
+ * The constructor.
+ */
+minplayer.playLoader.prototype.construct = function() {
+
+  // Call the media display constructor.
+  minplayer.display.prototype.construct.call(this);
+
+  // Set the plugin name within the options.
+  this.options.pluginName = 'playLoader';
+
+  // Get the media plugin.
+  this.initialize();
+
+  // We are now ready.
+  this.ready();
+};
+
+/**
+ * Initialize the playLoader.
+ */
+minplayer.playLoader.prototype.initialize = function() {
+
+  // Get the media plugin.
+  this.get('media', function(media) {
+
+    // Only bind if this player does not have its own play loader.
+    if (!media.hasPlayLoader(this.options.preview)) {
+
+      // Enable the playLoader.
+      this.enabled = true;
+
+      // Get the poster image.
+      if (!this.options.preview) {
+        this.options.preview = media.elements.media.attr('poster');
+      }
+
+      // Reset the media's poster image.
+      media.elements.media.attr('poster', '');
+
+      // Load the preview image.
+      this.loadPreview();
+
+      // Trigger a play event when someone clicks on the controller.
+      if (this.elements.bigPlay) {
+        minplayer.click(this.elements.bigPlay.unbind(), function(event) {
+          event.preventDefault();
+          minplayer.showAll();
+          jQuery(this).hide();
+          media.play();
+        });
+      }
+
+      // Bind to the player events to control the play loader.
+      media.unbind('loadstart').bind('loadstart', (function(playLoader) {
+        return function(event) {
+          playLoader.busy.setFlag('media', true);
+          playLoader.bigPlay.setFlag('media', true);
+          playLoader.previewFlag.setFlag('media', true);
+          playLoader.checkVisibility();
+        };
+      })(this));
+      media.bind('waiting', (function(playLoader) {
+        return function(event) {
+          playLoader.busy.setFlag('media', true);
+          playLoader.checkVisibility();
+        };
+      })(this));
+      media.bind('loadeddata', (function(playLoader) {
+        return function(event) {
+          playLoader.busy.setFlag('media', false);
+          playLoader.checkVisibility();
+        };
+      })(this));
+      media.bind('playing', (function(playLoader) {
+        return function(event) {
+          playLoader.busy.setFlag('media', false);
+          playLoader.bigPlay.setFlag('media', false);
+          if (media.mediaFile.type !== 'audio') {
+            playLoader.previewFlag.setFlag('media', false);
+          }
+          playLoader.checkVisibility();
+        };
+      })(this));
+      media.bind('pause', (function(playLoader) {
+        return function(event) {
+          playLoader.bigPlay.setFlag('media', true);
+          playLoader.checkVisibility();
+        };
+      })(this));
+    }
+    else {
+
+      // Hide the display.
+      this.enabled = false;
+      this.hide(this.elements.busy);
+      this.hide(this.elements.bigPlay);
+      this.hide(this.elements.preview);
+      this.hide();
+    }
+  });
+};
+
+/**
+ * Loads the preview image.
+ */
+minplayer.playLoader.prototype.loadPreview = function() {
+
+  // Ignore if disabled.
+  if (!this.enabled) {
+    return;
+  }
+
+  // If the preview element exists.
+  if (this.elements.preview) {
+
+    // If there is a preview to show...
+    if (this.options.preview) {
+
+      // Say that this has a preview.
+      this.elements.preview.addClass('has-preview').show();
+
+      // Create a new preview image.
+      this.preview = new minplayer.image(this.elements.preview, this.options);
+
+      // Create the image.
+      this.preview.load(this.options.preview);
+    }
+    else {
+
+      // Hide the preview.
+      this.elements.preview.hide();
+    }
+  }
+};
+
+/**
+ * Hide or show certain elements based on the state of the busy and big play
+ * button.
+ */
+minplayer.playLoader.prototype.checkVisibility = function() {
+
+  // Ignore if disabled.
+  if (!this.enabled) {
+    return;
+  }
+
+  // Hide or show the busy cursor based on the flags.
+  if (this.busy.flag) {
+    this.elements.busy.show();
+  }
+  else {
+    this.elements.busy.hide();
+  }
+
+  // Hide or show the big play button based on the flags.
+  if (this.bigPlay.flag) {
+    this.elements.bigPlay.show();
+  }
+  else {
+    this.elements.bigPlay.hide();
+  }
+
+  if (this.previewFlag.flag) {
+    this.elements.preview.show();
+  }
+  else {
+    this.elements.preview.hide();
+  }
+
+  // Show the control either flag is set.
+  if (this.bigPlay.flag || this.busy.flag || this.previewFlag.flag) {
+    this.display.show();
+  }
+
+  // Hide the whole control if both flags are 0.
+  if (!this.bigPlay.flag && !this.busy.flag && !this.previewFlag.flag) {
+    this.display.hide();
+  }
+};
+/** The minplayer namespace. */
+var minplayer = minplayer || {};
+
+/** All the media player implementations */
+minplayer.players = minplayer.players || {};
+
+/**
+ * @constructor
+ * @extends minplayer.display
+ * @class The base media player class where all media players derive from.
+ *
+ * @param {object} context The jQuery context.
+ * @param {object} options This components options.
+ * @param {object} queue The event queue to pass events around.
+ */
+minplayer.players.base = function(context, options, queue) {
+
+  // Derive from display
+  minplayer.display.call(this, 'media', context, options, queue);
+};
+
+/** Derive from minplayer.display. */
+minplayer.players.base.prototype = new minplayer.display();
+
+/** Reset the constructor. */
+minplayer.players.base.prototype.constructor = minplayer.players.base;
+
+/**
+ * @see minplayer.display.getElements
+ * @this minplayer.players.base
+ * @return {object} The elements for this display.
+ */
+minplayer.players.base.prototype.getElements = function() {
+  var elements = minplayer.display.prototype.getElements.call(this);
+  return jQuery.extend(elements, {
+    media: this.options.mediaelement
+  });
+};
+
+/**
+ * Get the priority of this media player.
+ *
+ * @return {number} The priority of this media player.
+ */
+minplayer.players.base.getPriority = function() {
+  return 0;
+};
+
+/**
+ * Returns the ID for the media being played.
+ *
+ * @param {object} file A {@link minplayer.file} object.
+ * @return {string} The ID for the provided media.
+ */
+minplayer.players.base.getMediaId = function(file) {
+  return '';
+};
+
+/**
+ * Determine if we can play the media file.
+ *
+ * @param {object} file A {@link minplayer.file} object.
+ * @return {boolean} If this player can play this media type.
+ */
+minplayer.players.base.canPlay = function(file) {
+  return false;
+};
+
+/**
+ * @see minplayer.plugin.construct
+ * @this minplayer.players.base
+ */
+minplayer.players.base.prototype.construct = function() {
+
+  // Call the media display constructor.
+  minplayer.display.prototype.construct.call(this);
+
+  // Set the plugin name within the options.
+  this.options.pluginName = 'basePlayer';
+
+  /** The currently loaded media file. */
+  this.mediaFile = this.options.file;
+
+  // Clear the media player.
+  this.clear();
+
+  // Get the player display object.
+  if (!this.playerFound()) {
+
+    // Add the new player.
+    this.addPlayer();
+  }
+
+  // Get the player object...
+  this.player = this.getPlayer();
+
+  // Toggle playing if they click.
+  minplayer.click(this.display, (function(player) {
+    return function() {
+      minplayer.showAll();
+      if (player.playing) {
+        player.pause();
+      }
+      else {
+        player.play();
+      }
+    };
+  })(this));
+
+  // Bind to key events...
+  jQuery(document).bind('keydown', (function(player) {
+    return function(event) {
+      if (player.hasFocus) {
+        event.preventDefault();
+        switch (event.keyCode) {
+          case 32:  // SPACE
+          case 179: // GOOGLE play/pause button.
+            if (player.playing) {
+              player.pause();
+            }
+            else {
+              player.play();
+            }
+            break;
+          case 38:  // UP
+            player.setVolumeRelative(0.1);
+            break;
+          case 40:  // DOWN
+            player.setVolumeRelative(-0.1);
+            break;
+          case 37:  // LEFT
+          case 227: // GOOGLE TV REW
+            player.seekRelative(-0.05);
+            break;
+          case 39:  // RIGHT
+          case 228: // GOOGLE TV FW
+            player.seekRelative(0.05);
+            break;
+        }
+      }
+    };
+  })(this));
+};
+
+/**
+ * Adds the media player.
+ */
+minplayer.players.base.prototype.addPlayer = function() {
+
+  // Remove the media element if found
+  if (this.elements.media) {
+    this.elements.media.remove();
+  }
+
+  // Create a new media player element.
+  this.elements.media = jQuery(this.create());
+  this.display.html(this.elements.media);
+};
+
+/**
+ * @see minplayer.plugin.destroy.
+ */
+minplayer.players.base.prototype.destroy = function() {
+  minplayer.plugin.prototype.destroy.call(this);
+  this.clear();
+};
+
+/**
+ * Clears the media player.
+ */
+minplayer.players.base.prototype.clear = function() {
+
+  // Reset the ready flag.
+  this.playerReady = false;
+
+  // Reset the player.
+  this.reset();
+
+  // If the player exists, then unbind all events.
+  if (this.player) {
+    jQuery(this.player).unbind();
+  }
+};
+
+/**
+ * Resets all variables.
+ */
+minplayer.players.base.prototype.reset = function() {
+
+  // The duration of the player.
+  this.duration = new minplayer.async();
+
+  // The current play time of the player.
+  this.currentTime = new minplayer.async();
+
+  // The amount of bytes loaded in the player.
+  this.bytesLoaded = new minplayer.async();
+
+  // The total amount of bytes for the media.
+  this.bytesTotal = new minplayer.async();
+
+  // The bytes that the download started with.
+  this.bytesStart = new minplayer.async();
+
+  // The current volume of the player.
+  this.volume = new minplayer.async();
+
+  // Reset focus.
+  this.hasFocus = false;
+
+  // We are not playing.
+  this.playing = false;
+
+  // We are not loading.
+  this.loading = false;
+
+  // Tell everyone else we reset.
+  this.trigger('pause');
+  this.trigger('waiting');
+  this.trigger('progress', {loaded: 0, total: 0, start: 0});
+  this.trigger('timeupdate', {currentTime: 0, duration: 0});
+};
+
+/**
+ * Called when the player is ready to recieve events and commands.
+ */
+minplayer.players.base.prototype.onReady = function() {
+
+  // Only continue if we are not already ready.
+  if (this.playerReady) {
+    return;
+  }
+
+  // Set the ready flag.
+  this.playerReady = true;
+
+  // Set the volume to the default.
+  this.setVolume(this.options.volume / 100);
+
+  // Setup the progress interval.
+  this.loading = true;
+
+  // Create a poll to get the progress.
+  this.poll((function(player) {
+    return function() {
+
+      // Only do this if the play interval is set.
+      if (player.loading) {
+
+        // Get the bytes loaded asynchronously.
+        player.getBytesLoaded(function(bytesLoaded) {
+
+          // Get the bytes total asynchronously.
+          player.getBytesTotal(function(bytesTotal) {
+
+            // Trigger an event about the progress.
+            if (bytesLoaded || bytesTotal) {
+
+              // Get the bytes start, but don't require it.
+              var bytesStart = 0;
+              player.getBytesStart(function(val) {
+                bytesStart = val;
+              });
+
+              // Trigger a progress event.
+              player.trigger('progress', {
+                loaded: bytesLoaded,
+                total: bytesTotal,
+                start: bytesStart
+              });
+
+              // Say we are not longer loading if they are equal.
+              if (bytesLoaded >= bytesTotal) {
+                player.loading = false;
+              }
+            }
+          });
+        });
+      }
+
+      // Keep polling as long as its loading...
+      return player.loading;
+    };
+  })(this), 1000);
+
+  // We are now ready.
+  this.ready();
+
+  // Trigger that the load has started.
+  this.trigger('loadstart');
+};
+
+/**
+ * Should be called when the media is playing.
+ */
+minplayer.players.base.prototype.onPlaying = function() {
+
+  // Trigger an event that we are playing.
+  this.trigger('playing');
+
+  // Say that this player has focus.
+  this.hasFocus = true;
+
+  // Set the playInterval to true.
+  this.playing = true;
+
+  // Create a poll to get the timeupate.
+  this.poll((function(player) {
+    return function() {
+
+      // Only do this if the play interval is set.
+      if (player.playing) {
+
+        // Get the current time asyncrhonously.
+        player.getCurrentTime(function(currentTime) {
+
+          // Get the duration asynchronously.
+          player.getDuration(function(duration) {
+
+            // Convert these to floats.
+            currentTime = parseFloat(currentTime);
+            duration = parseFloat(duration);
+
+            // Trigger an event about the progress.
+            if (currentTime || duration) {
+
+              // Trigger an update event.
+              player.trigger('timeupdate', {
+                currentTime: currentTime,
+                duration: duration
+              });
+            }
+          });
+        });
+      }
+
+      // Keep polling as long as it is playing.
+      return player.playing;
+    };
+  })(this), 1000);
+};
+
+/**
+ * Should be called when the media is paused.
+ */
+minplayer.players.base.prototype.onPaused = function() {
+
+  // Trigger an event that we are paused.
+  this.trigger('pause');
+
+  // Remove focus.
+  this.hasFocus = false;
+
+  // Say we are not playing.
+  this.playing = false;
+};
+
+/**
+ * Should be called when the media is complete.
+ */
+minplayer.players.base.prototype.onComplete = function() {
+  if (this.playing) {
+    this.onPaused();
+  }
+
+  // Stop the intervals.
+  this.playing = false;
+  this.loading = false;
+  this.hasFocus = false;
+  this.trigger('ended');
+};
+
+/**
+ * Should be called when the media is done loading.
+ */
+minplayer.players.base.prototype.onLoaded = function() {
+
+  // If we should autoplay, then just play now.
+  if (this.options.autoplay) {
+    this.play();
+  }
+
+  this.trigger('loadeddata');
+};
+
+/**
+ * Should be called when the player is waiting.
+ */
+minplayer.players.base.prototype.onWaiting = function() {
+  this.trigger('waiting');
+};
+
+/**
+ * Called when an error occurs.
+ *
+ * @param {string} errorCode The error that was triggered.
+ */
+minplayer.players.base.prototype.onError = function(errorCode) {
+  this.hasFocus = false;
+  this.trigger('error', errorCode);
+};
+
+/**
+ * @see minplayer.players.base#isReady
+ * @return {boolean} Checks to see if the Flash is ready.
+ */
+minplayer.players.base.prototype.isReady = function() {
+
+  // Return that the player is set and the ready flag is good.
+  return (this.player && this.playerReady);
+};
+
+/**
+ * Determines if the player should show the playloader.
+ *
+ * @param {string} preview The preview image.
+ * @return {bool} If this player implements its own playLoader.
+ */
+minplayer.players.base.prototype.hasPlayLoader = function(preview) {
+  return false;
+};
+
+/**
+ * Determines if the player should show the controller.
+ *
+ * @return {bool} If this player implements its own controller.
+ */
+minplayer.players.base.prototype.hasController = function() {
+  return false;
+};
+
+/**
+ * Returns if the media player is already within the DOM.
+ *
+ * @return {boolean} TRUE - if the player is in the DOM, FALSE otherwise.
+ */
+minplayer.players.base.prototype.playerFound = function() {
+  return false;
+};
+
+/**
+ * Creates the media player and inserts it in the DOM.
+ *
+ * @return {object} The media player entity.
+ */
+minplayer.players.base.prototype.create = function() {
+  this.reset();
+  return null;
+};
+
+/**
+ * Returns the media player object.
+ *
+ * @return {object} The media player object.
+ */
+minplayer.players.base.prototype.getPlayer = function() {
+  return this.player;
+};
+
+/**
+ * Loads a new media player.
+ *
+ * @param {object} file A {@link minplayer.file} object.
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.base.prototype.load = function(file) {
+
+  // Store the media file for future lookup.
+  var isString = (typeof this.mediaFile == 'string');
+  var path = isString ? this.mediaFile : this.mediaFile.path;
+  if (file && this.isReady() && (file.path != path)) {
+    this.reset();
+    this.mediaFile = file;
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * Play the loaded media file.
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.base.prototype.play = function() {
+  return this.isReady();
+};
+
+/**
+ * Pause the loaded media file.
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.base.prototype.pause = function() {
+  return this.isReady();
+};
+
+/**
+ * Stop the loaded media file.
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.base.prototype.stop = function() {
+  this.playing = false;
+  this.loading = false;
+  this.hasFocus = false;
+  return this.isReady();
+};
+
+/**
+ * Seeks to relative position.
+ *
+ * @param {number} pos Relative position.  -1 to 1 (percent), > 1 (seconds).
+ */
+minplayer.players.base.prototype.seekRelative = function(pos) {
+
+  // Get the current time asyncrhonously.
+  this.getCurrentTime((function(player) {
+    return function(currentTime) {
+
+      // Get the duration asynchronously.
+      player.getDuration(function(duration) {
+
+        // Only do this if we have a duration.
+        if (duration) {
+
+          // Get the position.
+          var seekPos = 0;
+          if ((pos > -1) && (pos < 1)) {
+            seekPos = ((currentTime / duration) + parseFloat(pos)) * duration;
+          }
+          else {
+            seekPos = (currentTime + parseFloat(pos));
+          }
+
+          // Set the seek value.
+          player.seek(seekPos);
+        }
+      });
+    };
+  })(this));
+};
+
+/**
+ * Seek the loaded media.
+ *
+ * @param {number} pos The position to seek the minplayer. 0 to 1.
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.base.prototype.seek = function(pos) {
+  return this.isReady();
+};
+
+/**
+ * Gets a value from the player.
+ *
+ * @param {string} getter The getter method on the player.
+ * @param {function} callback The callback function.
+ */
+minplayer.players.base.prototype.getValue = function(getter, callback) {
+  if (this.isReady()) {
+    var value = this.player[getter]();
+    if ((value !== undefined) && (value !== null)) {
+      callback(value);
+    }
+  }
+};
+
+/**
+ * Set the volume of the loaded minplayer.
+ *
+ * @param {number} vol -1 to 1 - The relative amount to increase or decrease.
+ */
+minplayer.players.base.prototype.setVolumeRelative = function(vol) {
+
+  // Get the volume
+  this.getVolume((function(player) {
+    return function(newVol) {
+      newVol += parseFloat(vol);
+      newVol = (newVol < 0) ? 0 : newVol;
+      newVol = (newVol > 1) ? 1 : newVol;
+      player.setVolume(newVol);
+    };
+  })(this));
+};
+
+/**
+ * Set the volume of the loaded minplayer.
+ *
+ * @param {number} vol The volume to set the media. 0 to 1.
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.base.prototype.setVolume = function(vol) {
+  this.trigger('volumeupdate', vol);
+  return this.isReady();
+};
+
+/**
+ * Get the volume from the loaded media.
+ *
+ * @param {function} callback Called when the volume is determined.
+ * @return {number} The volume of the media; 0 to 1.
+ */
+minplayer.players.base.prototype.getVolume = function(callback) {
+  return this.volume.get(callback);
+};
+
+/**
+ * Get the current time for the media being played.
+ *
+ * @param {function} callback Called when the time is determined.
+ * @return {number} The volume of the media; 0 to 1.
+ */
+minplayer.players.base.prototype.getCurrentTime = function(callback) {
+  return this.currentTime.get(callback);
+};
+
+/**
+ * Return the duration of the loaded media.
+ *
+ * @param {function} callback Called when the duration is determined.
+ * @return {number} The duration of the loaded media.
+ */
+minplayer.players.base.prototype.getDuration = function(callback) {
+  return this.duration.get(callback);
+};
+
+/**
+ * Return the start bytes for the loaded media.
+ *
+ * @param {function} callback Called when the start bytes is determined.
+ * @return {int} The bytes that were started.
+ */
+minplayer.players.base.prototype.getBytesStart = function(callback) {
+  return this.bytesStart.get(callback);
+};
+
+/**
+ * Return the bytes of media loaded.
+ *
+ * @param {function} callback Called when the bytes loaded is determined.
+ * @return {int} The amount of bytes loaded.
+ */
+minplayer.players.base.prototype.getBytesLoaded = function(callback) {
+  return this.bytesLoaded.get(callback);
+};
+
+/**
+ * Return the total amount of bytes.
+ *
+ * @param {function} callback Called when the bytes total is determined.
+ * @return {int} The total amount of bytes for this media.
+ */
+minplayer.players.base.prototype.getBytesTotal = function(callback) {
+  return this.bytesTotal.get(callback);
+};
+/** The minplayer namespace. */
+var minplayer = minplayer || {};
+
+/** All the media player implementations */
+minplayer.players = minplayer.players || {};
+
+/**
+ * @constructor
+ * @extends minplayer.display
+ * @class The HTML5 media player implementation.
+ *
+ * @param {object} context The jQuery context.
+ * @param {object} options This components options.
+ * @param {object} queue The event queue to pass events around.
+ */
+minplayer.players.html5 = function(context, options, queue) {
+
+  // Derive players base.
+  minplayer.players.base.call(this, context, options, queue);
+};
+
+/** Derive from minplayer.players.base. */
+minplayer.players.html5.prototype = new minplayer.players.base();
+
+/** Reset the constructor. */
+minplayer.players.html5.prototype.constructor = minplayer.players.html5;
+
+/**
+ * @see minplayer.players.base#getPriority
+ * @return {number} The priority of this media player.
+ */
+minplayer.players.html5.getPriority = function() {
+  return 10;
+};
+
+/**
+ * @see minplayer.players.base#canPlay
+ * @return {boolean} If this player can play this media type.
+ */
+minplayer.players.html5.canPlay = function(file) {
+  switch (file.mimetype) {
+    case 'video/ogg':
+      return !!minplayer.playTypes.videoOGG;
+    case 'video/mp4':
+    case 'video/x-mp4':
+    case 'video/m4v':
+    case 'video/x-m4v':
+      return !!minplayer.playTypes.videoH264;
+    case 'video/x-webm':
+    case 'video/webm':
+    case 'application/octet-stream':
+      return !!minplayer.playTypes.videoWEBM;
+    case 'audio/ogg':
+      return !!minplayer.playTypes.audioOGG;
+    case 'audio/mpeg':
+      return !!minplayer.playTypes.audioMP3;
+    case 'audio/mp4':
+      return !!minplayer.playTypes.audioMP4;
+    default:
+      return false;
+  }
+};
+
+/**
+ * @see minplayer.plugin.construct
+ */
+minplayer.players.html5.prototype.construct = function() {
+
+  // Call base constructor.
+  minplayer.players.base.prototype.construct.call(this);
+
+  // Set the plugin name within the options.
+  this.options.pluginName = 'html5';
+
+  // Add the player events.
+  this.addPlayerEvents();
+};
+
+/**
+ * Adds a new player event.
+ *
+ * @param {string} type The type of event being fired.
+ * @param {function} callback Called when the event is fired.
+ */
+minplayer.players.html5.prototype.addPlayerEvent = function(type, callback) {
+  if (this.player) {
+
+    // Add an event listener for this event type.
+    this.player.addEventListener(type, (function(player) {
+
+      // Get the function name.
+      var func = type + 'Event';
+
+      // If the callback already exists, then remove it from the player.
+      if (player[func]) {
+        player.player.removeEventListener(type, player[func], false);
+      }
+
+      // Create a new callback.
+      player[func] = function(event) {
+        callback.call(player, event);
+      };
+
+      // Return the callback.
+      return player[func];
+
+    })(this), false);
+  }
+};
+
+/**
+ * Add events.
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.html5.prototype.addPlayerEvents = function() {
+
+  // Check if the player exists.
+  if (this.player) {
+
+    this.addPlayerEvent('abort', function() {
+      this.trigger('abort');
+    });
+    this.addPlayerEvent('loadstart', function() {
+      this.onReady();
+    });
+    this.addPlayerEvent('loadeddata', function() {
+      this.onLoaded();
+    });
+    this.addPlayerEvent('loadedmetadata', function() {
+      this.onLoaded();
+    });
+    this.addPlayerEvent('canplaythrough', function() {
+      this.onLoaded();
+    });
+    this.addPlayerEvent('ended', function() {
+      this.onComplete();
+    });
+    this.addPlayerEvent('pause', function() {
+      this.onPaused();
+    });
+    this.addPlayerEvent('play', function() {
+      this.onPlaying();
+    });
+    this.addPlayerEvent('playing', function() {
+      this.onPlaying();
+    });
+
+    var errorSent = false;
+    this.addPlayerEvent('error', function() {
+      if (!errorSent) {
+        errorSent = true;
+        this.trigger('error', 'An error occured - ' + this.player.error.code);
+      }
+    });
+
+    this.addPlayerEvent('waiting', function() {
+      this.onWaiting();
+    });
+    this.addPlayerEvent('durationchange', function() {
+      this.duration.set(this.player.duration);
+      this.trigger('durationchange', {duration: this.player.duration});
+    });
+    this.addPlayerEvent('progress', function(event) {
+      this.bytesTotal.set(event.total);
+      this.bytesLoaded.set(event.loaded);
+    });
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#onReady
+ */
+minplayer.players.html5.prototype.onReady = function() {
+  minplayer.players.base.prototype.onReady.call(this);
+
+  // Android just say we are loaded here.
+  if (minplayer.isAndroid) {
+    this.onLoaded();
+  }
+
+  // iOS devices are strange in that they don't autoload.
+  if (minplayer.isIDevice) {
+    this.play();
+    setTimeout((function(player) {
+      return function() {
+        player.pause();
+        player.onLoaded();
+      };
+    })(this), 1);
+  }
+};
+
+/**
+ * @see minplayer.players.base#playerFound
+ * @return {boolean} TRUE - if the player is in the DOM, FALSE otherwise.
+ */
+minplayer.players.html5.prototype.playerFound = function() {
+  return (this.display.find(this.mediaFile.type).length > 0);
+};
+
+/**
+ * @see minplayer.players.base#create
+ * @return {object} The media player entity.
+ */
+minplayer.players.html5.prototype.create = function() {
+  minplayer.players.base.prototype.create.call(this);
+  var element = jQuery(document.createElement(this.mediaFile.type))
+  .attr(this.options.attributes)
+  .append(
+    jQuery(document.createElement('source')).attr({
+      'src': this.mediaFile.path
+    })
+  );
+
+  // Fix the fluid width and height.
+  element.eq(0)[0].setAttribute('width', '100%');
+  element.eq(0)[0].setAttribute('height', '100%');
+  element.eq(0)[0].setAttribute('autobuffer', true);
+  var option = this.options.autoload ? 'auto' : 'metadata';
+  option = minplayer.isIDevice ? 'metadata' : option;
+  element.eq(0)[0].setAttribute('preload', option);
+  return element;
+};
+
+/**
+ * @see minplayer.players.base#getPlayer
+ * @return {object} The media player object.
+ */
+minplayer.players.html5.prototype.getPlayer = function() {
+  return this.elements.media.eq(0)[0];
+};
+
+/**
+ * @see minplayer.players.base#load
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.html5.prototype.load = function(file) {
+
+  // See if a load is even necessary.
+  if (minplayer.players.base.prototype.load.call(this, file)) {
+
+    // Get the current source.
+    var src = this.elements.media.attr('src');
+    if (!src) {
+      src = jQuery('source', this.elements.media).eq(0).attr('src');
+    }
+
+    // Only swap out if the new file is different from the source.
+    if (src != file.path) {
+
+      // Add a new player.
+      this.addPlayer();
+
+      // Set the new player.
+      this.player = this.getPlayer();
+
+      // Add the events again.
+      this.addPlayerEvents();
+
+      // Change the source...
+      var code = '<source src="' + file.path + '"></source>';
+      this.elements.media.removeAttr('src').empty().html(code);
+      return true;
+    }
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#play
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.html5.prototype.play = function() {
+  if (minplayer.players.base.prototype.play.call(this)) {
+    this.player.play();
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#pause
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.html5.prototype.pause = function() {
+  if (minplayer.players.base.prototype.pause.call(this)) {
+    this.player.pause();
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#stop
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.html5.prototype.stop = function() {
+  if (minplayer.players.base.prototype.stop.call(this)) {
+    this.player.pause();
+    this.player.src = '';
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#seek
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.html5.prototype.seek = function(pos) {
+  if (minplayer.players.base.prototype.seek.call(this, pos)) {
+    this.player.currentTime = pos;
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#setVolume
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.html5.prototype.setVolume = function(vol) {
+  if (minplayer.players.base.prototype.setVolume.call(this, vol)) {
+    this.player.volume = vol;
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#getVolume
+ */
+minplayer.players.html5.prototype.getVolume = function(callback) {
+  if (this.isReady()) {
+    callback(this.player.volume);
+  }
+};
+
+/**
+ * @see minplayer.players.base#getDuration
+ */
+minplayer.players.html5.prototype.getDuration = function(callback) {
+  if (this.isReady()) {
+    callback(this.player.duration);
+  }
+};
+
+/**
+ * @see minplayer.players.base#getCurrentTime
+ */
+minplayer.players.html5.prototype.getCurrentTime = function(callback) {
+  if (this.isReady()) {
+    callback(this.player.currentTime);
+  }
+};
+
+/**
+ * @see minplayer.players.base#getBytesLoaded
+ */
+minplayer.players.html5.prototype.getBytesLoaded = function(callback) {
+  if (this.isReady()) {
+    var loaded = 0;
+
+    // Check several different possibilities.
+    if (this.bytesLoaded.value) {
+      loaded = this.bytesLoaded.value;
+    }
+    else if (this.player.buffered &&
+        this.player.buffered.length > 0 &&
+        this.player.buffered.end &&
+        this.player.duration) {
+      loaded = this.player.buffered.end(0);
+    }
+    else if (this.player.bytesTotal != undefined &&
+             this.player.bytesTotal > 0 &&
+             this.player.bufferedBytes != undefined) {
+      loaded = this.player.bufferedBytes;
+    }
+
+    // Return the loaded amount.
+    callback(loaded);
+  }
+};
+
+/**
+ * @see minplayer.players.base#getBytesTotal
+ */
+minplayer.players.html5.prototype.getBytesTotal = function(callback) {
+  if (this.isReady()) {
+
+    var total = 0;
+
+    // Check several different possibilities.
+    if (this.bytesTotal.value) {
+      total = this.bytesTotal.value;
+    }
+    else if (this.player.buffered &&
+        this.player.buffered.length > 0 &&
+        this.player.buffered.end &&
+        this.player.duration) {
+      total = this.player.duration;
+    }
+    else if (this.player.bytesTotal != undefined &&
+             this.player.bytesTotal > 0 &&
+             this.player.bufferedBytes != undefined) {
+      total = this.player.bytesTotal;
+    }
+
+    // Return the loaded amount.
+    callback(total);
+  }
+};
+/** The minplayer namespace. */
+var minplayer = minplayer || {};
+
+/** All the media player implementations */
+minplayer.players = minplayer.players || {};
+
+/**
+ * @constructor
+ * @extends minplayer.display
+ * @class The Flash media player class to control the flash fallback.
+ *
+ * @param {object} context The jQuery context.
+ * @param {object} options This components options.
+ * @param {object} queue The event queue to pass events around.
+ */
+minplayer.players.flash = function(context, options, queue) {
+
+  // Derive from players base.
+  minplayer.players.base.call(this, context, options, queue);
+};
+
+/** Derive from minplayer.players.base. */
+minplayer.players.flash.prototype = new minplayer.players.base();
+
+/** Reset the constructor. */
+minplayer.players.flash.prototype.constructor = minplayer.players.flash;
+
+/**
+ * @see minplayer.plugin.construct
+ * @this minplayer.players.flash
+ */
+minplayer.players.flash.prototype.construct = function() {
+
+  // Call the players.base constructor.
+  minplayer.players.base.prototype.construct.call(this);
+
+  // Set the plugin name within the options.
+  this.options.pluginName = 'flash';
+};
+
+/**
+ * @see minplayer.players.base#getPriority
+ * @return {number} The priority of this media player.
+ */
+minplayer.players.flash.getPriority = function() {
+  return 0;
+};
+
+/**
+ * @see minplayer.players.base#canPlay
+ * @return {boolean} If this player can play this media type.
+ */
+minplayer.players.flash.canPlay = function(file) {
+  return false;
+};
+
+/**
+ * API to return the Flash player code provided params.
+ *
+ * @param {object} params The params used to populate the Flash code.
+ * @return {object} A Flash DOM element.
+ */
+minplayer.players.flash.prototype.getFlash = function(params) {
+  // Get the protocol.
+  var protocol = window.location.protocol;
+  if (protocol.charAt(protocol.length - 1) == ':') {
+    protocol = protocol.substring(0, protocol.length - 1);
+  }
+
+  // Insert the swfobject javascript.
+  var tag = document.createElement('script');
+  var src = protocol;
+  src += '://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js';
+  tag.src = src;
+  var firstScriptTag = document.getElementsByTagName('script')[0];
+  firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
+
+  // Create the swfobject.
+  setTimeout((function(player) {
+    return function tryAgain() {
+      if (typeof swfobject !== 'undefined') {
+        swfobject.embedSWF(
+          params.swf,
+          params.id,
+          params.width,
+          params.height,
+          '9.0.0',
+          false,
+          params.flashvars,
+          {
+            allowscriptaccess: 'always',
+            allowfullscreen: 'true',
+            wmode: params.wmode,
+            quality: 'high'
+          },
+          {
+            id: params.id,
+            name: params.id,
+            playerType: 'flash'
+          },
+          function(e) {
+            player.player = e.ref;
+          }
+        );
+      }
+      else {
+
+        // Try again after 200 ms.
+        setTimeout(tryAgain, 200);
+      }
+    };
+  })(this), 200);
+
+  // Return the div tag...
+  return '<div id="' + params.id + '"></div>';
+};
+
+/**
+ * @see minplayer.players.base#playerFound
+ * @return {boolean} TRUE - if the player is in the DOM, FALSE otherwise.
+ */
+minplayer.players.flash.prototype.playerFound = function() {
+  return (this.display.find('object[playerType="flash"]').length > 0);
+};
+/** The minplayer namespace. */
+var minplayer = minplayer || {};
+
+/** All the media player implementations */
+minplayer.players = minplayer.players || {};
+
+/**
+ * @constructor
+ * @extends minplayer.display
+ * @class The Flash media player class to control the flash fallback.
+ *
+ * @param {object} context The jQuery context.
+ * @param {object} options This components options.
+ * @param {object} queue The event queue to pass events around.
+ */
+minplayer.players.minplayer = function(context, options, queue) {
+
+  // Derive from players flash.
+  minplayer.players.flash.call(this, context, options, queue);
+};
+
+/** Derive from minplayer.players.flash. */
+minplayer.players.minplayer.prototype = new minplayer.players.flash();
+
+/** Reset the constructor. */
+minplayer.players.minplayer.prototype.constructor = minplayer.players.minplayer;
+
+/**
+ * @see minplayer.plugin.construct
+ * @this minplayer.players.minplayer
+ */
+minplayer.players.minplayer.prototype.construct = function() {
+
+  // Call the players.flash constructor.
+  minplayer.players.flash.prototype.construct.call(this);
+
+  // Set the plugin name within the options.
+  this.options.pluginName = 'minplayer';
+};
+
+/**
+ * Called when the Flash player is ready.
+ *
+ * @param {string} id The media player ID.
+ */
+window.onFlashPlayerReady = function(id) {
+  var media = minplayer.get(id, 'media');
+  var i = media.length;
+  while (i--) {
+    media[i].onReady();
+  }
+};
+
+/**
+ * Called when the Flash player updates.
+ *
+ * @param {string} id The media player ID.
+ * @param {string} eventType The event type that was triggered.
+ */
+window.onFlashPlayerUpdate = function(id, eventType) {
+  var media = minplayer.get(id, 'media');
+  var i = media.length;
+  while (i--) {
+    media[i].onMediaUpdate(eventType);
+  }
+};
+
+/**
+ * Used to debug from the Flash player to the browser console.
+ *
+ * @param {string} debug The debug string.
+ */
+window.onFlashPlayerDebug = function(debug) {
+  if (console && console.log) {
+    console.log(debug);
+  }
+};
+
+/**
+ * @see minplayer.players.base#getPriority
+ * @return {number} The priority of this media player.
+ */
+minplayer.players.minplayer.getPriority = function() {
+  return 1;
+};
+
+/**
+ * @see minplayer.players.base#canPlay
+ * @return {boolean} If this player can play this media type.
+ */
+minplayer.players.minplayer.canPlay = function(file) {
+  var isWEBM = jQuery.inArray(file.mimetype, ['video/x-webm',
+    'video/webm',
+    'application/octet-stream'
+  ]) >= 0;
+  return !isWEBM && (file.type == 'video' || file.type == 'audio');
+};
+
+/**
+ * @see minplayer.players.base#create
+ * @return {object} The media player entity.
+ */
+minplayer.players.minplayer.prototype.create = function() {
+
+  // Make sure we provide default options...
+  this.options = jQuery.extend({
+    swfplayer: 'flash/minplayer.swf'
+  }, this.options);
+
+  minplayer.players.flash.prototype.create.call(this);
+
+  // The flash variables for this flash player.
+  var flashVars = {
+    'id': this.options.id,
+    'debug': this.options.debug,
+    'config': 'nocontrols',
+    'file': this.mediaFile.path,
+    'autostart': this.options.autoplay,
+    'autoload': this.options.autoload
+  };
+
+  // Return a flash media player object.
+  return this.getFlash({
+    swf: this.options.swfplayer,
+    id: this.options.id + '_player',
+    width: '100%',
+    height: '100%',
+    flashvars: flashVars,
+    wmode: this.options.wmode
+  });
+};
+
+/**
+ * Called when the Flash player has an update.
+ *
+ * @param {string} eventType The event that was triggered in the player.
+ */
+minplayer.players.minplayer.prototype.onMediaUpdate = function(eventType) {
+  switch (eventType) {
+    case 'mediaMeta':
+      this.onLoaded();
+      break;
+    case 'mediaPlaying':
+      if (this.minplayerloaded) {
+        this.onPlaying();
+      }
+      break;
+    case 'mediaPaused':
+      this.minplayerloaded = true;
+      this.onPaused();
+      break;
+    case 'mediaComplete':
+      this.onComplete();
+      break;
+  }
+};
+
+/**
+ * Resets all variables.
+ */
+minplayer.players.minplayer.prototype.clear = function() {
+  minplayer.players.flash.prototype.clear.call(this);
+  this.minplayerloaded = this.options.autoplay;
+};
+
+/**
+ * @see minplayer.players.base#load
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.minplayer.prototype.load = function(file) {
+  if (minplayer.players.flash.prototype.load.call(this, file)) {
+    this.player.loadMedia(file.path, file.stream);
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#play
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.minplayer.prototype.play = function() {
+  if (minplayer.players.flash.prototype.play.call(this)) {
+    this.player.playMedia();
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#pause
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.minplayer.prototype.pause = function() {
+  if (minplayer.players.flash.prototype.pause.call(this)) {
+    this.player.pauseMedia();
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#stop
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.minplayer.prototype.stop = function() {
+  if (minplayer.players.flash.prototype.stop.call(this)) {
+    this.player.stopMedia();
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#seek
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.minplayer.prototype.seek = function(pos) {
+  if (minplayer.players.flash.prototype.seek.call(this, pos)) {
+    this.player.seekMedia(pos);
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#setVolume
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.minplayer.prototype.setVolume = function(vol) {
+  if (minplayer.players.flash.prototype.setVolume.call(this, vol)) {
+    this.player.setVolume(vol);
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#getVolume
+ */
+minplayer.players.minplayer.prototype.getVolume = function(callback) {
+  if (this.isReady()) {
+    callback(this.player.getVolume());
+  }
+};
+
+/**
+ * @see minplayer.players.flash#getDuration
+ */
+minplayer.players.minplayer.prototype.getDuration = function(callback) {
+  if (this.isReady()) {
+
+    // Check to see if it is immediately available.
+    var duration = this.player.getDuration();
+    if (duration) {
+      callback(duration);
+    }
+    else {
+
+      // If not, then poll every second for the duration.
+      this.poll((function(player) {
+        return function() {
+          duration = player.player.getDuration();
+          if (duration) {
+            callback(duration);
+          }
+          return !duration;
+        };
+      })(this), 1000);
+    }
+  }
+};
+
+/**
+ * @see minplayer.players.base#getCurrentTime
+ */
+minplayer.players.minplayer.prototype.getCurrentTime = function(callback) {
+  if (this.isReady()) {
+    callback(this.player.getCurrentTime());
+  }
+};
+
+/**
+ * @see minplayer.players.base#getBytesLoaded
+ */
+minplayer.players.minplayer.prototype.getBytesLoaded = function(callback) {
+  if (this.isReady()) {
+    callback(this.player.getMediaBytesLoaded());
+  }
+};
+
+/**
+ * @see minplayer.players.base#getBytesTotal.
+ */
+minplayer.players.minplayer.prototype.getBytesTotal = function(callback) {
+  if (this.isReady()) {
+    callback(this.player.getMediaBytesTotal());
+  }
+};
+/** The minplayer namespace. */
+var minplayer = minplayer || {};
+
+/** All the media player implementations */
+minplayer.players = minplayer.players || {};
+
+/**
+ * @constructor
+ * @extends minplayer.players.base
+ * @class The YouTube media player.
+ *
+ * @param {object} context The jQuery context.
+ * @param {object} options This components options.
+ * @param {object} queue The event queue to pass events around.
+ */
+minplayer.players.youtube = function(context, options, queue) {
+
+  /** The quality of the YouTube stream. */
+  this.quality = 'default';
+
+  // Derive from players base.
+  minplayer.players.base.call(this, context, options, queue);
+};
+
+/** Derive from minplayer.players.base. */
+minplayer.players.youtube.prototype = new minplayer.players.base();
+
+/** Reset the constructor. */
+minplayer.players.youtube.prototype.constructor = minplayer.players.youtube;
+
+/**
+ * @see minplayer.plugin.construct
+ * @this minplayer.players.youtube
+ */
+minplayer.players.youtube.prototype.construct = function() {
+
+  // Call the players.flash constructor.
+  minplayer.players.base.prototype.construct.call(this);
+
+  // Set the plugin name within the options.
+  this.options.pluginName = 'youtube';
+};
+
+/**
+ * @see minplayer.players.base#getPriority
+ * @return {number} The priority of this media player.
+ */
+minplayer.players.youtube.getPriority = function() {
+  return 10;
+};
+
+/**
+ * @see minplayer.players.base#canPlay
+ * @return {boolean} If this player can play this media type.
+ */
+minplayer.players.youtube.canPlay = function(file) {
+
+  // Check for the mimetype for youtube.
+  if (file.mimetype === 'video/youtube') {
+    return true;
+  }
+
+  // If the path is a YouTube path, then return true.
+  return (file.path.search(/^http(s)?\:\/\/(www\.)?youtube\.com/i) === 0);
+};
+
+/**
+ * Return the ID for a provided media file.
+ *
+ * @param {object} file A {@link minplayer.file} object.
+ * @return {string} The ID for the provided media.
+ */
+minplayer.players.youtube.getMediaId = function(file) {
+  var reg = /^http[s]?\:\/\/(www\.)?youtube\.com\/watch\?v=([a-zA-Z0-9_\-]+)/i;
+  if (file.path.search(reg) === 0) {
+    return file.path.match(reg)[2];
+  }
+  else {
+    return file.path;
+  }
+};
+
+/**
+ * Returns a preview image for this media player.
+ *
+ * @param {object} file A {@link minplayer.file} object.
+ * @param {string} type The type of image.
+ * @param {function} callback Called when the image is retrieved.
+ */
+minplayer.players.youtube.getImage = function(file, type, callback) {
+  type = (type == 'thumbnail') ? '1' : '0';
+  callback('http://img.youtube.com/vi/' + file.id + '/' + type + '.jpg');
+};
+
+/**
+ * Translates the player state for the YouTube API player.
+ *
+ * @param {number} playerState The YouTube player state.
+ */
+minplayer.players.youtube.prototype.setPlayerState = function(playerState) {
+  switch (playerState) {
+    case YT.PlayerState.CUED:
+      break;
+    case YT.PlayerState.BUFFERING:
+      this.onWaiting();
+      break;
+    case YT.PlayerState.PAUSED:
+      this.onPaused();
+      break;
+    case YT.PlayerState.PLAYING:
+      this.onPlaying();
+      break;
+    case YT.PlayerState.ENDED:
+      this.onComplete();
+      break;
+    default:
+      break;
+  }
+};
+
+/**
+ * Called when an error occurs.
+ *
+ * @param {string} event The onReady event that was triggered.
+ */
+minplayer.players.youtube.prototype.onReady = function(event) {
+  minplayer.players.base.prototype.onReady.call(this);
+  if (!this.options.autoplay) {
+    this.pause();
+  }
+  this.onLoaded();
+};
+
+/**
+ * Checks to see if this player can be found.
+ * @return {bool} TRUE - Player is found, FALSE - otherwise.
+ */
+minplayer.players.youtube.prototype.playerFound = function() {
+  var id = 'iframe#' + this.options.id + '-player.youtube-player';
+  var iframe = this.display.find(id);
+  return (iframe.length > 0);
+};
+
+/**
+ * Called when the player state changes.
+ *
+ * @param {object} event A JavaScript Event.
+ */
+minplayer.players.youtube.prototype.onPlayerStateChange = function(event) {
+  this.setPlayerState(event.data);
+};
+
+/**
+ * Called when the player quality changes.
+ *
+ * @param {string} newQuality The new quality for the change.
+ */
+minplayer.players.youtube.prototype.onQualityChange = function(newQuality) {
+  this.quality = newQuality.data;
+};
+
+/**
+ * Determines if the player should show the playloader.
+ *
+ * @param {string} preview The preview image.
+ * @return {bool} If this player implements its own playLoader.
+ */
+minplayer.players.youtube.prototype.hasPlayLoader = function(preview) {
+  return minplayer.hasTouch || !preview;
+};
+
+/**
+ * Determines if the player should show the controller.
+ *
+ * @return {bool} If this player implements its own playLoader.
+ */
+minplayer.players.youtube.prototype.hasController = function() {
+  return minplayer.isIDevice;
+};
+
+/**
+ * @see minplayer.players.base#create
+ * @return {object} The media player entity.
+ */
+minplayer.players.youtube.prototype.create = function() {
+  minplayer.players.base.prototype.create.call(this);
+
+  // Insert the YouTube iframe API player.
+  var tag = document.createElement('script');
+  tag.src = 'https://www.youtube.com/player_api';
+  var firstScriptTag = document.getElementsByTagName('script')[0];
+  firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
+
+  // Get the player ID.
+  this.playerId = this.options.id + '-player';
+
+  // Poll until the YouTube API is ready.
+  this.poll((function(player) {
+    return function() {
+      var ready = jQuery('#' + player.playerId).length > 0;
+      ready = ready && ('YT' in window);
+      ready = ready && (typeof YT.Player == 'function');
+      if (ready) {
+        // Determine the origin of this script.
+        jQuery('#' + player.playerId).addClass('youtube-player');
+        var origin = location.protocol;
+        origin += '//' + location.hostname;
+        origin += (location.port && ':' + location.port);
+
+        var playerVars = {};
+        if (minplayer.isIDevice) {
+          playerVars.origin = origin;
+        }
+        else {
+          playerVars = {
+            enablejsapi: minplayer.isIDevice ? 0 : 1,
+            origin: origin,
+            wmode: 'opaque',
+            controls: minplayer.isAndroid ? 1 : 0
+          };
+        }
+
+        // Create the player.
+        player.player = new YT.Player(player.playerId, {
+          height: '100%',
+          width: '100%',
+          frameborder: 0,
+          videoId: player.mediaFile.id,
+          playerVars: playerVars,
+          events: {
+            'onReady': function(event) {
+              player.onReady(event);
+            },
+            'onStateChange': function(event) {
+              player.onPlayerStateChange(event);
+            },
+            'onPlaybackQualityChange': function(newQuality) {
+              player.onQualityChange(newQuality);
+            },
+            'onError': function(errorCode) {
+              player.onError(errorCode);
+            }
+          }
+        });
+      }
+      return !ready;
+    };
+  })(this), 200);
+
+  // Return the player.
+  return jQuery(document.createElement('div')).attr({
+    id: this.playerId
+  });
+};
+
+/**
+ * @see minplayer.players.base#load
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.youtube.prototype.load = function(file) {
+  if (minplayer.players.base.prototype.load.call(this, file)) {
+    this.player.loadVideoById(file.id, 0, this.quality);
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#play
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.youtube.prototype.play = function() {
+  if (minplayer.players.base.prototype.play.call(this)) {
+    this.onWaiting();
+    this.player.playVideo();
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#pause
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.youtube.prototype.pause = function() {
+  if (minplayer.players.base.prototype.pause.call(this)) {
+    this.player.pauseVideo();
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#stop
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.youtube.prototype.stop = function() {
+  if (minplayer.players.base.prototype.stop.call(this)) {
+    this.player.stopVideo();
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#seek
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.youtube.prototype.seek = function(pos) {
+  if (minplayer.players.base.prototype.seek.call(this, pos)) {
+    this.onWaiting();
+    this.player.seekTo(pos, true);
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#setVolume
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.youtube.prototype.setVolume = function(vol) {
+  if (minplayer.players.base.prototype.setVolume.call(this, vol)) {
+    this.player.setVolume(vol * 100);
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#getVolume
+ */
+minplayer.players.youtube.prototype.getVolume = function(callback) {
+  this.getValue('getVolume', callback);
+};
+
+/**
+ * @see minplayer.players.base#getDuration.
+ */
+minplayer.players.youtube.prototype.getDuration = function(callback) {
+  this.getValue('getDuration', callback);
+};
+
+/**
+ * @see minplayer.players.base#getCurrentTime
+ */
+minplayer.players.youtube.prototype.getCurrentTime = function(callback) {
+  this.getValue('getCurrentTime', callback);
+};
+
+/**
+ * @see minplayer.players.base#getBytesStart.
+ */
+minplayer.players.youtube.prototype.getBytesStart = function(callback) {
+  this.getValue('getVideoStartBytes', callback);
+};
+
+/**
+ * @see minplayer.players.base#getBytesLoaded.
+ */
+minplayer.players.youtube.prototype.getBytesLoaded = function(callback) {
+  this.getValue('getVideoBytesLoaded', callback);
+};
+
+/**
+ * @see minplayer.players.base#getBytesTotal.
+ */
+minplayer.players.youtube.prototype.getBytesTotal = function(callback) {
+  this.getValue('getVideoBytesTotal', callback);
+};
+/** The minplayer namespace. */
+var minplayer = minplayer || {};
+
+/** All the media player implementations */
+minplayer.players = minplayer.players || {};
+
+/**
+ * @constructor
+ * @extends minplayer.players.base
+ * @class The vimeo media player.
+ *
+ * @param {object} context The jQuery context.
+ * @param {object} options This components options.
+ * @param {object} queue The event queue to pass events around.
+ */
+minplayer.players.vimeo = function(context, options, queue) {
+
+  // Derive from players base.
+  minplayer.players.base.call(this, context, options, queue);
+};
+
+/** Derive from minplayer.players.base. */
+minplayer.players.vimeo.prototype = new minplayer.players.base();
+
+/** Reset the constructor. */
+minplayer.players.vimeo.prototype.constructor = minplayer.players.vimeo;
+
+/**
+ * @see minplayer.plugin.construct
+ * @this minplayer.players.vimeo
+ */
+minplayer.players.vimeo.prototype.construct = function() {
+
+  // Call the players.flash constructor.
+  minplayer.players.base.prototype.construct.call(this);
+
+  // Set the plugin name within the options.
+  this.options.pluginName = 'vimeo';
+};
+
+/**
+ * @see minplayer.players.base#getPriority
+ * @return {number} The priority of this media player.
+ */
+minplayer.players.vimeo.getPriority = function() {
+  return 10;
+};
+
+/**
+ * @see minplayer.players.base#canPlay
+ * @return {boolean} If this player can play this media type.
+ */
+minplayer.players.vimeo.canPlay = function(file) {
+
+  // Check for the mimetype for vimeo.
+  if (file.mimetype === 'video/vimeo') {
+    return true;
+  }
+
+  // If the path is a vimeo path, then return true.
+  return (file.path.search(/^http(s)?\:\/\/(www\.)?vimeo\.com/i) === 0);
+};
+
+/**
+ * Determines if the player should show the playloader.
+ *
+ * @param {string} preview The preview image.
+ * @return {bool} If this player implements its own playLoader.
+ */
+minplayer.players.vimeo.prototype.hasPlayLoader = function(preview) {
+  return minplayer.hasTouch || !preview;
+};
+
+/**
+ * Determines if the player should show the playloader.
+ *
+ * @return {bool} If this player implements its own playLoader.
+ */
+minplayer.players.vimeo.prototype.hasController = function() {
+  return minplayer.hasTouch;
+};
+
+/**
+ * Return the ID for a provided media file.
+ *
+ * @param {object} file A {@link minplayer.file} object.
+ * @return {string} The ID for the provided media.
+ */
+minplayer.players.vimeo.getMediaId = function(file) {
+  var regex = /^http[s]?\:\/\/(www\.)?vimeo\.com\/(\?v\=)?([0-9]+)/i;
+  if (file.path.search(regex) === 0) {
+    return file.path.match(regex)[3];
+  }
+  else {
+    return file.path;
+  }
+};
+
+/**
+ * Returns a preview image for this media player.
+ *
+ * @param {object} file A {@link minplayer.file} object.
+ * @param {string} type The type of image.
+ * @param {function} callback Called when the image is retrieved.
+ */
+minplayer.players.vimeo.getImage = function(file, type, callback) {
+  jQuery.ajax({
+    url: 'http://vimeo.com/api/v2/video/' + file.id + '.json',
+    dataType: 'jsonp',
+    success: function(data) {
+      callback(data[0].thumbnail_large);
+    }
+  });
+};
+
+/**
+ * @see minplayer.players.base#reset
+ */
+minplayer.players.vimeo.prototype.reset = function() {
+
+  // Reset the flash variables..
+  minplayer.players.base.prototype.reset.call(this);
+};
+
+/**
+ * @see minplayer.players.base#create
+ * @return {object} The media player entity.
+ */
+minplayer.players.vimeo.prototype.create = function() {
+  minplayer.players.base.prototype.create.call(this);
+
+  // Insert the Vimeo Froogaloop player.
+  var tag = document.createElement('script');
+  tag.src = 'http://a.vimeocdn.com/js/froogaloop2.min.js';
+  var firstScriptTag = document.getElementsByTagName('script')[0];
+  firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
+
+  // Create the iframe for this player.
+  var iframe = document.createElement('iframe');
+  iframe.setAttribute('id', this.options.id + '-player');
+  iframe.setAttribute('type', 'text/html');
+  iframe.setAttribute('width', '100%');
+  iframe.setAttribute('height', '100%');
+  iframe.setAttribute('frameborder', '0');
+  jQuery(iframe).addClass('vimeo-player');
+
+  // Get the source.
+  var src = 'http://player.vimeo.com/video/';
+  src += this.mediaFile.id + '?';
+
+  // Add the parameters to the src.
+  src += jQuery.param({
+    'wmode': 'opaque',
+    'api': 1,
+    'player_id': this.options.id + '-player',
+    'title': 0,
+    'byline': 0,
+    'portrait': 0,
+    'autoplay': this.options.autoplay,
+    'loop': this.options.loop
+  });
+
+  // Set the source of the iframe.
+  iframe.setAttribute('src', src);
+
+  // Now register this player when the froogaloop code is loaded.
+  this.poll((function(player) {
+    return function() {
+      if (window.Froogaloop) {
+        player.player = window.Froogaloop(iframe);
+        var playerTimeout = 0;
+        player.player.addEvent('ready', function() {
+          clearTimeout(playerTimeout);
+          player.onReady();
+          player.onError('');
+        });
+        playerTimeout = setTimeout(function() {
+          player.onReady();
+          player.onError('Unable to play video.');
+        }, 2000);
+      }
+      return !window.Froogaloop;
+    };
+  })(this), 200);
+
+  // Trigger that the load has started.
+  this.trigger('loadstart');
+
+  // Return the player.
+  return iframe;
+};
+
+/**
+ * @see minplayer.players.base#onReady
+ */
+minplayer.players.vimeo.prototype.onReady = function(player_id) {
+
+  // Add the other listeners.
+  this.player.addEvent('loadProgress', (function(player) {
+    return function(progress) {
+      player.duration.set(parseFloat(progress.duration));
+      player.bytesLoaded.set(progress.bytesLoaded);
+      player.bytesTotal.set(progress.bytesTotal);
+    };
+  })(this));
+
+  this.player.addEvent('playProgress', (function(player) {
+    return function(progress) {
+      player.duration.set(parseFloat(progress.duration));
+      player.currentTime.set(parseFloat(progress.seconds));
+    };
+  })(this));
+
+  this.player.addEvent('play', (function(player) {
+    return function() {
+      player.onPlaying();
+    };
+  })(this));
+
+  this.player.addEvent('pause', (function(player) {
+    return function() {
+      player.onPaused();
+    };
+  })(this));
+
+  this.player.addEvent('finish', (function(player) {
+    return function() {
+      player.onComplete();
+    };
+  })(this));
+
+  minplayer.players.base.prototype.onReady.call(this);
+  this.onLoaded();
+};
+
+/**
+ * Clears the media player.
+ */
+minplayer.players.vimeo.prototype.clear = function() {
+  if (this.player) {
+    this.player.api('unload');
+  }
+  minplayer.players.base.prototype.clear.call(this);
+};
+
+/**
+ * @see minplayer.players.base#load
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.vimeo.prototype.load = function(file) {
+  if (minplayer.players.base.prototype.load.call(this, file)) {
+    this.construct();
+    return true;
+  }
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#play
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.vimeo.prototype.play = function() {
+  if (minplayer.players.base.prototype.play.call(this)) {
+    this.player.api('play');
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#pause
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.vimeo.prototype.pause = function() {
+  if (minplayer.players.base.prototype.pause.call(this)) {
+    this.player.api('pause');
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#stop
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.vimeo.prototype.stop = function() {
+  if (minplayer.players.base.prototype.stop.call(this)) {
+    this.player.api('unload');
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#seek
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.vimeo.prototype.seek = function(pos) {
+  if (minplayer.players.base.prototype.seek.call(this, pos)) {
+    this.player.api('seekTo', pos);
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#setVolume
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.vimeo.prototype.setVolume = function(vol) {
+  if (minplayer.players.base.prototype.setVolume.call(this, vol)) {
+    this.volume.set(vol);
+    this.player.api('setVolume', vol);
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#getVolume
+ */
+minplayer.players.vimeo.prototype.getVolume = function(callback) {
+  this.player.api('getVolume', function(vol) {
+    callback(vol);
+  });
+};
+
+/**
+ * @see minplayer.players.base#getDuration.
+ */
+minplayer.players.vimeo.prototype.getDuration = function(callback) {
+  if (this.isReady()) {
+    if (this.duration.value) {
+      callback(this.duration.value);
+    }
+    else {
+      this.player.api('getDuration', function(duration) {
+        callback(duration);
+      });
+    }
+  }
+};
+/** The minplayer namespace. */
+var minplayer = minplayer || {};
+
+/**
+ * @constructor
+ * @extends minplayer.display
+ * @class This is the base minplayer controller.  Other controllers can derive
+ * from the base and either build on top of it or simply define the elements
+ * that this base controller uses.
+ *
+ * @param {object} context The jQuery context.
+ * @param {object} options This components options.
+ */
+minplayer.controller = function(context, options) {
+
+  // Derive from display
+  minplayer.display.call(this, 'controller', context, options);
+};
+
+/** Derive from minplayer.display. */
+minplayer.controller.prototype = new minplayer.display();
+
+/** Reset the constructor. */
+minplayer.controller.prototype.constructor = minplayer.controller;
+
+/**
+ * A static function that will format a time value into a string time format.
+ *
+ * @param {integer} time An integer value of time.
+ * @return {string} A string representation of the time.
+ */
+minplayer.formatTime = function(time) {
+  time = time || 0;
+  var seconds = 0, minutes = 0, hour = 0, timeString = '';
+
+  hour = Math.floor(time / 3600);
+  time -= (hour * 3600);
+  minutes = Math.floor(time / 60);
+  time -= (minutes * 60);
+  seconds = Math.floor(time % 60);
+
+  if (hour) {
+    timeString += String(hour);
+    timeString += ':';
+  }
+
+  timeString += (minutes >= 10) ? String(minutes) : ('0' + String(minutes));
+  timeString += ':';
+  timeString += (seconds >= 10) ? String(seconds) : ('0' + String(seconds));
+  return {time: timeString, units: ''};
+};
+
+/**
+ * @see minplayer.display#getElements
+ * @return {object} The elements defined by this display.
+ */
+minplayer.controller.prototype.getElements = function() {
+  var elements = minplayer.display.prototype.getElements.call(this);
+  return jQuery.extend(elements, {
+    play: null,
+    pause: null,
+    fullscreen: null,
+    seek: null,
+    progress: null,
+    volume: null,
+    timer: null
+  });
+};
+
+/**
+ * @see minplayer.plugin#construct
+ */
+minplayer.controller.prototype.construct = function() {
+
+  // Call the minplayer plugin constructor.
+  minplayer.display.prototype.construct.call(this);
+
+  // Set the plugin name within the options.
+  this.options.pluginName = 'controller';
+
+  // Keep track of if we are dragging...
+  this.dragging = false;
+
+  // Keep track of the current volume.
+  this.vol = 0;
+
+  // If they have a seek bar.
+  if (this.elements.seek) {
+
+    // Create the seek bar slider control.
+    this.seekBar = this.elements.seek.slider({
+      range: 'min',
+      create: function(event, ui) {
+        jQuery('.ui-slider-range', event.target).addClass('ui-state-active');
+      }
+    });
+  }
+
+  // If they have a volume bar.
+  if (this.elements.volume) {
+
+    // Create the volume bar slider control.
+    this.volumeBar = this.elements.volume.slider({
+      range: 'min',
+      orientation: 'vertical'
+    });
+  }
+
+  // Get the player plugin.
+  this.get('player', function(player) {
+
+    // If they have a fullscreen button.
+    if (this.elements.fullscreen) {
+
+      // Bind to the click event.
+      minplayer.click(this.elements.fullscreen.unbind(), function() {
+        player.toggleFullScreen();
+      }).css({'pointer' : 'hand'});
+    }
+  });
+
+  // Get the media plugin.
+  this.get('media', function(media) {
+
+    // Only bind if this player does not have its own play loader.
+    if (!media.hasController()) {
+
+      // If they have a pause button
+      if (this.elements.pause) {
+
+        // Bind to the click on this button.
+        minplayer.click(this.elements.pause.unbind(), (function(controller) {
+          return function(event) {
+            event.preventDefault();
+            controller.playPause(false, media);
+          };
+        })(this));
+
+        // Bind to the pause event of the media.
+        media.bind('pause', (function(controller) {
+          return function(event) {
+            controller.setPlayPause(true);
+          };
+        })(this));
+      }
+
+      // If they have a play button
+      if (this.elements.play) {
+
+        // Bind to the click on this button.
+        minplayer.click(this.elements.play.unbind(), (function(controller) {
+          return function(event) {
+            event.preventDefault();
+            controller.playPause(true, media);
+          };
+        })(this));
+
+        // Bind to the play event of the media.
+        media.bind('playing', (function(controller) {
+          return function(event) {
+            controller.setPlayPause(false);
+          };
+        })(this));
+      }
+
+      // If they have a duration, then trigger on duration change.
+      if (this.elements.duration) {
+
+        // Bind to the duration change event.
+        media.bind('durationchange', (function(controller) {
+          return function(event, data) {
+            controller.setTimeString('duration', data.duration);
+          };
+        })(this));
+
+        // Set the timestring to the duration.
+        media.getDuration((function(controller) {
+          return function(duration) {
+            controller.setTimeString('duration', duration);
+          };
+        })(this));
+      }
+
+      // If they have a progress element.
+      if (this.elements.progress) {
+
+        // Bind to the progress event.
+        media.bind('progress', (function(controller) {
+          return function(event, data) {
+            var percent = data.total ? (data.loaded / data.total) * 100 : 0;
+            controller.elements.progress.width(percent + '%');
+          };
+        })(this));
+      }
+
+      // If they have a seek bar or timer, bind to the timeupdate.
+      if (this.seekBar || this.elements.timer) {
+
+        // Bind to the time update event.
+        media.bind('timeupdate', (function(controller) {
+          return function(event, data) {
+            if (!controller.dragging) {
+              var value = 0;
+              if (data.duration) {
+                value = (data.currentTime / data.duration) * 100;
+              }
+
+              // Update the seek bar if it exists.
+              if (controller.seekBar) {
+                controller.seekBar.slider('option', 'value', value);
+              }
+
+              controller.setTimeString('timer', data.currentTime);
+            }
+          };
+        })(this));
+      }
+
+      // If they have a seekBar element.
+      if (this.seekBar) {
+
+        // Register the events for the control bar to control the media.
+        this.seekBar.slider({
+          start: (function(controller) {
+            return function(event, ui) {
+              controller.dragging = true;
+            };
+          })(this),
+          stop: (function(controller) {
+            return function(event, ui) {
+              controller.dragging = false;
+              media.getDuration(function(duration) {
+                media.seek((ui.value / 100) * duration);
+              });
+            };
+          })(this),
+          slide: (function(controller) {
+            return function(event, ui) {
+              media.getDuration(function(duration) {
+                var time = (ui.value / 100) * duration;
+                if (!controller.dragging) {
+                  media.seek(time);
+                }
+                controller.setTimeString('timer', time);
+              });
+            };
+          })(this)
+        });
+      }
+
+      // Setup the mute button.
+      if (this.elements.mute) {
+        minplayer.click(this.elements.mute, (function(controller) {
+          return function(event) {
+            event.preventDefault();
+            var value = controller.volumeBar.slider('option', 'value');
+            if (value > 0) {
+              controller.vol = value;
+              controller.volumeBar.slider('option', 'value', 0);
+              media.setVolume(0);
+            }
+            else {
+              controller.volumeBar.slider('option', 'value', controller.vol);
+              media.setVolume(controller.vol / 100);
+            }
+          };
+        })(this));
+      }
+
+      // Setup the volume bar.
+      if (this.volumeBar) {
+
+        // Create the slider.
+        this.volumeBar.slider({
+          slide: function(event, ui) {
+            media.setVolume(ui.value / 100);
+          }
+        });
+
+        media.bind('volumeupdate', (function(controller) {
+          return function(event, vol) {
+            controller.volumeBar.slider('option', 'value', (vol * 100));
+          };
+        })(this));
+
+        // Set the volume to match that of the player.
+        media.getVolume((function(controller) {
+          return function(vol) {
+            controller.volumeBar.slider('option', 'value', (vol * 100));
+          };
+        })(this));
+      }
+    }
+    else {
+
+      // Hide this controller.
+      this.hide();
+    }
+  });
+
+  // We are now ready.
+  this.ready();
+};
+
+/**
+ * Sets the play and pause state of the control bar.
+ *
+ * @param {boolean} state TRUE - Show Play, FALSE - Show Pause.
+ */
+minplayer.controller.prototype.setPlayPause = function(state) {
+  var css = '';
+  if (this.elements.play) {
+    css = state ? 'inherit' : 'none';
+    this.elements.play.css('display', css);
+  }
+  if (this.elements.pause) {
+    css = state ? 'none' : 'inherit';
+    this.elements.pause.css('display', css);
+  }
+};
+
+/**
+ * Plays or pauses the media.
+ *
+ * @param {bool} state true => play, false => pause.
+ * @param {object} media The media player object.
+ */
+minplayer.controller.prototype.playPause = function(state, media) {
+  var type = state ? 'play' : 'pause';
+  this.display.trigger(type);
+  this.setPlayPause(!state);
+  if (media) {
+    media[type]();
+  }
+};
+
+/**
+ * Sets the time string on the control bar.
+ *
+ * @param {string} element The name of the element to set.
+ * @param {number} time The total time amount to set.
+ */
+minplayer.controller.prototype.setTimeString = function(element, time) {
+  if (this.elements[element]) {
+    this.elements[element].text(minplayer.formatTime(time).time);
+  }
+};
+// Add a way to instanciate using jQuery prototype.
+if (!jQuery.fn.osmplayer) {
+
+  /**
+   * @constructor
+   *
+   * Define a jQuery osmplayer prototype.
+   *
+   * @param {object} options The options for this jQuery prototype.
+   * @return {Array} jQuery object.
+   */
+  jQuery.fn.osmplayer = function(options) {
+    return jQuery(this).each(function() {
+      options = options || {};
+      options.id = options.id || jQuery(this).attr('id') || Math.random();
+      if (!minplayer.plugins[options.id]) {
+        options.template = options.template || 'default';
+        if (osmplayer[options.template]) {
+          new osmplayer[options.template](jQuery(this), options);
+        }
+        else {
+          new osmplayer(jQuery(this), options);
+        }
+      }
+    });
+  };
+}
+
+/**
+ * @constructor
+ * @extends minplayer
+ * @class The main osmplayer class.
+ *
+ * <p><strong>Usage:</strong>
+ * <pre><code>
+ *
+ *   // Create a media player.
+ *   var player = jQuery("#player").osmplayer({
+ *
+ *   });
+ *
+ * </code></pre>
+ * </p>
+ *
+ * @param {object} context The jQuery context.
+ * @param {object} options This components options.
+ */
+osmplayer = function(context, options) {
+
+  // Derive from minplayer
+  minplayer.call(this, context, options);
+};
+
+/** Derive from minplayer. */
+osmplayer.prototype = new minplayer();
+
+/** Reset the constructor. */
+osmplayer.prototype.constructor = osmplayer;
+
+/**
+ * Creates a new plugin within this context.
+ *
+ * @param {string} name The name of the plugin you wish to create.
+ * @param {object} base The base object for this plugin.
+ * @param {object} context The context which you would like to create.
+ * @return {object} The new plugin object.
+ */
+osmplayer.prototype.create = function(name, base, context) {
+  return minplayer.prototype.create.call(this, name, 'osmplayer', context);
+};
+
+/**
+ * @see minplayer.plugin.construct
+ */
+osmplayer.prototype.construct = function() {
+
+  // Make sure we provide default options...
+  this.options = jQuery.extend({
+    playlist: '',
+    node: {},
+    swfplayer: 'minplayer/flash/minplayer.swf',
+    logo: 'logo.png',
+    link: 'http://www.mediafront.org'
+  }, this.options);
+
+  // Call the minplayer display constructor.
+  minplayer.prototype.construct.call(this);
+
+  /** The play queue and index. */
+  this.playQueue = [];
+  this.playIndex = 0;
+
+  /** The playlist for this media player. */
+  this.create('playlist', 'osmplayer');
+
+  /** Get the playlist or any other playlist that connects. */
+  this.get('playlist', function(playlist) {
+    playlist.bind('nodeLoad', (function(player) {
+      return function(event, data) {
+        player.loadNode(data);
+      };
+    })(this));
+  });
+
+  // Play each media sequentially...
+  this.get('media', (function(player) {
+    return function(media) {
+      media.bind('ended', function() {
+        player.options.autoplay = true;
+        player.playNext();
+      });
+    };
+  })(this));
+
+  // Load the node if one is provided.
+  if (this.options.node) {
+    this.loadNode(this.options.node);
+  }
+};
+
+/**
+ * Gets the full screen element.
+ *
+ * @return {object} The element that will go into fullscreen.
+ */
+osmplayer.prototype.fullScreenElement = function() {
+  return this.elements.minplayer;
+};
+
+/**
+ * The load node function.
+ *
+ * @param {object} node A media node object.
+ */
+osmplayer.prototype.loadNode = function(node) {
+  if (node && node.mediafiles) {
+
+    // Load the media files.
+    var media = node.mediafiles.media;
+    if (media) {
+      this.playQueue.length = 0;
+      this.playQueue = [];
+      this.playIndex = 0;
+      var file = null;
+      var types = [];
+
+      // For mobile devices, we should only show the main media.
+      if (minplayer.isAndroid || minplayer.isIDevice) {
+        types = ['media'];
+      }
+      else {
+        types = ['intro', 'commercial', 'prereel', 'media', 'postreel'];
+      }
+
+      // Iterate through the types.
+      jQuery.each(types, (function(player) {
+        return function(key, type) {
+          if (file = player.addToQueue(media[type])) {
+            file.queueType = type;
+          }
+        };
+      })(this));
+    }
+
+    // Load the preview image.
+    osmplayer.getImage(node.mediafiles, 'preview', (function(player) {
+      return function(image) {
+        player.options.preview = image.path;
+        if (player.playLoader) {
+          player.playLoader.initialize();
+        }
+      };
+    })(this));
+
+    // Play the next media
+    this.playNext();
+  }
+};
+
+/**
+ * Adds a file to the play queue.
+ *
+ * @param {object} file The file to add to the queue.
+ * @return {object} The file that was added to the queue.
+ */
+osmplayer.prototype.addToQueue = function(file) {
+  if (file = minplayer.getMediaFile(file)) {
+    this.playQueue.push(file);
+  }
+  return file;
+};
+
+/**
+ * Plays the next media file in the queue.
+ */
+osmplayer.prototype.playNext = function() {
+  if (this.playQueue.length > this.playIndex) {
+    this.load(this.playQueue[this.playIndex]);
+    this.playIndex++;
+  }
+  else if (this.options.repeat) {
+    this.playIndex = 0;
+    this.playNext();
+  }
+  else if (this.playQueue.length > 0) {
+    // If there is no playlist, and no repeat, we will
+    // just seek to the beginning and pause.
+    this.options.autoplay = false;
+    this.playIndex = 0;
+    this.playNext();
+  }
+  else if (this.media) {
+    // Stop the player and unload.
+    this.media.stop();
+  }
+};
+
+/**
+ * Returns an image provided image array.
+ *
+ * @param {object} mediafiles The mediafiles to search within.
+ * @param {string} type The type of image to look for.
+ * @param {function} callback Called when the image is retrieved.
+ */
+osmplayer.getImage = function(mediafiles, type, callback) {
+
+  var image = '';
+  var images = mediafiles.image;
+  if (images) {
+
+    // If the image type exists, then just use that one...
+    if (images[type]) {
+      image = images[type];
+    }
+    // Or try the original image...
+    else if (images['image']) {
+      image = images['image'];
+    }
+    // Otherwise, just try ANY image...
+    else {
+
+      // Or, just pick the first one available.
+      for (type in images) {
+        if (images.hasOwnProperty(type)) {
+          image = images[type];
+          break;
+        }
+      }
+    }
+  }
+
+  // If the image exists, then callback with that image.
+  if (image) {
+    callback(new minplayer.file(image));
+  }
+  else {
+    // Get the image from the media player...
+    var mediaFile = minplayer.getMediaFile(mediafiles.media.media);
+    if (mediaFile) {
+      var player = minplayer.players[mediaFile.player];
+      if (player && (typeof player.getImage === 'function')) {
+        player.getImage(mediaFile, type, function(src) {
+          callback(new minplayer.file(src));
+        });
+      }
+    }
+  }
+};
+/** The osmplayer namespace. */
+var osmplayer = osmplayer || {};
+
+/** The parser object. */
+osmplayer.parser = osmplayer.parser || {};
+
+/**
+ * The default parser object.
+ *
+ * @return {object} The default parser.
+ **/
+osmplayer.parser['default'] = {
+
+  // The priority for this parser.
+  priority: 1,
+
+  // This parser is always valid.
+  valid: function(feed) {
+    return true;
+  },
+
+  // Returns the type of request to make.
+  getType: function(feed) {
+    return 'json';
+  },
+
+  // Returns the feed provided the start and numItems.
+  getFeed: function(feed, start, numItems) {
+    feed = feed.replace(/(.*)\??(.*)/i, '$1');
+    feed += '?start-index=' + start;
+    feed += '&max-results=' + numItems;
+    return feed;
+  },
+
+  // Parse the feed.
+  parse: function(data) {
+    return data;
+  }
+};
+/** The osmplayer namespace. */
+var osmplayer = osmplayer || {};
+
+/** The parser object. */
+osmplayer.parser = osmplayer.parser || {};
+
+/**
+ * The youtube parser object.
+ *
+ * @return {object} The youtube parser.
+ **/
+osmplayer.parser.youtube = {
+
+  // The priority for this parser.
+  priority: 10,
+
+  // Return if this is a valid youtube feed.
+  valid: function(feed) {
+    return (feed.search(/^http(s)?\:\/\/gdata\.youtube\.com/i) === 0);
+  },
+
+  // Returns the type of request to make.
+  getType: function(feed) {
+    return 'jsonp';
+  },
+
+  // Returns the feed provided the start and numItems.
+  getFeed: function(feed, start, numItems) {
+    feed = feed.replace(/(.*)\??(.*)/i, '$1');
+    feed += '?start-index=' + (start + 1);
+    feed += '&max-results=' + (numItems);
+    feed += '&v=2&alt=jsonc';
+    return feed;
+  },
+
+  // Parse the feed.
+  parse: function(data) {
+    data = data.data;
+    var playlist = {
+      total_rows: data.totalItems,
+      nodes: []
+    };
+
+    // Iterate through the items and parse it.
+    for (var index in data.items) {
+      if (data.items.hasOwnProperty(index)) {
+        var item = data.items[index];
+        playlist.nodes.push({
+          title: item.title,
+          description: item.description,
+          mediafiles: {
+            image: {
+              'thumbnail': {
+                path: item.thumbnail.sqDefault
+              },
+              'image': {
+                path: item.thumbnail.hqDefault
+              }
+            },
+            media: {
+              'media': {
+                player: 'youtube',
+                id: item.id
+              }
+            }
+          }
+        });
+      }
+    }
+
+    return playlist;
+  }
+};
+/** The osmplayer namespace. */
+var osmplayer = osmplayer || {};
+
+/** The parser object. */
+osmplayer.parser = osmplayer.parser || {};
+
+/**
+ * The rss parser object.
+ *
+ * @return {object} The rss parser.
+ **/
+osmplayer.parser.rss = {
+
+  // The priority for this parser.
+  priority: 8,
+
+  // Return if this is a valid youtube feed.
+  valid: function(feed) {
+    feed = feed.replace(/(.*)\??(.*)/i, '$1');
+    return feed.match(/\.rss$/i) !== null;
+  },
+
+  // Returns the type of request to make.
+  getType: function(feed) {
+    return 'xml';
+  },
+
+  // Returns the feed provided the start and numItems.
+  getFeed: function(feed, start, numItems) {
+    return feed;
+  },
+
+  // Parse the feed.
+  parse: function(data) {
+    var playlist = {
+      total_rows: 0,
+      nodes: []
+    };
+    jQuery('rss channel', data).find('item').each(function(index) {
+      osmplayer.parser.rss.addRSSItem(playlist, jQuery(this));
+    });
+    return playlist;
+  },
+
+  // Parse an RSS item.
+  addRSSItem: function(playlist, item) {
+    playlist.total_rows++;
+    playlist.nodes.push({
+      title: item.find('title').text(),
+      description: item.find('annotation').text(),
+      mediafiles: {
+        image: {
+          'image': {
+            path: item.find('image').text()
+          }
+        },
+        media: {
+          'media': {
+            path: item.find('location').text()
+          }
+        }
+      }
+    });
+  }
+};
+/** The osmplayer namespace. */
+var osmplayer = osmplayer || {};
+
+/** The parser object. */
+osmplayer.parser = osmplayer.parser || {};
+
+/**
+ * The asx parser object.
+ *
+ * @return {object} The asx parser.
+ **/
+osmplayer.parser.asx = {
+
+  // The priority for this parser.
+  priority: 8,
+
+  // Return if this is a valid youtube feed.
+  valid: function(feed) {
+    feed = feed.replace(/(.*)\??(.*)/i, '$1');
+    return feed.match(/\.asx$/i) !== null;
+  },
+
+  // Returns the type of request to make.
+  getType: function(feed) {
+    return 'xml';
+  },
+
+  // Returns the feed provided the start and numItems.
+  getFeed: function(feed, start, numItems) {
+    return feed;
+  },
+
+  // Parse the feed.
+  parse: function(data) {
+    var playlist = {
+      total_rows: 0,
+      nodes: []
+    };
+    jQuery('asx entry', data).each(function(index) {
+      osmplayer.parser.rss.addRSSItem(playlist, jQuery(this));
+    });
+    return playlist;
+  }
+};
+/** The osmplayer namespace. */
+var osmplayer = osmplayer || {};
+
+/** The parser object. */
+osmplayer.parser = osmplayer.parser || {};
+
+/**
+ * The xsfp parser object.
+ *
+ * @return {object} The xsfp parser.
+ **/
+osmplayer.parser.xsfp = {
+
+  // The priority for this parser.
+  priority: 8,
+
+  // Return if this is a valid youtube feed.
+  valid: function(feed) {
+    feed = feed.replace(/(.*)\??(.*)/i, '$1');
+    return feed.match(/\.xml$/i) !== null;
+  },
+
+  // Returns the type of request to make.
+  getType: function(feed) {
+    return 'xml';
+  },
+
+  // Returns the feed provided the start and numItems.
+  getFeed: function(feed, start, numItems) {
+    return feed;
+  },
+
+  // Parse the feed.
+  parse: function(data) {
+    var playlist = {
+      total_rows: 0,
+      nodes: []
+    };
+    jQuery('playlist trackList track', data).each(function(index) {
+      osmplayer.parser.rss.addRSSItem(playlist, jQuery(this));
+    });
+    return playlist;
+  }
+};
+/** The osmplayer namespace. */
+var osmplayer = osmplayer || {};
+
+/**
+ * @constructor
+ * @extends minplayer.display
+ * @class This class creates the playlist functionality for the minplayer.
+ *
+ * @param {object} context The jQuery context.
+ * @param {object} options This components options.
+ */
+osmplayer.playlist = function(context, options) {
+
+  // Derive from display
+  minplayer.display.call(this, 'playlist', context, options);
+};
+
+/** Derive from minplayer.display. */
+osmplayer.playlist.prototype = new minplayer.display();
+
+/** Reset the constructor. */
+osmplayer.playlist.prototype.constructor = osmplayer.playlist;
+
+/**
+ * @see minplayer.plugin#construct
+ */
+osmplayer.playlist.prototype.construct = function() {
+
+  // Make sure we provide default options...
+  this.options = jQuery.extend({
+    vertical: true,
+    playlist: '',
+    pageLimit: 10,
+    autoNext: true,
+    shuffle: false,
+    loop: false,
+    hysteresis: 40,
+    scrollSpeed: 20,
+    scrollMode: 'auto'
+  }, this.options);
+
+  // Call the minplayer plugin constructor.
+  minplayer.display.prototype.construct.call(this);
+
+  /** The nodes within this playlist. */
+  this.nodes = [];
+
+  // Current page.
+  this.page = -1;
+
+  // The total amount of nodes.
+  this.totalItems = 0;
+
+  // The current loaded item index.
+  this.currentItem = -1;
+
+  // The play playqueue.
+  this.playqueue = [];
+
+  // The playqueue position.
+  this.playqueuepos = 0;
+
+  // The current playlist.
+  this.playlist = this.options.playlist;
+
+  // Create the scroll bar.
+  this.scroll = null;
+
+  // Create our orientation variable.
+  this.orient = {
+    pos: this.options.vertical ? 'y' : 'x',
+    pagePos: this.options.vertical ? 'pageY' : 'pageX',
+    offset: this.options.vertical ? 'top' : 'left',
+    wrapperSize: this.options.vertical ? 'wrapperH' : 'wrapperW',
+    minScroll: this.options.vertical ? 'minScrollY' : 'minScrollX',
+    maxScroll: this.options.vertical ? 'maxScrollY' : 'maxScrollX',
+    size: this.options.vertical ? 'height' : 'width'
+  };
+
+  // Create the pager.
+  this.pager = this.create('pager', 'osmplayer');
+  this.pager.bind('nextPage', (function(playlist) {
+    return function(event) {
+      playlist.nextPage();
+    };
+  })(this));
+  this.pager.bind('prevPage', (function(playlist) {
+    return function(event) {
+      playlist.prevPage();
+    };
+  })(this));
+
+  // Load the "next" item.
+  if (this.next()) {
+
+    // Get the media.
+    if (this.options.autoNext) {
+      this.get('media', function(media) {
+        media.bind('ended', (function(playlist) {
+          return function(event) {
+            media.options.autoplay = true;
+            playlist.next();
+          };
+        })(this));
+      });
+    }
+  }
+
+  // Say that we are ready.
+  this.ready();
+};
+
+/**
+ * Wrapper around the scroll scrollTo method.
+ *
+ * @param {number} pos The position you would like to set the list.
+ * @param {boolean} relative If this is a relative position change.
+ */
+osmplayer.playlist.prototype.scrollTo = function(pos, relative) {
+  if (this.scroll) {
+    this.scroll.options.hideScrollbar = false;
+    if (this.options.vertical) {
+      this.scroll.scrollTo(0, pos, 0, relative);
+    }
+    else {
+      this.scroll.scrollTo(pos, 0, 0, relative);
+    }
+    this.scroll.options.hideScrollbar = true;
+  }
+};
+
+/**
+ * Refresh the scrollbar.
+ */
+osmplayer.playlist.prototype.refreshScroll = function() {
+
+  // Make sure that our window has the addEventListener to keep IE happy.
+  if (!window.addEventListener) {
+    setTimeout((function(playlist) {
+      return function() {
+        playlist.refreshScroll.call(playlist);
+      }
+    })(this), 200);
+    return;
+  }
+
+  // Check the size of the playlist.
+  var list = this.elements.list;
+  var scroll = this.elements.scroll;
+
+  // Check to see if we should add a scroll bar functionality.
+  if ((!this.scroll) &&
+      (list.length > 0) &&
+      (scroll.length > 0) &&
+      (list[this.orient.size]() > scroll[this.orient.size]())) {
+
+    // Setup the iScroll component.
+    this.scroll = new iScroll(this.elements.scroll.eq(0)[0], {
+      hScroll: !this.options.vertical,
+      hScrollbar: !this.options.vertical,
+      vScroll: this.options.vertical,
+      vScrollbar: this.options.vertical,
+      hideScrollbar: true
+    });
+
+    // Use autoScroll for non-touch devices.
+    if ((this.options.scrollMode == 'auto') && !minplayer.hasTouch) {
+
+      // Bind to the mouse events for autoscrolling.
+      this.elements.list.bind('mousemove', (function(playlist) {
+        return function(event) {
+          event.preventDefault();
+          var offset = playlist.display.offset()[playlist.orient.offset];
+          playlist.mousePos = event[playlist.orient.pagePos];
+          playlist.mousePos -= offset;
+        };
+      })(this)).bind('mouseenter', (function(playlist) {
+        return function(event) {
+          event.preventDefault();
+          playlist.scrolling = true;
+          var setScroll = function() {
+            if (playlist.scrolling) {
+              var scrollSize = playlist.scroll[playlist.orient.wrapperSize];
+              var scrollMid = (scrollSize / 2);
+              var delta = playlist.mousePos - scrollMid;
+              if (Math.abs(delta) > playlist.options.hysteresis) {
+                var hyst = playlist.options.hysteresis;
+                hyst *= (delta > 0) ? -1 : 0;
+                delta = (playlist.options.scrollSpeed * (delta + hyst));
+                delta /= scrollMid;
+                var pos = playlist.scroll[playlist.orient.pos] - delta;
+                var min = playlist.scroll[playlist.orient.minScroll] || 0;
+                var max = playlist.scroll[playlist.orient.maxScroll];
+                if (pos >= min) {
+                  playlist.scrollTo(min);
+                }
+                else if (pos <= max) {
+                  playlist.scrollTo(max);
+                }
+                else {
+                  playlist.scrollTo(delta, true);
+                }
+              }
+
+              // Set timeout to try again.
+              setTimeout(setScroll, 30);
+            }
+          };
+          setScroll();
+        };
+      })(this)).bind('mouseleave', (function(playlist) {
+        return function(event) {
+          event.preventDefault();
+          playlist.scrolling = false;
+        };
+      })(this));
+    }
+
+    // Need to force the width of the list.
+    if (!this.options.vertical) {
+      var listSize = 0;
+      jQuery.each(this.elements.list.children(), function() {
+        listSize += jQuery(this).outerWidth();
+      });
+      this.elements.list.width(listSize);
+    }
+
+    this.scroll.refresh();
+    this.scroll.scrollTo(0, 0, 200);
+  }
+  else if (this.scroll) {
+
+    // Disable the scroll bar.
+    this.scroll.disable();
+    this.elements.list
+      .unbind('mousemove')
+      .unbind('mouseenter')
+      .unbind('mouseleave');
+  }
+};
+
+/**
+ * Sets the playlist.
+ *
+ * @param {object} playlist The playlist object.
+ * @param {integer} loadIndex The index of the item to load.
+ */
+osmplayer.playlist.prototype.set = function(playlist, loadIndex) {
+
+  // Check to make sure the playlist is an object.
+  if (typeof playlist !== 'object') {
+    this.trigger('error', 'Playlist must be an object to set');
+    return;
+  }
+
+  // Check to make sure the playlist has correct format.
+  if (!playlist.hasOwnProperty('total_rows')) {
+    this.trigger('error', 'Unknown playlist format.');
+    return;
+  }
+
+  // Make sure the playlist has some rows.
+  if (playlist.total_rows && playlist.nodes.length) {
+
+    // Set the total rows.
+    this.totalItems = playlist.total_rows;
+    this.currentItem = 0;
+
+    // Show or hide the next page if there is or is not a next page.
+    if (((this.page + 1) * this.options.pageLimit) >= this.totalItems) {
+      this.pager.nextPage.hide();
+    }
+    else {
+      this.pager.nextPage.show();
+    }
+
+    var teaser = null;
+    var numNodes = playlist.nodes.length;
+    this.elements.list.empty();
+    this.nodes = [];
+
+    // Iterate through all the nodes.
+    for (var index = 0; index < numNodes; index++) {
+
+      // Create the teaser object.
+      teaser = this.create('teaser', 'osmplayer', this.elements.list);
+      teaser.setNode(playlist.nodes[index]);
+      teaser.bind('nodeLoad', (function(playlist, index) {
+        return function(event, data) {
+          playlist.loadItem(index);
+        };
+      })(this, index));
+
+      // Add this to our nodes array.
+      this.nodes.push(teaser);
+
+      // If the index is equal to the loadIndex.
+      if (loadIndex === index) {
+        this.loadItem(index);
+      }
+    }
+
+    // Refresh the sizes.
+    this.refreshScroll();
+
+    // Trigger that the playlist has loaded.
+    this.trigger('playlistLoad', playlist);
+  }
+
+  // Show that we are no longer busy.
+  if (this.elements.playlist_busy) {
+    this.elements.playlist_busy.hide();
+  }
+};
+
+/**
+ * Stores the current playlist state in the playqueue.
+ */
+osmplayer.playlist.prototype.setQueue = function() {
+
+  // Add this item to the playqueue.
+  this.playqueue.push({
+    page: this.page,
+    item: this.currentItem
+  });
+
+  // Store the current playqueue position.
+  this.playqueuepos = this.playqueue.length;
+};
+
+/**
+ * Loads the next item.
+ *
+ * @return {boolean} TRUE if loaded, FALSE if not.
+ */
+osmplayer.playlist.prototype.next = function() {
+  var item = 0, page = this.page;
+
+  // See if we are at the front of the playqueue.
+  if (this.playqueuepos >= this.playqueue.length) {
+
+    // If this is shuffle, then load a random item.
+    if (this.options.shuffle) {
+      item = Math.floor(Math.random() * this.totalItems);
+      page = Math.floor(item / this.options.pageLimit);
+      item = item % this.options.pageLimit;
+      return this.load(page, item);
+    }
+    else {
+
+      // Otherwise, increment the current item by one.
+      item = (this.currentItem + 1);
+      if (item >= this.nodes.length) {
+        return this.load(page + 1, 0);
+      }
+      else {
+        return this.loadItem(item);
+      }
+    }
+  }
+  else {
+
+    // Load the next item in the playqueue.
+    this.playqueuepos = this.playqueuepos + 1;
+    var currentQueue = this.playqueue[this.playqueuepos];
+    return this.load(currentQueue.page, currentQueue.item);
+  }
+};
+
+/**
+ * Loads the previous item.
+ *
+ * @return {boolean} TRUE if loaded, FALSE if not.
+ */
+osmplayer.playlist.prototype.prev = function() {
+
+  // Move back into the playqueue.
+  this.playqueuepos = this.playqueuepos - 1;
+  this.playqueuepos = (this.playqueuepos < 0) ? 0 : this.playqueuepos;
+  var currentQueue = this.playqueue[this.playqueuepos];
+  if (currentQueue) {
+    return this.load(currentQueue.page, currentQueue.item);
+  }
+  return false;
+};
+
+/**
+ * Loads a playlist node.
+ *
+ * @param {number} index The index of the item you would like to load.
+ * @return {boolean} TRUE if loaded, FALSE if not.
+ */
+osmplayer.playlist.prototype.loadItem = function(index) {
+  if (index < this.nodes.length) {
+    this.setQueue();
+
+    // Get the teaser at the current index and deselect it.
+    var teaser = this.nodes[this.currentItem];
+    teaser.select(false);
+    this.currentItem = index;
+
+    // Get the new teaser and select it.
+    teaser = this.nodes[index];
+    teaser.select(true);
+    this.trigger('nodeLoad', teaser.node);
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * Loads the next page.
+ *
+ * @param {integer} loadIndex The index of the item to load.
+ * @return {boolean} TRUE if loaded, FALSE if not.
+ */
+osmplayer.playlist.prototype.nextPage = function(loadIndex) {
+  return this.load(this.page + 1, loadIndex);
+};
+
+/**
+ * Loads the previous page.
+ *
+ * @param {integer} loadIndex The index of the item to load.
+ * @return {boolean} TRUE if loaded, FALSE if not.
+ */
+osmplayer.playlist.prototype.prevPage = function(loadIndex) {
+  return this.load(this.page - 1, loadIndex);
+};
+
+/**
+ * Loads a playlist.
+ *
+ * @param {integer} page The page to load.
+ * @param {integer} loadIndex The index of the item to load.
+ * @return {boolean} TRUE if loaded, FALSE if not.
+ */
+osmplayer.playlist.prototype.load = function(page, loadIndex) {
+
+  // If the playlist and pages are the same, then no need to load.
+  if ((this.playlist == this.options.playlist) && (page == this.page)) {
+    return this.loadItem(loadIndex);
+  }
+
+  // Set the new playlist.
+  this.playlist = this.options.playlist;
+
+  // Return if there aren't any playlists to play.
+  if (!this.playlist) {
+    return false;
+  }
+
+  // Determine if we need to loop.
+  var maxPages = Math.floor(this.totalItems / this.options.pageLimit);
+  if (page > maxPages) {
+    if (this.options.loop) {
+      page = 0;
+      loadIndex = 0;
+    }
+    else {
+      return false;
+    }
+  }
+
+  // Say that we are busy.
+  if (this.elements.playlist_busy) {
+    this.elements.playlist_busy.show();
+  }
+
+  // Normalize the page.
+  page = page || 0;
+  page = (page < 0) ? 0 : page;
+
+  // Set the queue.
+  this.setQueue();
+
+  // Set the new page.
+  this.page = page;
+
+  // Hide or show the page based on if we are on the first page.
+  if (this.page == 0) {
+    this.pager.prevPage.hide();
+  }
+  else {
+    this.pager.prevPage.show();
+  }
+
+  // If the playlist is an object, then go ahead and set it.
+  if (typeof this.playlist == 'object') {
+    this.set(this.playlist, loadIndex);
+    if (this.playlist.endpoint) {
+      this.playlist = this.options.playlist = this.playlist.endpoint;
+    }
+    return true;
+  }
+
+  // Get the highest priority parser.
+  var parser = osmplayer.parser['default'];
+  for (var name in osmplayer.parser) {
+    if (osmplayer.parser.hasOwnProperty(name)) {
+      if (osmplayer.parser[name].valid(this.playlist)) {
+        if (osmplayer.parser[name].priority > parser.priority) {
+          parser = osmplayer.parser[name];
+        }
+      }
+    }
+  }
+
+  // The start index.
+  var start = this.page * this.options.pageLimit;
+
+  // Get the feed from the parser.
+  var feed = parser.getFeed(
+    this.playlist,
+    start,
+    this.options.pageLimit
+  );
+
+  // Build our request.
+  var request = {
+    type: 'GET',
+    url: feed,
+    success: (function(playlist) {
+      return function(data) {
+        playlist.set(parser.parse(data), loadIndex);
+      };
+    })(this),
+    error: (function(playlist) {
+      return function(XMLHttpRequest, textStatus, errorThrown) {
+        if (playlist.elements.playlist_busy) {
+          playlist.elements.playlist_busy.hide();
+        }
+        playlist.trigger('error', textStatus);
+      }
+    })(this)
+  };
+
+  // Set the data if applicable.
+  var dataType = '';
+  if (dataType = parser.getType()) {
+    request.dataType = dataType;
+  }
+
+  // Perform an ajax callback.
+  jQuery.ajax(request);
+
+  // Return that we did something.
+  return true;
+};
+/** The osmplayer namespace. */
+var osmplayer = osmplayer || {};
+
+/**
+ * @constructor
+ * @extends minplayer.display
+ * @class This class provides pager functionality.
+ *
+ * @param {object} context The jQuery context.
+ * @param {object} options This components options.
+ */
+osmplayer.pager = function(context, options) {
+
+  // Derive from display
+  minplayer.display.call(this, 'pager', context, options);
+};
+
+/** Derive from minplayer.display. */
+osmplayer.pager.prototype = new minplayer.display();
+
+/** Reset the constructor. */
+osmplayer.pager.prototype.constructor = osmplayer.pager;
+
+/**
+ * @see minplayer.plugin#construct
+ */
+osmplayer.pager.prototype.construct = function() {
+
+  // Call the minplayer plugin constructor.
+  minplayer.display.prototype.construct.call(this);
+
+  // Setup the prev button.
+  if (this.elements.prevPage) {
+    this.prevPage = this.elements.prevPage.click((function(pager) {
+      return function(event) {
+        event.preventDefault();
+        pager.trigger('prevPage');
+      };
+    })(this));
+  }
+
+  // Setup the next button.
+  if (this.elements.nextPage) {
+    this.nextPage = this.elements.nextPage.click((function(pager) {
+      return function(event) {
+        event.preventDefault();
+        pager.trigger('nextPage');
+      };
+    })(this));
+  }
+};
+/** The osmplayer namespace. */
+var osmplayer = osmplayer || {};
+
+/**
+ * @constructor
+ * @extends minplayer.display
+ * @class This class provides teaser functionality.
+ *
+ * @param {object} context The jQuery context.
+ * @param {object} options This components options.
+ */
+osmplayer.teaser = function(context, options) {
+
+  /** The preview image. */
+  this.preview = null;
+
+  // Derive from display
+  minplayer.display.call(this, 'teaser', context, options);
+};
+
+/** Derive from minplayer.display. */
+osmplayer.teaser.prototype = new minplayer.display();
+
+/** Reset the constructor. */
+osmplayer.teaser.prototype.constructor = osmplayer.teaser;
+
+/**
+ * Selects the teaser.
+ *
+ * @param {boolean} selected TRUE if selected, FALSE otherwise.
+ */
+osmplayer.teaser.prototype.select = function(selected) {
+};
+
+/**
+ * Sets the node.
+ *
+ * @param {object} node The node object to set.
+ */
+osmplayer.teaser.prototype.setNode = function(node) {
+
+  // Add this to the node info for this teaser.
+  this.node = node;
+
+  // Set the title of the teaser.
+  if (this.elements.title) {
+    this.elements.title.text(node.title);
+  }
+
+  // Load the thumbnail image if it exists.
+  if (node.mediafiles && node.mediafiles.image) {
+    var image = osmplayer.getImage(node.mediafiles, 'thumbnail');
+    if (image) {
+      if (this.elements.image) {
+        this.preview = new minplayer.image(this.elements.image);
+        this.preview.load(image);
+      }
+    }
+  }
+
+  // Bind when they click on this teaser.
+  this.display.unbind('click').click((function(teaser) {
+    return function(event) {
+      event.preventDefault();
+      teaser.trigger('nodeLoad', teaser.node);
+    };
+  })(this));
+};
diff --git a/public/admin/js/osmplayer/doc/files.html b/public/admin/js/osmplayer/doc/files.html
new file mode 100644
index 0000000000000000000000000000000000000000..8d627be4d7e28db2e420e5ef1c3d9eaf168ee99d
--- /dev/null
+++ b/public/admin/js/osmplayer/doc/files.html
@@ -0,0 +1,542 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+	<head>
+		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+		
+		<title>JsDoc Reference - File Index</title>
+		<meta name="generator" content="JsDoc Toolkit" />
+		
+		<style type="text/css">
+		/* default.css */
+body
+{
+	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
+	width: 800px;
+}
+
+.header
+{
+	clear: both;
+	background-color: #ccc;
+	padding: 8px;
+}
+
+h1
+{
+	font-size: 150%;
+	font-weight: bold;
+	padding: 0;
+	margin: 1em 0 0 .3em;
+}
+
+hr
+{
+	border: none 0;
+	border-top: 1px solid #7F8FB1;
+	height: 1px;
+}
+
+pre.code
+{
+	display: block;
+	padding: 8px;
+	border: 1px dashed #ccc;
+}
+
+#index
+{
+	margin-top: 24px;
+	float: left;
+	width: 160px;
+	position: absolute;
+	left: 8px;
+	background-color: #F3F3F3;
+	padding: 8px;
+}
+
+#content
+{
+	margin-left: 190px;
+	width: 600px;
+}
+
+.classList
+{
+	list-style-type: none;
+	padding: 0;
+	margin: 0 0 0 8px;
+	font-family: arial, sans-serif;
+	font-size: 1em;
+	overflow: auto;
+}
+
+.classList li
+{
+	padding: 0;
+	margin: 0 0 8px 0;
+}
+
+.summaryTable { width: 100%; }
+
+h1.classTitle
+{
+	font-size:170%;
+	line-height:130%;
+}
+
+h2 { font-size: 110%; }
+caption, div.sectionTitle
+{
+	background-color: #7F8FB1;
+	color: #fff;
+	font-size:130%;
+	text-align: left;
+	padding: 2px 6px 2px 6px;
+	border: 1px #7F8FB1 solid;
+}
+
+div.sectionTitle { margin-bottom: 8px; }
+.summaryTable thead { display: none; }
+
+.summaryTable td
+{
+	vertical-align: top;
+	padding: 4px;
+	border-bottom: 1px #7F8FB1 solid;
+	border-right: 1px #7F8FB1 solid;
+}
+
+/*col#summaryAttributes {}*/
+.summaryTable td.attributes
+{
+	border-left: 1px #7F8FB1 solid;
+	width: 140px;
+	text-align: right;
+}
+
+td.attributes, .fixedFont
+{
+	line-height: 15px;
+	color: #002EBE;
+	font-family: "Courier New",Courier,monospace;
+	font-size: 13px;
+}
+
+.summaryTable td.nameDescription
+{
+	text-align: left;
+	font-size: 13px;
+	line-height: 15px;
+}
+
+.summaryTable td.nameDescription, .description
+{
+	line-height: 15px;
+	padding: 4px;
+	padding-left: 4px;
+}
+
+.summaryTable { margin-bottom: 8px; }
+
+ul.inheritsList
+{
+	list-style: square;
+	margin-left: 20px;
+	padding-left: 0;
+}
+
+.detailList {
+	margin-left: 20px; 
+	line-height: 15px;
+}
+.detailList dt { margin-left: 20px; }
+
+.detailList .heading
+{
+	font-weight: bold;
+	padding-bottom: 6px;
+	margin-left: 0;
+}
+
+.light, td.attributes, .light a:link, .light a:visited
+{
+	color: #777;
+	font-style: italic;
+}
+
+.fineprint
+{
+	text-align: right;
+	font-size: 10px;
+}
+		</style>
+	</head>
+	
+	<body>
+		<div id="header">
+</div>
+		
+		<div id="index">
+			<div align="center"><a href="index.html">Class Index</a>
+| <a href="files.html">File Index</a></div>
+<hr />
+<h2>Classes</h2>
+<ul class="classList">
+	
+	<li><i><a href="symbols/_global_.html">_global_</a></i></li>
+	
+	<li><a href="symbols/jQuery.fn.minplayer.html">jQuery.fn.minplayer</a></li>
+	
+	<li><a href="symbols/jQuery.fn.osmplayer.html">jQuery.fn.osmplayer</a></li>
+	
+	<li><a href="symbols/minplayer.async.html">minplayer.async</a></li>
+	
+	<li><a href="symbols/minplayer.compatibility.html">minplayer.compatibility</a></li>
+	
+	<li><a href="symbols/minplayer.display.html">minplayer.display</a></li>
+	
+	<li><a href="symbols/minplayer.file.html">minplayer.file</a></li>
+	
+	<li><a href="symbols/minplayer.flags.html">minplayer.flags</a></li>
+	
+	<li><a href="symbols/minplayer.image.html">minplayer.image</a></li>
+	
+	<li><a href="symbols/minplayer.players.base.html">minplayer.players.base</a></li>
+	
+	<li><a href="symbols/minplayer.players.flash.html">minplayer.players.flash</a></li>
+	
+	<li><a href="symbols/minplayer.players.html5.html">minplayer.players.html5</a></li>
+	
+	<li><a href="symbols/minplayer.players.minplayer.html">minplayer.players.minplayer</a></li>
+	
+	<li><a href="symbols/minplayer.players.vimeo.html">minplayer.players.vimeo</a></li>
+	
+	<li><a href="symbols/minplayer.players.youtube.html">minplayer.players.youtube</a></li>
+	
+	<li><a href="symbols/minplayer.plugin.html">minplayer.plugin</a></li>
+	
+	<li><a href="symbols/osmplayer.html">osmplayer</a></li>
+	
+	<li><a href="symbols/osmplayer.pager.html">osmplayer.pager</a></li>
+	
+	<li><a href="symbols/osmplayer.playlist.html">osmplayer.playlist</a></li>
+	
+	<li><a href="symbols/osmplayer.teaser.html">osmplayer.teaser</a></li>
+	
+</ul>
+<hr />
+		</div>
+		
+		<div id="content">
+			<h1 class="classTitle">File Index</h1>
+			
+			
+			<div>
+				<h2><a href="symbols/src/minplayer_src_minplayer.async.js.html">minplayer/src/minplayer.async.js</a></h2>
+				
+				<dl>
+					
+					
+					
+					
+				</dl>
+			</div>
+			<hr />
+			
+			<div>
+				<h2><a href="symbols/src/minplayer_src_minplayer.compatibility.js.html">minplayer/src/minplayer.compatibility.js</a></h2>
+				
+				<dl>
+					
+					
+					
+					
+				</dl>
+			</div>
+			<hr />
+			
+			<div>
+				<h2><a href="symbols/src/minplayer_src_minplayer.controller.js.html">minplayer/src/minplayer.controller.js</a></h2>
+				
+				<dl>
+					
+					
+					
+					
+				</dl>
+			</div>
+			<hr />
+			
+			<div>
+				<h2><a href="symbols/src/minplayer_src_minplayer.display.js.html">minplayer/src/minplayer.display.js</a></h2>
+				
+				<dl>
+					
+					
+					
+					
+				</dl>
+			</div>
+			<hr />
+			
+			<div>
+				<h2><a href="symbols/src/minplayer_src_minplayer.file.js.html">minplayer/src/minplayer.file.js</a></h2>
+				
+				<dl>
+					
+					
+					
+					
+				</dl>
+			</div>
+			<hr />
+			
+			<div>
+				<h2><a href="symbols/src/minplayer_src_minplayer.flags.js.html">minplayer/src/minplayer.flags.js</a></h2>
+				
+				<dl>
+					
+					
+					
+					
+				</dl>
+			</div>
+			<hr />
+			
+			<div>
+				<h2><a href="symbols/src/minplayer_src_minplayer.image.js.html">minplayer/src/minplayer.image.js</a></h2>
+				
+				<dl>
+					
+					
+					
+					
+				</dl>
+			</div>
+			<hr />
+			
+			<div>
+				<h2><a href="symbols/src/minplayer_src_minplayer.js.html">minplayer/src/minplayer.js</a></h2>
+				
+				<dl>
+					
+					
+					
+					
+				</dl>
+			</div>
+			<hr />
+			
+			<div>
+				<h2><a href="symbols/src/minplayer_src_minplayer.players.base.js.html">minplayer/src/minplayer.players.base.js</a></h2>
+				
+				<dl>
+					
+					
+					
+					
+				</dl>
+			</div>
+			<hr />
+			
+			<div>
+				<h2><a href="symbols/src/minplayer_src_minplayer.players.flash.js.html">minplayer/src/minplayer.players.flash.js</a></h2>
+				
+				<dl>
+					
+					
+					
+					
+				</dl>
+			</div>
+			<hr />
+			
+			<div>
+				<h2><a href="symbols/src/minplayer_src_minplayer.players.html5.js.html">minplayer/src/minplayer.players.html5.js</a></h2>
+				
+				<dl>
+					
+					
+					
+					
+				</dl>
+			</div>
+			<hr />
+			
+			<div>
+				<h2><a href="symbols/src/minplayer_src_minplayer.players.minplayer.js.html">minplayer/src/minplayer.players.minplayer.js</a></h2>
+				
+				<dl>
+					
+					
+					
+					
+				</dl>
+			</div>
+			<hr />
+			
+			<div>
+				<h2><a href="symbols/src/minplayer_src_minplayer.players.vimeo.js.html">minplayer/src/minplayer.players.vimeo.js</a></h2>
+				
+				<dl>
+					
+					
+					
+					
+				</dl>
+			</div>
+			<hr />
+			
+			<div>
+				<h2><a href="symbols/src/minplayer_src_minplayer.players.youtube.js.html">minplayer/src/minplayer.players.youtube.js</a></h2>
+				
+				<dl>
+					
+					
+					
+					
+				</dl>
+			</div>
+			<hr />
+			
+			<div>
+				<h2><a href="symbols/src/minplayer_src_minplayer.playLoader.js.html">minplayer/src/minplayer.playLoader.js</a></h2>
+				
+				<dl>
+					
+					
+					
+					
+				</dl>
+			</div>
+			<hr />
+			
+			<div>
+				<h2><a href="symbols/src/minplayer_src_minplayer.plugin.js.html">minplayer/src/minplayer.plugin.js</a></h2>
+				
+				<dl>
+					
+					
+					
+					
+				</dl>
+			</div>
+			<hr />
+			
+			<div>
+				<h2><a href="symbols/src/src_osmplayer.js.html">src/osmplayer.js</a></h2>
+				
+				<dl>
+					
+					
+					
+					
+				</dl>
+			</div>
+			<hr />
+			
+			<div>
+				<h2><a href="symbols/src/src_osmplayer.pager.js.html">src/osmplayer.pager.js</a></h2>
+				
+				<dl>
+					
+					
+					
+					
+				</dl>
+			</div>
+			<hr />
+			
+			<div>
+				<h2><a href="symbols/src/src_osmplayer.parser.asx.js.html">src/osmplayer.parser.asx.js</a></h2>
+				
+				<dl>
+					
+					
+					
+					
+				</dl>
+			</div>
+			<hr />
+			
+			<div>
+				<h2><a href="symbols/src/src_osmplayer.parser.default.js.html">src/osmplayer.parser.default.js</a></h2>
+				
+				<dl>
+					
+					
+					
+					
+				</dl>
+			</div>
+			<hr />
+			
+			<div>
+				<h2><a href="symbols/src/src_osmplayer.parser.rss.js.html">src/osmplayer.parser.rss.js</a></h2>
+				
+				<dl>
+					
+					
+					
+					
+				</dl>
+			</div>
+			<hr />
+			
+			<div>
+				<h2><a href="symbols/src/src_osmplayer.parser.xspf.js.html">src/osmplayer.parser.xspf.js</a></h2>
+				
+				<dl>
+					
+					
+					
+					
+				</dl>
+			</div>
+			<hr />
+			
+			<div>
+				<h2><a href="symbols/src/src_osmplayer.parser.youtube.js.html">src/osmplayer.parser.youtube.js</a></h2>
+				
+				<dl>
+					
+					
+					
+					
+				</dl>
+			</div>
+			<hr />
+			
+			<div>
+				<h2><a href="symbols/src/src_osmplayer.playlist.js.html">src/osmplayer.playlist.js</a></h2>
+				
+				<dl>
+					
+					
+					
+					
+				</dl>
+			</div>
+			<hr />
+			
+			<div>
+				<h2><a href="symbols/src/src_osmplayer.teaser.js.html">src/osmplayer.teaser.js</a></h2>
+				
+				<dl>
+					
+					
+					
+					
+				</dl>
+			</div>
+			<hr />
+			
+			
+		</div>
+		<div class="fineprint" style="clear:both">
+			
+			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blankt">JsDoc Toolkit</a> 2.4.0 on Sun Aug 19 2012 12:11:28 GMT-0500 (CDT)
+		</div>
+	</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/doc/index.html b/public/admin/js/osmplayer/doc/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..cc0c8a1987ca594dada304a72514aaadb204bd46
--- /dev/null
+++ b/public/admin/js/osmplayer/doc/index.html
@@ -0,0 +1,369 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+	<head>
+		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+		
+		<title>JsDoc Reference - Index</title>
+		<meta name="generator" content="JsDoc Toolkit" />
+		
+		<style type="text/css">
+		/* default.css */
+body
+{
+	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
+	width: 800px;
+}
+
+.header
+{
+	clear: both;
+	background-color: #ccc;
+	padding: 8px;
+}
+
+h1
+{
+	font-size: 150%;
+	font-weight: bold;
+	padding: 0;
+	margin: 1em 0 0 .3em;
+}
+
+hr
+{
+	border: none 0;
+	border-top: 1px solid #7F8FB1;
+	height: 1px;
+}
+
+pre.code
+{
+	display: block;
+	padding: 8px;
+	border: 1px dashed #ccc;
+}
+
+#index
+{
+	margin-top: 24px;
+	float: left;
+	width: 160px;
+	position: absolute;
+	left: 8px;
+	background-color: #F3F3F3;
+	padding: 8px;
+}
+
+#content
+{
+	margin-left: 190px;
+	width: 600px;
+}
+
+.classList
+{
+	list-style-type: none;
+	padding: 0;
+	margin: 0 0 0 8px;
+	font-family: arial, sans-serif;
+	font-size: 1em;
+	overflow: auto;
+}
+
+.classList li
+{
+	padding: 0;
+	margin: 0 0 8px 0;
+}
+
+.summaryTable { width: 100%; }
+
+h1.classTitle
+{
+	font-size:170%;
+	line-height:130%;
+}
+
+h2 { font-size: 110%; }
+caption, div.sectionTitle
+{
+	background-color: #7F8FB1;
+	color: #fff;
+	font-size:130%;
+	text-align: left;
+	padding: 2px 6px 2px 6px;
+	border: 1px #7F8FB1 solid;
+}
+
+div.sectionTitle { margin-bottom: 8px; }
+.summaryTable thead { display: none; }
+
+.summaryTable td
+{
+	vertical-align: top;
+	padding: 4px;
+	border-bottom: 1px #7F8FB1 solid;
+	border-right: 1px #7F8FB1 solid;
+}
+
+/*col#summaryAttributes {}*/
+.summaryTable td.attributes
+{
+	border-left: 1px #7F8FB1 solid;
+	width: 140px;
+	text-align: right;
+}
+
+td.attributes, .fixedFont
+{
+	line-height: 15px;
+	color: #002EBE;
+	font-family: "Courier New",Courier,monospace;
+	font-size: 13px;
+}
+
+.summaryTable td.nameDescription
+{
+	text-align: left;
+	font-size: 13px;
+	line-height: 15px;
+}
+
+.summaryTable td.nameDescription, .description
+{
+	line-height: 15px;
+	padding: 4px;
+	padding-left: 4px;
+}
+
+.summaryTable { margin-bottom: 8px; }
+
+ul.inheritsList
+{
+	list-style: square;
+	margin-left: 20px;
+	padding-left: 0;
+}
+
+.detailList {
+	margin-left: 20px; 
+	line-height: 15px;
+}
+.detailList dt { margin-left: 20px; }
+
+.detailList .heading
+{
+	font-weight: bold;
+	padding-bottom: 6px;
+	margin-left: 0;
+}
+
+.light, td.attributes, .light a:link, .light a:visited
+{
+	color: #777;
+	font-style: italic;
+}
+
+.fineprint
+{
+	text-align: right;
+	font-size: 10px;
+}
+		</style>
+	</head>
+	
+	<body>
+		<div id="header">
+</div>
+		
+		<div id="index">
+			<div align="center"><a href="index.html">Class Index</a>
+| <a href="files.html">File Index</a></div>
+<hr />
+<h2>Classes</h2>
+<ul class="classList">
+	
+	<li><i><a href="symbols/_global_.html">_global_</a></i></li>
+	
+	<li><a href="symbols/jQuery.fn.minplayer.html">jQuery.fn.minplayer</a></li>
+	
+	<li><a href="symbols/jQuery.fn.osmplayer.html">jQuery.fn.osmplayer</a></li>
+	
+	<li><a href="symbols/minplayer.async.html">minplayer.async</a></li>
+	
+	<li><a href="symbols/minplayer.compatibility.html">minplayer.compatibility</a></li>
+	
+	<li><a href="symbols/minplayer.display.html">minplayer.display</a></li>
+	
+	<li><a href="symbols/minplayer.file.html">minplayer.file</a></li>
+	
+	<li><a href="symbols/minplayer.flags.html">minplayer.flags</a></li>
+	
+	<li><a href="symbols/minplayer.image.html">minplayer.image</a></li>
+	
+	<li><a href="symbols/minplayer.players.base.html">minplayer.players.base</a></li>
+	
+	<li><a href="symbols/minplayer.players.flash.html">minplayer.players.flash</a></li>
+	
+	<li><a href="symbols/minplayer.players.html5.html">minplayer.players.html5</a></li>
+	
+	<li><a href="symbols/minplayer.players.minplayer.html">minplayer.players.minplayer</a></li>
+	
+	<li><a href="symbols/minplayer.players.vimeo.html">minplayer.players.vimeo</a></li>
+	
+	<li><a href="symbols/minplayer.players.youtube.html">minplayer.players.youtube</a></li>
+	
+	<li><a href="symbols/minplayer.plugin.html">minplayer.plugin</a></li>
+	
+	<li><a href="symbols/osmplayer.html">osmplayer</a></li>
+	
+	<li><a href="symbols/osmplayer.pager.html">osmplayer.pager</a></li>
+	
+	<li><a href="symbols/osmplayer.playlist.html">osmplayer.playlist</a></li>
+	
+	<li><a href="symbols/osmplayer.teaser.html">osmplayer.teaser</a></li>
+	
+</ul>
+<hr />
+		</div>
+		
+		<div id="content">
+			<h1 class="classTitle">Class Index</h1>
+			
+			
+			<div>
+				<h2><a href="symbols/_global_.html">_global_</a></h2>
+				
+			</div>
+			<hr />
+			
+			<div>
+				<h2><a href="symbols/jQuery.fn.minplayer.html">jQuery.fn.minplayer</a></h2>
+				
+			</div>
+			<hr />
+			
+			<div>
+				<h2><a href="symbols/jQuery.fn.osmplayer.html">jQuery.fn.osmplayer</a></h2>
+				
+			</div>
+			<hr />
+			
+			<div>
+				<h2><a href="symbols/minplayer.async.html">minplayer.async</a></h2>
+				This class keeps track of asynchronous get requests for certain
+variables within the player.
+			</div>
+			<hr />
+			
+			<div>
+				<h2><a href="symbols/minplayer.compatibility.html">minplayer.compatibility</a></h2>
+				This class is used to define the types of media that can be played
+within the browser.
+			</div>
+			<hr />
+			
+			<div>
+				<h2><a href="symbols/minplayer.display.html">minplayer.display</a></h2>
+				Base class used to provide the display and options for any component
+deriving from this class.
+			</div>
+			<hr />
+			
+			<div>
+				<h2><a href="symbols/minplayer.file.html">minplayer.file</a></h2>
+				A wrapper class used to provide all the data necessary to control an
+individual file within this media player.
+			</div>
+			<hr />
+			
+			<div>
+				<h2><a href="symbols/minplayer.flags.html">minplayer.flags</a></h2>
+				This is a class used to keep track of flag states
+which is used to control the busy cursor, big play button, among other
+items in which multiple components can have an interest in hiding or
+showing a single element on the screen.
+			</div>
+			<hr />
+			
+			<div>
+				<h2><a href="symbols/minplayer.image.html">minplayer.image</a></h2>
+				A class to easily handle images.
+			</div>
+			<hr />
+			
+			<div>
+				<h2><a href="symbols/minplayer.players.base.html">minplayer.players.base</a></h2>
+				The base media player class where all media players derive from.
+			</div>
+			<hr />
+			
+			<div>
+				<h2><a href="symbols/minplayer.players.flash.html">minplayer.players.flash</a></h2>
+				The Flash media player class to control the flash fallback.
+			</div>
+			<hr />
+			
+			<div>
+				<h2><a href="symbols/minplayer.players.html5.html">minplayer.players.html5</a></h2>
+				The HTML5 media player implementation.
+			</div>
+			<hr />
+			
+			<div>
+				<h2><a href="symbols/minplayer.players.minplayer.html">minplayer.players.minplayer</a></h2>
+				The Flash media player class to control the flash fallback.
+			</div>
+			<hr />
+			
+			<div>
+				<h2><a href="symbols/minplayer.players.vimeo.html">minplayer.players.vimeo</a></h2>
+				The vimeo media player.
+			</div>
+			<hr />
+			
+			<div>
+				<h2><a href="symbols/minplayer.players.youtube.html">minplayer.players.youtube</a></h2>
+				The YouTube media player.
+			</div>
+			<hr />
+			
+			<div>
+				<h2><a href="symbols/minplayer.plugin.html">minplayer.plugin</a></h2>
+				The base class for all plugins.
+			</div>
+			<hr />
+			
+			<div>
+				<h2><a href="symbols/osmplayer.html">osmplayer</a></h2>
+				The main osmplayer class.
+			</div>
+			<hr />
+			
+			<div>
+				<h2><a href="symbols/osmplayer.pager.html">osmplayer.pager</a></h2>
+				This class provides pager functionality.
+			</div>
+			<hr />
+			
+			<div>
+				<h2><a href="symbols/osmplayer.playlist.html">osmplayer.playlist</a></h2>
+				This class creates the playlist functionality for the minplayer.
+			</div>
+			<hr />
+			
+			<div>
+				<h2><a href="symbols/osmplayer.teaser.html">osmplayer.teaser</a></h2>
+				This class provides teaser functionality.
+			</div>
+			<hr />
+			
+			
+		</div>
+		<div class="fineprint" style="clear:both">
+			
+			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blankt">JsDoc Toolkit</a> 2.4.0 on Sun Aug 19 2012 12:11:28 GMT-0500 (CDT)
+		</div>
+	</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/doc/symbols/_global_.html b/public/admin/js/osmplayer/doc/symbols/_global_.html
new file mode 100644
index 0000000000000000000000000000000000000000..28e8371a0ffb2f7f094a1c3024e5df2be28c1cfc
--- /dev/null
+++ b/public/admin/js/osmplayer/doc/symbols/_global_.html
@@ -0,0 +1,626 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+	<head>
+		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+		<meta name="generator" content="JsDoc Toolkit" />
+		
+		<title>JsDoc Reference - _global_</title>
+
+		<style type="text/css">
+			/* default.css */
+body
+{
+	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
+	width: 800px;
+}
+
+.header
+{
+	clear: both;
+	background-color: #ccc;
+	padding: 8px;
+}
+
+h1
+{
+	font-size: 150%;
+	font-weight: bold;
+	padding: 0;
+	margin: 1em 0 0 .3em;
+}
+
+hr
+{
+	border: none 0;
+	border-top: 1px solid #7F8FB1;
+	height: 1px;
+}
+
+pre.code
+{
+	display: block;
+	padding: 8px;
+	border: 1px dashed #ccc;
+}
+
+#index
+{
+	margin-top: 24px;
+	float: left;
+	width: 160px;
+	position: absolute;
+	left: 8px;
+	background-color: #F3F3F3;
+	padding: 8px;
+}
+
+#content
+{
+	margin-left: 190px;
+	width: 600px;
+}
+
+.classList
+{
+	list-style-type: none;
+	padding: 0;
+	margin: 0 0 0 8px;
+	font-family: arial, sans-serif;
+	font-size: 1em;
+	overflow: auto;
+}
+
+.classList li
+{
+	padding: 0;
+	margin: 0 0 8px 0;
+}
+
+.summaryTable { width: 100%; }
+
+h1.classTitle
+{
+	font-size:170%;
+	line-height:130%;
+}
+
+h2 { font-size: 110%; }
+caption, div.sectionTitle
+{
+	background-color: #7F8FB1;
+	color: #fff;
+	font-size:130%;
+	text-align: left;
+	padding: 2px 6px 2px 6px;
+	border: 1px #7F8FB1 solid;
+}
+
+div.sectionTitle { margin-bottom: 8px; }
+.summaryTable thead { display: none; }
+
+.summaryTable td
+{
+	vertical-align: top;
+	padding: 4px;
+	border-bottom: 1px #7F8FB1 solid;
+	border-right: 1px #7F8FB1 solid;
+}
+
+/*col#summaryAttributes {}*/
+.summaryTable td.attributes
+{
+	border-left: 1px #7F8FB1 solid;
+	width: 140px;
+	text-align: right;
+}
+
+td.attributes, .fixedFont
+{
+	line-height: 15px;
+	color: #002EBE;
+	font-family: "Courier New",Courier,monospace;
+	font-size: 13px;
+}
+
+.summaryTable td.nameDescription
+{
+	text-align: left;
+	font-size: 13px;
+	line-height: 15px;
+}
+
+.summaryTable td.nameDescription, .description
+{
+	line-height: 15px;
+	padding: 4px;
+	padding-left: 4px;
+}
+
+.summaryTable { margin-bottom: 8px; }
+
+ul.inheritsList
+{
+	list-style: square;
+	margin-left: 20px;
+	padding-left: 0;
+}
+
+.detailList {
+	margin-left: 20px; 
+	line-height: 15px;
+}
+.detailList dt { margin-left: 20px; }
+
+.detailList .heading
+{
+	font-weight: bold;
+	padding-bottom: 6px;
+	margin-left: 0;
+}
+
+.light, td.attributes, .light a:link, .light a:visited
+{
+	color: #777;
+	font-style: italic;
+}
+
+.fineprint
+{
+	text-align: right;
+	font-size: 10px;
+}
+		</style>
+	</head>
+
+	<body>
+<!-- ============================== header ================================= -->	
+		<!-- begin static/header.html -->
+		<div id="header">
+</div>
+		<!-- end static/header.html -->
+
+<!-- ============================== classes index ============================ -->
+		<div id="index">
+			<!-- begin publish.classesIndex -->
+			<div align="center"><a href="../index.html">Class Index</a>
+| <a href="../files.html">File Index</a></div>
+<hr />
+<h2>Classes</h2>
+<ul class="classList">
+	
+	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
+	
+	<li><a href="../symbols/jQuery.fn.minplayer.html">jQuery.fn.minplayer</a></li>
+	
+	<li><a href="../symbols/jQuery.fn.osmplayer.html">jQuery.fn.osmplayer</a></li>
+	
+	<li><a href="../symbols/minplayer.async.html">minplayer.async</a></li>
+	
+	<li><a href="../symbols/minplayer.compatibility.html">minplayer.compatibility</a></li>
+	
+	<li><a href="../symbols/minplayer.display.html">minplayer.display</a></li>
+	
+	<li><a href="../symbols/minplayer.file.html">minplayer.file</a></li>
+	
+	<li><a href="../symbols/minplayer.flags.html">minplayer.flags</a></li>
+	
+	<li><a href="../symbols/minplayer.image.html">minplayer.image</a></li>
+	
+	<li><a href="../symbols/minplayer.players.base.html">minplayer.players.base</a></li>
+	
+	<li><a href="../symbols/minplayer.players.flash.html">minplayer.players.flash</a></li>
+	
+	<li><a href="../symbols/minplayer.players.html5.html">minplayer.players.html5</a></li>
+	
+	<li><a href="../symbols/minplayer.players.minplayer.html">minplayer.players.minplayer</a></li>
+	
+	<li><a href="../symbols/minplayer.players.vimeo.html">minplayer.players.vimeo</a></li>
+	
+	<li><a href="../symbols/minplayer.players.youtube.html">minplayer.players.youtube</a></li>
+	
+	<li><a href="../symbols/minplayer.plugin.html">minplayer.plugin</a></li>
+	
+	<li><a href="../symbols/osmplayer.html">osmplayer</a></li>
+	
+	<li><a href="../symbols/osmplayer.pager.html">osmplayer.pager</a></li>
+	
+	<li><a href="../symbols/osmplayer.playlist.html">osmplayer.playlist</a></li>
+	
+	<li><a href="../symbols/osmplayer.teaser.html">osmplayer.teaser</a></li>
+	
+</ul>
+<hr />
+			<!-- end publish.classesIndex -->
+		</div>
+		
+		<div id="content">
+<!-- ============================== class title ============================ -->
+			<h1 class="classTitle">
+				
+				Built-In Namespace _global_
+			</h1>
+
+<!-- ============================== class summary ========================== -->			
+			<p class="description">
+				
+				
+			
+				
+				
+				
+			</p>
+
+<!-- ============================== constructor summary ==================== -->			
+			
+
+<!-- ============================== properties summary ===================== -->
+			
+				
+				
+				<table class="summaryTable" cellspacing="0" summary="A summary of the fields documented in the class _global_.">
+					<caption>Field Summary</caption>
+					<thead>
+						<tr>
+							<th scope="col">Field Attributes</th>
+							<th scope="col">Field Name and Description</th>
+						</tr>
+					</thead>
+					<tbody>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont">
+								<b><a href="../symbols/_global_.html#minplayer">minplayer</a></b>
+								</div>
+								<div class="description">The minplayer namespace.</div>
+							</td>
+						</tr>
+					
+					</tbody>
+				</table>
+				
+				
+				
+			
+
+<!-- ============================== methods summary ======================== -->
+			
+				
+				
+				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class _global_.">
+					<caption>Method Summary</caption>
+					<thead>
+						<tr>
+							<th scope="col">Method Attributes</th>
+							<th scope="col">Method Name and Description</th>
+						</tr>
+					</thead>
+					<tbody>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/_global_.html#checkPlayType">checkPlayType</a></b>(elem, playType)
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/_global_.html#getFeed">getFeed</a></b>(feed, start, numItems)
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/_global_.html#getType">getType</a></b>(feed)
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/_global_.html#parse">parse</a></b>(data)
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/_global_.html#valid">valid</a></b>(feed)
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+					</tbody>
+				</table>
+				
+				
+				
+			
+<!-- ============================== events summary ======================== -->
+			
+
+<!-- ============================== constructor details ==================== -->		
+			
+
+<!-- ============================== field details ========================== -->		
+			
+				<div class="sectionTitle">
+					Field Detail
+				</div>
+				
+					<a name="minplayer"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>minplayer</b>
+					
+					</div>
+					<div class="description">
+						The minplayer namespace.
+						
+							<br />
+							<i>Defined in: </i> <a href="../symbols/src/minplayer_src_minplayer.compatibility.js.html">minplayer.compatibility.js</a>.
+						
+						
+					</div>
+					
+					
+
+						
+						
+						
+						
+
+					
+				
+			
+
+<!-- ============================== method details ========================= -->		
+			
+				<div class="sectionTitle">
+					Method Detail
+				</div>
+				
+					<a name="checkPlayType"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>checkPlayType</b>(elem, playType)
+					
+					</div>
+					<div class="description">
+						
+						
+							<br />
+							<i>Defined in: </i> <a href="../symbols/src/minplayer_src_minplayer.compatibility.js.html">minplayer.compatibility.js</a>.
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<b>elem</b>
+									
+								</dt>
+								<dd></dd>
+							
+								<dt>
+									<b>playType</b>
+									
+								</dt>
+								<dd></dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name="getFeed"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>getFeed</b>(feed, start, numItems)
+					
+					</div>
+					<div class="description">
+						
+						
+							<br />
+							<i>Defined in: </i> <a href="../symbols/src/src_osmplayer.parser.default.js.html">osmplayer.parser.default.js</a>.
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<b>feed</b>
+									
+								</dt>
+								<dd></dd>
+							
+								<dt>
+									<b>start</b>
+									
+								</dt>
+								<dd></dd>
+							
+								<dt>
+									<b>numItems</b>
+									
+								</dt>
+								<dd></dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name="getType"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>getType</b>(feed)
+					
+					</div>
+					<div class="description">
+						
+						
+							<br />
+							<i>Defined in: </i> <a href="../symbols/src/src_osmplayer.parser.default.js.html">osmplayer.parser.default.js</a>.
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<b>feed</b>
+									
+								</dt>
+								<dd></dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name="parse"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>parse</b>(data)
+					
+					</div>
+					<div class="description">
+						
+						
+							<br />
+							<i>Defined in: </i> <a href="../symbols/src/src_osmplayer.parser.default.js.html">osmplayer.parser.default.js</a>.
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<b>data</b>
+									
+								</dt>
+								<dd></dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name="valid"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>valid</b>(feed)
+					
+					</div>
+					<div class="description">
+						
+						
+							<br />
+							<i>Defined in: </i> <a href="../symbols/src/src_osmplayer.parser.default.js.html">osmplayer.parser.default.js</a>.
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<b>feed</b>
+									
+								</dt>
+								<dd></dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+						
+						
+
+					
+				
+			
+			
+<!-- ============================== event details ========================= -->		
+			
+			
+			<hr />
+		</div>
+
+		
+<!-- ============================== footer ================================= -->
+		<div class="fineprint" style="clear:both">
+			
+			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Sun Aug 19 2012 12:11:27 GMT-0500 (CDT)
+		</div>
+	</body>
+</html>
diff --git a/public/admin/js/osmplayer/doc/symbols/jQuery.fn.minplayer.html b/public/admin/js/osmplayer/doc/symbols/jQuery.fn.minplayer.html
new file mode 100644
index 0000000000000000000000000000000000000000..f630c0ba1d0726237d87e83a4a65451cb81f991d
--- /dev/null
+++ b/public/admin/js/osmplayer/doc/symbols/jQuery.fn.minplayer.html
@@ -0,0 +1,355 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+	<head>
+		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+		<meta name="generator" content="JsDoc Toolkit" />
+		
+		<title>JsDoc Reference - jQuery.fn.minplayer</title>
+
+		<style type="text/css">
+			/* default.css */
+body
+{
+	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
+	width: 800px;
+}
+
+.header
+{
+	clear: both;
+	background-color: #ccc;
+	padding: 8px;
+}
+
+h1
+{
+	font-size: 150%;
+	font-weight: bold;
+	padding: 0;
+	margin: 1em 0 0 .3em;
+}
+
+hr
+{
+	border: none 0;
+	border-top: 1px solid #7F8FB1;
+	height: 1px;
+}
+
+pre.code
+{
+	display: block;
+	padding: 8px;
+	border: 1px dashed #ccc;
+}
+
+#index
+{
+	margin-top: 24px;
+	float: left;
+	width: 160px;
+	position: absolute;
+	left: 8px;
+	background-color: #F3F3F3;
+	padding: 8px;
+}
+
+#content
+{
+	margin-left: 190px;
+	width: 600px;
+}
+
+.classList
+{
+	list-style-type: none;
+	padding: 0;
+	margin: 0 0 0 8px;
+	font-family: arial, sans-serif;
+	font-size: 1em;
+	overflow: auto;
+}
+
+.classList li
+{
+	padding: 0;
+	margin: 0 0 8px 0;
+}
+
+.summaryTable { width: 100%; }
+
+h1.classTitle
+{
+	font-size:170%;
+	line-height:130%;
+}
+
+h2 { font-size: 110%; }
+caption, div.sectionTitle
+{
+	background-color: #7F8FB1;
+	color: #fff;
+	font-size:130%;
+	text-align: left;
+	padding: 2px 6px 2px 6px;
+	border: 1px #7F8FB1 solid;
+}
+
+div.sectionTitle { margin-bottom: 8px; }
+.summaryTable thead { display: none; }
+
+.summaryTable td
+{
+	vertical-align: top;
+	padding: 4px;
+	border-bottom: 1px #7F8FB1 solid;
+	border-right: 1px #7F8FB1 solid;
+}
+
+/*col#summaryAttributes {}*/
+.summaryTable td.attributes
+{
+	border-left: 1px #7F8FB1 solid;
+	width: 140px;
+	text-align: right;
+}
+
+td.attributes, .fixedFont
+{
+	line-height: 15px;
+	color: #002EBE;
+	font-family: "Courier New",Courier,monospace;
+	font-size: 13px;
+}
+
+.summaryTable td.nameDescription
+{
+	text-align: left;
+	font-size: 13px;
+	line-height: 15px;
+}
+
+.summaryTable td.nameDescription, .description
+{
+	line-height: 15px;
+	padding: 4px;
+	padding-left: 4px;
+}
+
+.summaryTable { margin-bottom: 8px; }
+
+ul.inheritsList
+{
+	list-style: square;
+	margin-left: 20px;
+	padding-left: 0;
+}
+
+.detailList {
+	margin-left: 20px; 
+	line-height: 15px;
+}
+.detailList dt { margin-left: 20px; }
+
+.detailList .heading
+{
+	font-weight: bold;
+	padding-bottom: 6px;
+	margin-left: 0;
+}
+
+.light, td.attributes, .light a:link, .light a:visited
+{
+	color: #777;
+	font-style: italic;
+}
+
+.fineprint
+{
+	text-align: right;
+	font-size: 10px;
+}
+		</style>
+	</head>
+
+	<body>
+<!-- ============================== header ================================= -->	
+		<!-- begin static/header.html -->
+		<div id="header">
+</div>
+		<!-- end static/header.html -->
+
+<!-- ============================== classes index ============================ -->
+		<div id="index">
+			<!-- begin publish.classesIndex -->
+			<div align="center"><a href="../index.html">Class Index</a>
+| <a href="../files.html">File Index</a></div>
+<hr />
+<h2>Classes</h2>
+<ul class="classList">
+	
+	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
+	
+	<li><a href="../symbols/jQuery.fn.minplayer.html">jQuery.fn.minplayer</a></li>
+	
+	<li><a href="../symbols/jQuery.fn.osmplayer.html">jQuery.fn.osmplayer</a></li>
+	
+	<li><a href="../symbols/minplayer.async.html">minplayer.async</a></li>
+	
+	<li><a href="../symbols/minplayer.compatibility.html">minplayer.compatibility</a></li>
+	
+	<li><a href="../symbols/minplayer.display.html">minplayer.display</a></li>
+	
+	<li><a href="../symbols/minplayer.file.html">minplayer.file</a></li>
+	
+	<li><a href="../symbols/minplayer.flags.html">minplayer.flags</a></li>
+	
+	<li><a href="../symbols/minplayer.image.html">minplayer.image</a></li>
+	
+	<li><a href="../symbols/minplayer.players.base.html">minplayer.players.base</a></li>
+	
+	<li><a href="../symbols/minplayer.players.flash.html">minplayer.players.flash</a></li>
+	
+	<li><a href="../symbols/minplayer.players.html5.html">minplayer.players.html5</a></li>
+	
+	<li><a href="../symbols/minplayer.players.minplayer.html">minplayer.players.minplayer</a></li>
+	
+	<li><a href="../symbols/minplayer.players.vimeo.html">minplayer.players.vimeo</a></li>
+	
+	<li><a href="../symbols/minplayer.players.youtube.html">minplayer.players.youtube</a></li>
+	
+	<li><a href="../symbols/minplayer.plugin.html">minplayer.plugin</a></li>
+	
+	<li><a href="../symbols/osmplayer.html">osmplayer</a></li>
+	
+	<li><a href="../symbols/osmplayer.pager.html">osmplayer.pager</a></li>
+	
+	<li><a href="../symbols/osmplayer.playlist.html">osmplayer.playlist</a></li>
+	
+	<li><a href="../symbols/osmplayer.teaser.html">osmplayer.teaser</a></li>
+	
+</ul>
+<hr />
+			<!-- end publish.classesIndex -->
+		</div>
+		
+		<div id="content">
+<!-- ============================== class title ============================ -->
+			<h1 class="classTitle">
+				
+				Class jQuery.fn.minplayer
+			</h1>
+
+<!-- ============================== class summary ========================== -->			
+			<p class="description">
+				
+				
+			
+				
+				
+				
+					<br /><i>Defined in: </i> <a href="../symbols/src/minplayer_src_minplayer.js.html">minplayer.js</a>.
+				
+			</p>
+
+<!-- ============================== constructor summary ==================== -->			
+			
+			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class jQuery.fn.minplayer.">
+				<caption>Class Summary</caption>
+				<thead>
+					<tr>
+						<th scope="col">Constructor Attributes</th>
+						<th scope="col">Constructor Name and Description</th>
+					</tr>
+				</thead>
+				<tbody>
+					<tr>
+						<td class="attributes">&nbsp;</td>
+						<td class="nameDescription" >
+							<div class="fixedFont">
+								<b><a href="../symbols/jQuery.fn.minplayer.html#constructor">jQuery.fn.minplayer</a></b>(options)
+							</div>
+							<div class="description"></div>
+						</td>
+					</tr>
+				</tbody>
+			</table>
+			
+
+<!-- ============================== properties summary ===================== -->
+			
+
+<!-- ============================== methods summary ======================== -->
+			
+<!-- ============================== events summary ======================== -->
+			
+
+<!-- ============================== constructor details ==================== -->		
+			
+			<div class="details"><a name="constructor"> </a>
+				<div class="sectionTitle">
+					Class Detail
+				</div>
+				
+				<div class="fixedFont">
+						<b>jQuery.fn.minplayer</b>(options)
+				</div>
+				
+				<div class="description">
+					
+					
+				</div>
+				
+				
+				
+				
+					
+						<dl class="detailList">
+						<dt class="heading">Parameters:</dt>
+						
+							<dt>
+								<span class="light fixedFont">{object}</span>  <b>options</b>
+								
+							</dt>
+								<dd>The options for this jQuery prototype.</dd>
+						
+						</dl>
+					
+					
+					
+					
+					
+						<dl class="detailList">
+						<dt class="heading">Returns:</dt>
+						
+								<dd><span class="light fixedFont">{Array}</span> jQuery object.</dd>
+						
+						</dl>
+					
+					
+					
+
+			</div>
+			
+
+<!-- ============================== field details ========================== -->		
+			
+
+<!-- ============================== method details ========================= -->		
+			
+			
+<!-- ============================== event details ========================= -->		
+			
+			
+			<hr />
+		</div>
+
+		
+<!-- ============================== footer ================================= -->
+		<div class="fineprint" style="clear:both">
+			
+			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Sun Aug 19 2012 12:11:27 GMT-0500 (CDT)
+		</div>
+	</body>
+</html>
diff --git a/public/admin/js/osmplayer/doc/symbols/jQuery.fn.osmplayer.html b/public/admin/js/osmplayer/doc/symbols/jQuery.fn.osmplayer.html
new file mode 100644
index 0000000000000000000000000000000000000000..1ee35a2254c4d84b6d6b69f11b20871679f7b68f
--- /dev/null
+++ b/public/admin/js/osmplayer/doc/symbols/jQuery.fn.osmplayer.html
@@ -0,0 +1,355 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+	<head>
+		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+		<meta name="generator" content="JsDoc Toolkit" />
+		
+		<title>JsDoc Reference - jQuery.fn.osmplayer</title>
+
+		<style type="text/css">
+			/* default.css */
+body
+{
+	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
+	width: 800px;
+}
+
+.header
+{
+	clear: both;
+	background-color: #ccc;
+	padding: 8px;
+}
+
+h1
+{
+	font-size: 150%;
+	font-weight: bold;
+	padding: 0;
+	margin: 1em 0 0 .3em;
+}
+
+hr
+{
+	border: none 0;
+	border-top: 1px solid #7F8FB1;
+	height: 1px;
+}
+
+pre.code
+{
+	display: block;
+	padding: 8px;
+	border: 1px dashed #ccc;
+}
+
+#index
+{
+	margin-top: 24px;
+	float: left;
+	width: 160px;
+	position: absolute;
+	left: 8px;
+	background-color: #F3F3F3;
+	padding: 8px;
+}
+
+#content
+{
+	margin-left: 190px;
+	width: 600px;
+}
+
+.classList
+{
+	list-style-type: none;
+	padding: 0;
+	margin: 0 0 0 8px;
+	font-family: arial, sans-serif;
+	font-size: 1em;
+	overflow: auto;
+}
+
+.classList li
+{
+	padding: 0;
+	margin: 0 0 8px 0;
+}
+
+.summaryTable { width: 100%; }
+
+h1.classTitle
+{
+	font-size:170%;
+	line-height:130%;
+}
+
+h2 { font-size: 110%; }
+caption, div.sectionTitle
+{
+	background-color: #7F8FB1;
+	color: #fff;
+	font-size:130%;
+	text-align: left;
+	padding: 2px 6px 2px 6px;
+	border: 1px #7F8FB1 solid;
+}
+
+div.sectionTitle { margin-bottom: 8px; }
+.summaryTable thead { display: none; }
+
+.summaryTable td
+{
+	vertical-align: top;
+	padding: 4px;
+	border-bottom: 1px #7F8FB1 solid;
+	border-right: 1px #7F8FB1 solid;
+}
+
+/*col#summaryAttributes {}*/
+.summaryTable td.attributes
+{
+	border-left: 1px #7F8FB1 solid;
+	width: 140px;
+	text-align: right;
+}
+
+td.attributes, .fixedFont
+{
+	line-height: 15px;
+	color: #002EBE;
+	font-family: "Courier New",Courier,monospace;
+	font-size: 13px;
+}
+
+.summaryTable td.nameDescription
+{
+	text-align: left;
+	font-size: 13px;
+	line-height: 15px;
+}
+
+.summaryTable td.nameDescription, .description
+{
+	line-height: 15px;
+	padding: 4px;
+	padding-left: 4px;
+}
+
+.summaryTable { margin-bottom: 8px; }
+
+ul.inheritsList
+{
+	list-style: square;
+	margin-left: 20px;
+	padding-left: 0;
+}
+
+.detailList {
+	margin-left: 20px; 
+	line-height: 15px;
+}
+.detailList dt { margin-left: 20px; }
+
+.detailList .heading
+{
+	font-weight: bold;
+	padding-bottom: 6px;
+	margin-left: 0;
+}
+
+.light, td.attributes, .light a:link, .light a:visited
+{
+	color: #777;
+	font-style: italic;
+}
+
+.fineprint
+{
+	text-align: right;
+	font-size: 10px;
+}
+		</style>
+	</head>
+
+	<body>
+<!-- ============================== header ================================= -->	
+		<!-- begin static/header.html -->
+		<div id="header">
+</div>
+		<!-- end static/header.html -->
+
+<!-- ============================== classes index ============================ -->
+		<div id="index">
+			<!-- begin publish.classesIndex -->
+			<div align="center"><a href="../index.html">Class Index</a>
+| <a href="../files.html">File Index</a></div>
+<hr />
+<h2>Classes</h2>
+<ul class="classList">
+	
+	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
+	
+	<li><a href="../symbols/jQuery.fn.minplayer.html">jQuery.fn.minplayer</a></li>
+	
+	<li><a href="../symbols/jQuery.fn.osmplayer.html">jQuery.fn.osmplayer</a></li>
+	
+	<li><a href="../symbols/minplayer.async.html">minplayer.async</a></li>
+	
+	<li><a href="../symbols/minplayer.compatibility.html">minplayer.compatibility</a></li>
+	
+	<li><a href="../symbols/minplayer.display.html">minplayer.display</a></li>
+	
+	<li><a href="../symbols/minplayer.file.html">minplayer.file</a></li>
+	
+	<li><a href="../symbols/minplayer.flags.html">minplayer.flags</a></li>
+	
+	<li><a href="../symbols/minplayer.image.html">minplayer.image</a></li>
+	
+	<li><a href="../symbols/minplayer.players.base.html">minplayer.players.base</a></li>
+	
+	<li><a href="../symbols/minplayer.players.flash.html">minplayer.players.flash</a></li>
+	
+	<li><a href="../symbols/minplayer.players.html5.html">minplayer.players.html5</a></li>
+	
+	<li><a href="../symbols/minplayer.players.minplayer.html">minplayer.players.minplayer</a></li>
+	
+	<li><a href="../symbols/minplayer.players.vimeo.html">minplayer.players.vimeo</a></li>
+	
+	<li><a href="../symbols/minplayer.players.youtube.html">minplayer.players.youtube</a></li>
+	
+	<li><a href="../symbols/minplayer.plugin.html">minplayer.plugin</a></li>
+	
+	<li><a href="../symbols/osmplayer.html">osmplayer</a></li>
+	
+	<li><a href="../symbols/osmplayer.pager.html">osmplayer.pager</a></li>
+	
+	<li><a href="../symbols/osmplayer.playlist.html">osmplayer.playlist</a></li>
+	
+	<li><a href="../symbols/osmplayer.teaser.html">osmplayer.teaser</a></li>
+	
+</ul>
+<hr />
+			<!-- end publish.classesIndex -->
+		</div>
+		
+		<div id="content">
+<!-- ============================== class title ============================ -->
+			<h1 class="classTitle">
+				
+				Class jQuery.fn.osmplayer
+			</h1>
+
+<!-- ============================== class summary ========================== -->			
+			<p class="description">
+				
+				
+			
+				
+				
+				
+					<br /><i>Defined in: </i> <a href="../symbols/src/src_osmplayer.js.html">osmplayer.js</a>.
+				
+			</p>
+
+<!-- ============================== constructor summary ==================== -->			
+			
+			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class jQuery.fn.osmplayer.">
+				<caption>Class Summary</caption>
+				<thead>
+					<tr>
+						<th scope="col">Constructor Attributes</th>
+						<th scope="col">Constructor Name and Description</th>
+					</tr>
+				</thead>
+				<tbody>
+					<tr>
+						<td class="attributes">&nbsp;</td>
+						<td class="nameDescription" >
+							<div class="fixedFont">
+								<b><a href="../symbols/jQuery.fn.osmplayer.html#constructor">jQuery.fn.osmplayer</a></b>(options)
+							</div>
+							<div class="description"></div>
+						</td>
+					</tr>
+				</tbody>
+			</table>
+			
+
+<!-- ============================== properties summary ===================== -->
+			
+
+<!-- ============================== methods summary ======================== -->
+			
+<!-- ============================== events summary ======================== -->
+			
+
+<!-- ============================== constructor details ==================== -->		
+			
+			<div class="details"><a name="constructor"> </a>
+				<div class="sectionTitle">
+					Class Detail
+				</div>
+				
+				<div class="fixedFont">
+						<b>jQuery.fn.osmplayer</b>(options)
+				</div>
+				
+				<div class="description">
+					
+					
+				</div>
+				
+				
+				
+				
+					
+						<dl class="detailList">
+						<dt class="heading">Parameters:</dt>
+						
+							<dt>
+								<span class="light fixedFont">{object}</span>  <b>options</b>
+								
+							</dt>
+								<dd>The options for this jQuery prototype.</dd>
+						
+						</dl>
+					
+					
+					
+					
+					
+						<dl class="detailList">
+						<dt class="heading">Returns:</dt>
+						
+								<dd><span class="light fixedFont">{Array}</span> jQuery object.</dd>
+						
+						</dl>
+					
+					
+					
+
+			</div>
+			
+
+<!-- ============================== field details ========================== -->		
+			
+
+<!-- ============================== method details ========================= -->		
+			
+			
+<!-- ============================== event details ========================= -->		
+			
+			
+			<hr />
+		</div>
+
+		
+<!-- ============================== footer ================================= -->
+		<div class="fineprint" style="clear:both">
+			
+			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Sun Aug 19 2012 12:11:27 GMT-0500 (CDT)
+		</div>
+	</body>
+</html>
diff --git a/public/admin/js/osmplayer/doc/symbols/minplayer.async.html b/public/admin/js/osmplayer/doc/symbols/minplayer.async.html
new file mode 100644
index 0000000000000000000000000000000000000000..12d41d84c4a1b5fe94fcecb9bd7e0606295af7da
--- /dev/null
+++ b/public/admin/js/osmplayer/doc/symbols/minplayer.async.html
@@ -0,0 +1,545 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+	<head>
+		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+		<meta name="generator" content="JsDoc Toolkit" />
+		
+		<title>JsDoc Reference - minplayer.async</title>
+
+		<style type="text/css">
+			/* default.css */
+body
+{
+	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
+	width: 800px;
+}
+
+.header
+{
+	clear: both;
+	background-color: #ccc;
+	padding: 8px;
+}
+
+h1
+{
+	font-size: 150%;
+	font-weight: bold;
+	padding: 0;
+	margin: 1em 0 0 .3em;
+}
+
+hr
+{
+	border: none 0;
+	border-top: 1px solid #7F8FB1;
+	height: 1px;
+}
+
+pre.code
+{
+	display: block;
+	padding: 8px;
+	border: 1px dashed #ccc;
+}
+
+#index
+{
+	margin-top: 24px;
+	float: left;
+	width: 160px;
+	position: absolute;
+	left: 8px;
+	background-color: #F3F3F3;
+	padding: 8px;
+}
+
+#content
+{
+	margin-left: 190px;
+	width: 600px;
+}
+
+.classList
+{
+	list-style-type: none;
+	padding: 0;
+	margin: 0 0 0 8px;
+	font-family: arial, sans-serif;
+	font-size: 1em;
+	overflow: auto;
+}
+
+.classList li
+{
+	padding: 0;
+	margin: 0 0 8px 0;
+}
+
+.summaryTable { width: 100%; }
+
+h1.classTitle
+{
+	font-size:170%;
+	line-height:130%;
+}
+
+h2 { font-size: 110%; }
+caption, div.sectionTitle
+{
+	background-color: #7F8FB1;
+	color: #fff;
+	font-size:130%;
+	text-align: left;
+	padding: 2px 6px 2px 6px;
+	border: 1px #7F8FB1 solid;
+}
+
+div.sectionTitle { margin-bottom: 8px; }
+.summaryTable thead { display: none; }
+
+.summaryTable td
+{
+	vertical-align: top;
+	padding: 4px;
+	border-bottom: 1px #7F8FB1 solid;
+	border-right: 1px #7F8FB1 solid;
+}
+
+/*col#summaryAttributes {}*/
+.summaryTable td.attributes
+{
+	border-left: 1px #7F8FB1 solid;
+	width: 140px;
+	text-align: right;
+}
+
+td.attributes, .fixedFont
+{
+	line-height: 15px;
+	color: #002EBE;
+	font-family: "Courier New",Courier,monospace;
+	font-size: 13px;
+}
+
+.summaryTable td.nameDescription
+{
+	text-align: left;
+	font-size: 13px;
+	line-height: 15px;
+}
+
+.summaryTable td.nameDescription, .description
+{
+	line-height: 15px;
+	padding: 4px;
+	padding-left: 4px;
+}
+
+.summaryTable { margin-bottom: 8px; }
+
+ul.inheritsList
+{
+	list-style: square;
+	margin-left: 20px;
+	padding-left: 0;
+}
+
+.detailList {
+	margin-left: 20px; 
+	line-height: 15px;
+}
+.detailList dt { margin-left: 20px; }
+
+.detailList .heading
+{
+	font-weight: bold;
+	padding-bottom: 6px;
+	margin-left: 0;
+}
+
+.light, td.attributes, .light a:link, .light a:visited
+{
+	color: #777;
+	font-style: italic;
+}
+
+.fineprint
+{
+	text-align: right;
+	font-size: 10px;
+}
+		</style>
+	</head>
+
+	<body>
+<!-- ============================== header ================================= -->	
+		<!-- begin static/header.html -->
+		<div id="header">
+</div>
+		<!-- end static/header.html -->
+
+<!-- ============================== classes index ============================ -->
+		<div id="index">
+			<!-- begin publish.classesIndex -->
+			<div align="center"><a href="../index.html">Class Index</a>
+| <a href="../files.html">File Index</a></div>
+<hr />
+<h2>Classes</h2>
+<ul class="classList">
+	
+	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
+	
+	<li><a href="../symbols/jQuery.fn.minplayer.html">jQuery.fn.minplayer</a></li>
+	
+	<li><a href="../symbols/jQuery.fn.osmplayer.html">jQuery.fn.osmplayer</a></li>
+	
+	<li><a href="../symbols/minplayer.async.html">minplayer.async</a></li>
+	
+	<li><a href="../symbols/minplayer.compatibility.html">minplayer.compatibility</a></li>
+	
+	<li><a href="../symbols/minplayer.display.html">minplayer.display</a></li>
+	
+	<li><a href="../symbols/minplayer.file.html">minplayer.file</a></li>
+	
+	<li><a href="../symbols/minplayer.flags.html">minplayer.flags</a></li>
+	
+	<li><a href="../symbols/minplayer.image.html">minplayer.image</a></li>
+	
+	<li><a href="../symbols/minplayer.players.base.html">minplayer.players.base</a></li>
+	
+	<li><a href="../symbols/minplayer.players.flash.html">minplayer.players.flash</a></li>
+	
+	<li><a href="../symbols/minplayer.players.html5.html">minplayer.players.html5</a></li>
+	
+	<li><a href="../symbols/minplayer.players.minplayer.html">minplayer.players.minplayer</a></li>
+	
+	<li><a href="../symbols/minplayer.players.vimeo.html">minplayer.players.vimeo</a></li>
+	
+	<li><a href="../symbols/minplayer.players.youtube.html">minplayer.players.youtube</a></li>
+	
+	<li><a href="../symbols/minplayer.plugin.html">minplayer.plugin</a></li>
+	
+	<li><a href="../symbols/osmplayer.html">osmplayer</a></li>
+	
+	<li><a href="../symbols/osmplayer.pager.html">osmplayer.pager</a></li>
+	
+	<li><a href="../symbols/osmplayer.playlist.html">osmplayer.playlist</a></li>
+	
+	<li><a href="../symbols/osmplayer.teaser.html">osmplayer.teaser</a></li>
+	
+</ul>
+<hr />
+			<!-- end publish.classesIndex -->
+		</div>
+		
+		<div id="content">
+<!-- ============================== class title ============================ -->
+			<h1 class="classTitle">
+				
+				Class minplayer.async
+			</h1>
+
+<!-- ============================== class summary ========================== -->			
+			<p class="description">
+				
+				
+			
+				This class keeps track of asynchronous get requests for certain
+variables within the player.
+				
+				
+					<br /><i>Defined in: </i> <a href="../symbols/src/minplayer_src_minplayer.async.js.html">minplayer.async.js</a>.
+				
+			</p>
+
+<!-- ============================== constructor summary ==================== -->			
+			
+			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class minplayer.async.">
+				<caption>Class Summary</caption>
+				<thead>
+					<tr>
+						<th scope="col">Constructor Attributes</th>
+						<th scope="col">Constructor Name and Description</th>
+					</tr>
+				</thead>
+				<tbody>
+					<tr>
+						<td class="attributes">&nbsp;</td>
+						<td class="nameDescription" >
+							<div class="fixedFont">
+								<b><a href="../symbols/minplayer.async.html#constructor">minplayer.async</a></b>()
+							</div>
+							<div class="description"></div>
+						</td>
+					</tr>
+				</tbody>
+			</table>
+			
+
+<!-- ============================== properties summary ===================== -->
+			
+				
+				
+				<table class="summaryTable" cellspacing="0" summary="A summary of the fields documented in the class minplayer.async.">
+					<caption>Field Summary</caption>
+					<thead>
+						<tr>
+							<th scope="col">Field Attributes</th>
+							<th scope="col">Field Name and Description</th>
+						</tr>
+					</thead>
+					<tbody>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont">
+								<b><a href="../symbols/minplayer.async.html#queue">queue</a></b>
+								</div>
+								<div class="description">The queue of callbacks to call when this value is determined.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont">
+								<b><a href="../symbols/minplayer.async.html#value">value</a></b>
+								</div>
+								<div class="description">The final value of this asynchronous variable.</div>
+							</td>
+						</tr>
+					
+					</tbody>
+				</table>
+				
+				
+				
+			
+
+<!-- ============================== methods summary ======================== -->
+			
+				
+				
+				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class minplayer.async.">
+					<caption>Method Summary</caption>
+					<thead>
+						<tr>
+							<th scope="col">Method Attributes</th>
+							<th scope="col">Method Name and Description</th>
+						</tr>
+					</thead>
+					<tbody>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.async.html#get">get</a></b>(callback, pollValue)
+								</div>
+								<div class="description">Retrieve the value of this variable.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.async.html#set">set</a></b>(val)
+								</div>
+								<div class="description">Sets the value of an asynchronous value.</div>
+							</td>
+						</tr>
+					
+					</tbody>
+				</table>
+				
+				
+				
+			
+<!-- ============================== events summary ======================== -->
+			
+
+<!-- ============================== constructor details ==================== -->		
+			
+			<div class="details"><a name="constructor"> </a>
+				<div class="sectionTitle">
+					Class Detail
+				</div>
+				
+				<div class="fixedFont">
+						<b>minplayer.async</b>()
+				</div>
+				
+				<div class="description">
+					
+					
+				</div>
+				
+				
+				
+				
+					
+					
+					
+					
+					
+					
+					
+
+			</div>
+			
+
+<!-- ============================== field details ========================== -->		
+			
+				<div class="sectionTitle">
+					Field Detail
+				</div>
+				
+					<a name="queue"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>queue</b>
+					
+					</div>
+					<div class="description">
+						The queue of callbacks to call when this value is determined.
+						
+						
+					</div>
+					
+					
+
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name="value"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>value</b>
+					
+					</div>
+					<div class="description">
+						The final value of this asynchronous variable.
+						
+						
+					</div>
+					
+					
+
+						
+						
+						
+						
+
+					
+				
+			
+
+<!-- ============================== method details ========================= -->		
+			
+				<div class="sectionTitle">
+					Method Detail
+				</div>
+				
+					<a name="get"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>get</b>(callback, pollValue)
+					
+					</div>
+					<div class="description">
+						Retrieve the value of this variable.
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<span class="light fixedFont">{function}</span> <b>callback</b>
+									
+								</dt>
+								<dd>The function to call when the value is determined.</dd>
+							
+								<dt>
+									<span class="light fixedFont">{function}</span> <b>pollValue</b>
+									
+								</dt>
+								<dd>The poll function to try and get the value every
+1 second if the value is not set.</dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name="set"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>set</b>(val)
+					
+					</div>
+					<div class="description">
+						Sets the value of an asynchronous value.
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<span class="light fixedFont">{void}</span> <b>val</b>
+									
+								</dt>
+								<dd>The value to set.</dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+						
+						
+
+					
+				
+			
+			
+<!-- ============================== event details ========================= -->		
+			
+			
+			<hr />
+		</div>
+
+		
+<!-- ============================== footer ================================= -->
+		<div class="fineprint" style="clear:both">
+			
+			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Sun Aug 19 2012 12:11:27 GMT-0500 (CDT)
+		</div>
+	</body>
+</html>
diff --git a/public/admin/js/osmplayer/doc/symbols/minplayer.compatibility.html b/public/admin/js/osmplayer/doc/symbols/minplayer.compatibility.html
new file mode 100644
index 0000000000000000000000000000000000000000..ed9202b2a1535747952ee12b1f01d70cb049fd2f
--- /dev/null
+++ b/public/admin/js/osmplayer/doc/symbols/minplayer.compatibility.html
@@ -0,0 +1,582 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+	<head>
+		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+		<meta name="generator" content="JsDoc Toolkit" />
+		
+		<title>JsDoc Reference - minplayer.compatibility</title>
+
+		<style type="text/css">
+			/* default.css */
+body
+{
+	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
+	width: 800px;
+}
+
+.header
+{
+	clear: both;
+	background-color: #ccc;
+	padding: 8px;
+}
+
+h1
+{
+	font-size: 150%;
+	font-weight: bold;
+	padding: 0;
+	margin: 1em 0 0 .3em;
+}
+
+hr
+{
+	border: none 0;
+	border-top: 1px solid #7F8FB1;
+	height: 1px;
+}
+
+pre.code
+{
+	display: block;
+	padding: 8px;
+	border: 1px dashed #ccc;
+}
+
+#index
+{
+	margin-top: 24px;
+	float: left;
+	width: 160px;
+	position: absolute;
+	left: 8px;
+	background-color: #F3F3F3;
+	padding: 8px;
+}
+
+#content
+{
+	margin-left: 190px;
+	width: 600px;
+}
+
+.classList
+{
+	list-style-type: none;
+	padding: 0;
+	margin: 0 0 0 8px;
+	font-family: arial, sans-serif;
+	font-size: 1em;
+	overflow: auto;
+}
+
+.classList li
+{
+	padding: 0;
+	margin: 0 0 8px 0;
+}
+
+.summaryTable { width: 100%; }
+
+h1.classTitle
+{
+	font-size:170%;
+	line-height:130%;
+}
+
+h2 { font-size: 110%; }
+caption, div.sectionTitle
+{
+	background-color: #7F8FB1;
+	color: #fff;
+	font-size:130%;
+	text-align: left;
+	padding: 2px 6px 2px 6px;
+	border: 1px #7F8FB1 solid;
+}
+
+div.sectionTitle { margin-bottom: 8px; }
+.summaryTable thead { display: none; }
+
+.summaryTable td
+{
+	vertical-align: top;
+	padding: 4px;
+	border-bottom: 1px #7F8FB1 solid;
+	border-right: 1px #7F8FB1 solid;
+}
+
+/*col#summaryAttributes {}*/
+.summaryTable td.attributes
+{
+	border-left: 1px #7F8FB1 solid;
+	width: 140px;
+	text-align: right;
+}
+
+td.attributes, .fixedFont
+{
+	line-height: 15px;
+	color: #002EBE;
+	font-family: "Courier New",Courier,monospace;
+	font-size: 13px;
+}
+
+.summaryTable td.nameDescription
+{
+	text-align: left;
+	font-size: 13px;
+	line-height: 15px;
+}
+
+.summaryTable td.nameDescription, .description
+{
+	line-height: 15px;
+	padding: 4px;
+	padding-left: 4px;
+}
+
+.summaryTable { margin-bottom: 8px; }
+
+ul.inheritsList
+{
+	list-style: square;
+	margin-left: 20px;
+	padding-left: 0;
+}
+
+.detailList {
+	margin-left: 20px; 
+	line-height: 15px;
+}
+.detailList dt { margin-left: 20px; }
+
+.detailList .heading
+{
+	font-weight: bold;
+	padding-bottom: 6px;
+	margin-left: 0;
+}
+
+.light, td.attributes, .light a:link, .light a:visited
+{
+	color: #777;
+	font-style: italic;
+}
+
+.fineprint
+{
+	text-align: right;
+	font-size: 10px;
+}
+		</style>
+	</head>
+
+	<body>
+<!-- ============================== header ================================= -->	
+		<!-- begin static/header.html -->
+		<div id="header">
+</div>
+		<!-- end static/header.html -->
+
+<!-- ============================== classes index ============================ -->
+		<div id="index">
+			<!-- begin publish.classesIndex -->
+			<div align="center"><a href="../index.html">Class Index</a>
+| <a href="../files.html">File Index</a></div>
+<hr />
+<h2>Classes</h2>
+<ul class="classList">
+	
+	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
+	
+	<li><a href="../symbols/jQuery.fn.minplayer.html">jQuery.fn.minplayer</a></li>
+	
+	<li><a href="../symbols/jQuery.fn.osmplayer.html">jQuery.fn.osmplayer</a></li>
+	
+	<li><a href="../symbols/minplayer.async.html">minplayer.async</a></li>
+	
+	<li><a href="../symbols/minplayer.compatibility.html">minplayer.compatibility</a></li>
+	
+	<li><a href="../symbols/minplayer.display.html">minplayer.display</a></li>
+	
+	<li><a href="../symbols/minplayer.file.html">minplayer.file</a></li>
+	
+	<li><a href="../symbols/minplayer.flags.html">minplayer.flags</a></li>
+	
+	<li><a href="../symbols/minplayer.image.html">minplayer.image</a></li>
+	
+	<li><a href="../symbols/minplayer.players.base.html">minplayer.players.base</a></li>
+	
+	<li><a href="../symbols/minplayer.players.flash.html">minplayer.players.flash</a></li>
+	
+	<li><a href="../symbols/minplayer.players.html5.html">minplayer.players.html5</a></li>
+	
+	<li><a href="../symbols/minplayer.players.minplayer.html">minplayer.players.minplayer</a></li>
+	
+	<li><a href="../symbols/minplayer.players.vimeo.html">minplayer.players.vimeo</a></li>
+	
+	<li><a href="../symbols/minplayer.players.youtube.html">minplayer.players.youtube</a></li>
+	
+	<li><a href="../symbols/minplayer.plugin.html">minplayer.plugin</a></li>
+	
+	<li><a href="../symbols/osmplayer.html">osmplayer</a></li>
+	
+	<li><a href="../symbols/osmplayer.pager.html">osmplayer.pager</a></li>
+	
+	<li><a href="../symbols/osmplayer.playlist.html">osmplayer.playlist</a></li>
+	
+	<li><a href="../symbols/osmplayer.teaser.html">osmplayer.teaser</a></li>
+	
+</ul>
+<hr />
+			<!-- end publish.classesIndex -->
+		</div>
+		
+		<div id="content">
+<!-- ============================== class title ============================ -->
+			<h1 class="classTitle">
+				
+				Class minplayer.compatibility
+			</h1>
+
+<!-- ============================== class summary ========================== -->			
+			<p class="description">
+				
+				
+			
+				This class is used to define the types of media that can be played
+within the browser.
+<p>
+<strong>Usage:</strong>
+<pre><code>
+  var playTypes = new minplayer.compatibility();
+
+  if (playTypes.videoOGG) {
+    console.log("This browser can play OGG video");
+  }
+
+  if (playTypes.videoH264) {
+    console.log("This browser can play H264 video");
+  }
+
+  if (playTypes.videoWEBM) {
+    console.log("This browser can play WebM video");
+  }
+
+  if (playTypes.audioOGG) {
+    console.log("This browser can play OGG audio");
+  }
+
+  if (playTypes.audioMP3) {
+    console.log("This browser can play MP3 audio");
+  }
+
+  if (playTypes.audioMP4) {
+    console.log("This browser can play MP4 audio");
+  }
+</code></pre>
+				
+				
+					<br /><i>Defined in: </i> <a href="../symbols/src/minplayer_src_minplayer.compatibility.js.html">minplayer.compatibility.js</a>.
+				
+			</p>
+
+<!-- ============================== constructor summary ==================== -->			
+			
+			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class minplayer.compatibility.">
+				<caption>Class Summary</caption>
+				<thead>
+					<tr>
+						<th scope="col">Constructor Attributes</th>
+						<th scope="col">Constructor Name and Description</th>
+					</tr>
+				</thead>
+				<tbody>
+					<tr>
+						<td class="attributes">&nbsp;</td>
+						<td class="nameDescription" >
+							<div class="fixedFont">
+								<b><a href="../symbols/minplayer.compatibility.html#constructor">minplayer.compatibility</a></b>()
+							</div>
+							<div class="description"></div>
+						</td>
+					</tr>
+				</tbody>
+			</table>
+			
+
+<!-- ============================== properties summary ===================== -->
+			
+				
+				
+				<table class="summaryTable" cellspacing="0" summary="A summary of the fields documented in the class minplayer.compatibility.">
+					<caption>Field Summary</caption>
+					<thead>
+						<tr>
+							<th scope="col">Field Attributes</th>
+							<th scope="col">Field Name and Description</th>
+						</tr>
+					</thead>
+					<tbody>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont">
+								<b><a href="../symbols/minplayer.compatibility.html#audioMP3">audioMP3</a></b>
+								</div>
+								<div class="description">Can play audio MP3</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont">
+								<b><a href="../symbols/minplayer.compatibility.html#audioMP4">audioMP4</a></b>
+								</div>
+								<div class="description">Can play audio MP4</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont">
+								<b><a href="../symbols/minplayer.compatibility.html#audioOGG">audioOGG</a></b>
+								</div>
+								<div class="description">Can play audio OGG</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont">
+								<b><a href="../symbols/minplayer.compatibility.html#videoH264">videoH264</a></b>
+								</div>
+								<div class="description">Can play H264 video</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont">
+								<b><a href="../symbols/minplayer.compatibility.html#videoOGG">videoOGG</a></b>
+								</div>
+								<div class="description">Can play OGG video</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont">
+								<b><a href="../symbols/minplayer.compatibility.html#videoWEBM">videoWEBM</a></b>
+								</div>
+								<div class="description">Can play WEBM video</div>
+							</td>
+						</tr>
+					
+					</tbody>
+				</table>
+				
+				
+				
+			
+
+<!-- ============================== methods summary ======================== -->
+			
+<!-- ============================== events summary ======================== -->
+			
+
+<!-- ============================== constructor details ==================== -->		
+			
+			<div class="details"><a name="constructor"> </a>
+				<div class="sectionTitle">
+					Class Detail
+				</div>
+				
+				<div class="fixedFont">
+						<b>minplayer.compatibility</b>()
+				</div>
+				
+				<div class="description">
+					
+					
+				</div>
+				
+				
+				
+				
+					
+					
+					
+					
+					
+					
+					
+
+			</div>
+			
+
+<!-- ============================== field details ========================== -->		
+			
+				<div class="sectionTitle">
+					Field Detail
+				</div>
+				
+					<a name="audioMP3"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>audioMP3</b>
+					
+					</div>
+					<div class="description">
+						Can play audio MP3
+						
+						
+					</div>
+					
+					
+
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name="audioMP4"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>audioMP4</b>
+					
+					</div>
+					<div class="description">
+						Can play audio MP4
+						
+						
+					</div>
+					
+					
+
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name="audioOGG"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>audioOGG</b>
+					
+					</div>
+					<div class="description">
+						Can play audio OGG
+						
+						
+					</div>
+					
+					
+
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name="videoH264"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>videoH264</b>
+					
+					</div>
+					<div class="description">
+						Can play H264 video
+						
+						
+					</div>
+					
+					
+
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name="videoOGG"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>videoOGG</b>
+					
+					</div>
+					<div class="description">
+						Can play OGG video
+						
+						
+					</div>
+					
+					
+
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name="videoWEBM"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>videoWEBM</b>
+					
+					</div>
+					<div class="description">
+						Can play WEBM video
+						
+						
+					</div>
+					
+					
+
+						
+						
+						
+						
+
+					
+				
+			
+
+<!-- ============================== method details ========================= -->		
+			
+			
+<!-- ============================== event details ========================= -->		
+			
+			
+			<hr />
+		</div>
+
+		
+<!-- ============================== footer ================================= -->
+		<div class="fineprint" style="clear:both">
+			
+			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Sun Aug 19 2012 12:11:27 GMT-0500 (CDT)
+		</div>
+	</body>
+</html>
diff --git a/public/admin/js/osmplayer/doc/symbols/minplayer.display.html b/public/admin/js/osmplayer/doc/symbols/minplayer.display.html
new file mode 100644
index 0000000000000000000000000000000000000000..4d5932830d56465480b8363cc108e0f6c314fed4
--- /dev/null
+++ b/public/admin/js/osmplayer/doc/symbols/minplayer.display.html
@@ -0,0 +1,921 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+	<head>
+		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+		<meta name="generator" content="JsDoc Toolkit" />
+		
+		<title>JsDoc Reference - minplayer.display</title>
+
+		<style type="text/css">
+			/* default.css */
+body
+{
+	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
+	width: 800px;
+}
+
+.header
+{
+	clear: both;
+	background-color: #ccc;
+	padding: 8px;
+}
+
+h1
+{
+	font-size: 150%;
+	font-weight: bold;
+	padding: 0;
+	margin: 1em 0 0 .3em;
+}
+
+hr
+{
+	border: none 0;
+	border-top: 1px solid #7F8FB1;
+	height: 1px;
+}
+
+pre.code
+{
+	display: block;
+	padding: 8px;
+	border: 1px dashed #ccc;
+}
+
+#index
+{
+	margin-top: 24px;
+	float: left;
+	width: 160px;
+	position: absolute;
+	left: 8px;
+	background-color: #F3F3F3;
+	padding: 8px;
+}
+
+#content
+{
+	margin-left: 190px;
+	width: 600px;
+}
+
+.classList
+{
+	list-style-type: none;
+	padding: 0;
+	margin: 0 0 0 8px;
+	font-family: arial, sans-serif;
+	font-size: 1em;
+	overflow: auto;
+}
+
+.classList li
+{
+	padding: 0;
+	margin: 0 0 8px 0;
+}
+
+.summaryTable { width: 100%; }
+
+h1.classTitle
+{
+	font-size:170%;
+	line-height:130%;
+}
+
+h2 { font-size: 110%; }
+caption, div.sectionTitle
+{
+	background-color: #7F8FB1;
+	color: #fff;
+	font-size:130%;
+	text-align: left;
+	padding: 2px 6px 2px 6px;
+	border: 1px #7F8FB1 solid;
+}
+
+div.sectionTitle { margin-bottom: 8px; }
+.summaryTable thead { display: none; }
+
+.summaryTable td
+{
+	vertical-align: top;
+	padding: 4px;
+	border-bottom: 1px #7F8FB1 solid;
+	border-right: 1px #7F8FB1 solid;
+}
+
+/*col#summaryAttributes {}*/
+.summaryTable td.attributes
+{
+	border-left: 1px #7F8FB1 solid;
+	width: 140px;
+	text-align: right;
+}
+
+td.attributes, .fixedFont
+{
+	line-height: 15px;
+	color: #002EBE;
+	font-family: "Courier New",Courier,monospace;
+	font-size: 13px;
+}
+
+.summaryTable td.nameDescription
+{
+	text-align: left;
+	font-size: 13px;
+	line-height: 15px;
+}
+
+.summaryTable td.nameDescription, .description
+{
+	line-height: 15px;
+	padding: 4px;
+	padding-left: 4px;
+}
+
+.summaryTable { margin-bottom: 8px; }
+
+ul.inheritsList
+{
+	list-style: square;
+	margin-left: 20px;
+	padding-left: 0;
+}
+
+.detailList {
+	margin-left: 20px; 
+	line-height: 15px;
+}
+.detailList dt { margin-left: 20px; }
+
+.detailList .heading
+{
+	font-weight: bold;
+	padding-bottom: 6px;
+	margin-left: 0;
+}
+
+.light, td.attributes, .light a:link, .light a:visited
+{
+	color: #777;
+	font-style: italic;
+}
+
+.fineprint
+{
+	text-align: right;
+	font-size: 10px;
+}
+		</style>
+	</head>
+
+	<body>
+<!-- ============================== header ================================= -->	
+		<!-- begin static/header.html -->
+		<div id="header">
+</div>
+		<!-- end static/header.html -->
+
+<!-- ============================== classes index ============================ -->
+		<div id="index">
+			<!-- begin publish.classesIndex -->
+			<div align="center"><a href="../index.html">Class Index</a>
+| <a href="../files.html">File Index</a></div>
+<hr />
+<h2>Classes</h2>
+<ul class="classList">
+	
+	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
+	
+	<li><a href="../symbols/jQuery.fn.minplayer.html">jQuery.fn.minplayer</a></li>
+	
+	<li><a href="../symbols/jQuery.fn.osmplayer.html">jQuery.fn.osmplayer</a></li>
+	
+	<li><a href="../symbols/minplayer.async.html">minplayer.async</a></li>
+	
+	<li><a href="../symbols/minplayer.compatibility.html">minplayer.compatibility</a></li>
+	
+	<li><a href="../symbols/minplayer.display.html">minplayer.display</a></li>
+	
+	<li><a href="../symbols/minplayer.file.html">minplayer.file</a></li>
+	
+	<li><a href="../symbols/minplayer.flags.html">minplayer.flags</a></li>
+	
+	<li><a href="../symbols/minplayer.image.html">minplayer.image</a></li>
+	
+	<li><a href="../symbols/minplayer.players.base.html">minplayer.players.base</a></li>
+	
+	<li><a href="../symbols/minplayer.players.flash.html">minplayer.players.flash</a></li>
+	
+	<li><a href="../symbols/minplayer.players.html5.html">minplayer.players.html5</a></li>
+	
+	<li><a href="../symbols/minplayer.players.minplayer.html">minplayer.players.minplayer</a></li>
+	
+	<li><a href="../symbols/minplayer.players.vimeo.html">minplayer.players.vimeo</a></li>
+	
+	<li><a href="../symbols/minplayer.players.youtube.html">minplayer.players.youtube</a></li>
+	
+	<li><a href="../symbols/minplayer.plugin.html">minplayer.plugin</a></li>
+	
+	<li><a href="../symbols/osmplayer.html">osmplayer</a></li>
+	
+	<li><a href="../symbols/osmplayer.pager.html">osmplayer.pager</a></li>
+	
+	<li><a href="../symbols/osmplayer.playlist.html">osmplayer.playlist</a></li>
+	
+	<li><a href="../symbols/osmplayer.teaser.html">osmplayer.teaser</a></li>
+	
+</ul>
+<hr />
+			<!-- end publish.classesIndex -->
+		</div>
+		
+		<div id="content">
+<!-- ============================== class title ============================ -->
+			<h1 class="classTitle">
+				
+				Class minplayer.display
+			</h1>
+
+<!-- ============================== class summary ========================== -->			
+			<p class="description">
+				
+				<br />Extends
+					<a href="../symbols/minplayer.plugin.html">minplayer.plugin</a>.<br />
+				
+			
+				Base class used to provide the display and options for any component
+deriving from this class.  Components who derive are expected to provide
+the elements that they define by implementing the getElements method.
+				
+				
+					<br /><i>Defined in: </i> <a href="../symbols/src/minplayer_src_minplayer.display.js.html">minplayer.display.js</a>.
+				
+			</p>
+
+<!-- ============================== constructor summary ==================== -->			
+			
+			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class minplayer.display.">
+				<caption>Class Summary</caption>
+				<thead>
+					<tr>
+						<th scope="col">Constructor Attributes</th>
+						<th scope="col">Constructor Name and Description</th>
+					</tr>
+				</thead>
+				<tbody>
+					<tr>
+						<td class="attributes">&nbsp;</td>
+						<td class="nameDescription" >
+							<div class="fixedFont">
+								<b><a href="../symbols/minplayer.display.html#constructor">minplayer.display</a></b>(name, context, options, queue)
+							</div>
+							<div class="description"></div>
+						</td>
+					</tr>
+				</tbody>
+			</table>
+			
+
+<!-- ============================== properties summary ===================== -->
+			
+				
+				
+				<table class="summaryTable" cellspacing="0" summary="A summary of the fields documented in the class minplayer.display.">
+					<caption>Field Summary</caption>
+					<thead>
+						<tr>
+							<th scope="col">Field Attributes</th>
+							<th scope="col">Field Name and Description</th>
+						</tr>
+					</thead>
+					<tbody>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont">
+								<b><a href="../symbols/minplayer.display.html#constructor">constructor</a></b>
+								</div>
+								<div class="description">Reset the constructor.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont">
+								<b><a href="../symbols/minplayer.display.html#onResize">onResize</a></b>
+								</div>
+								<div class="description">Called when the window resizes.</div>
+							</td>
+						</tr>
+					
+					</tbody>
+				</table>
+				
+				
+				
+				<dl class="inheritsList">
+				<dt>Fields borrowed from class <a href="../symbols/minplayer.plugin.html">minplayer.plugin</a>: </dt><dd><a href="../symbols/minplayer.plugin.html#active">active</a>, <a href="../symbols/minplayer.plugin.html#context">context</a>, <a href="../symbols/minplayer.plugin.html#lock">lock</a>, <a href="../symbols/minplayer.plugin.html#name">name</a>, <a href="../symbols/minplayer.plugin.html#options">options</a>, <a href="../symbols/minplayer.plugin.html#pluginReady">pluginReady</a>, <a href="../symbols/minplayer.plugin.html#queue">queue</a>, <a href="../symbols/minplayer.plugin.html#triggered">triggered</a></dd>
+				</dl>
+				
+			
+
+<!-- ============================== methods summary ======================== -->
+			
+				
+				
+				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class minplayer.display.">
+					<caption>Method Summary</caption>
+					<thead>
+						<tr>
+							<th scope="col">Method Attributes</th>
+							<th scope="col">Method Name and Description</th>
+						</tr>
+					</thead>
+					<tbody>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.display.html#construct">construct</a></b>()
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.display.html#fullscreen">fullscreen</a></b>(full)
+								</div>
+								<div class="description">Make this display element go fullscreen.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.display.html#fullScreenElement">fullScreenElement</a></b>()
+								</div>
+								<div class="description">Gets the full screen element.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.display.html#getDisplay">getDisplay</a></b>()
+								</div>
+								<div class="description">Returns the display for this component.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.display.html#getElements">getElements</a></b>()
+								</div>
+								<div class="description">Returns all the jQuery elements that this component uses.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.display.html#getScaledRect">getScaledRect</a></b>(ratio, rect)
+								</div>
+								<div class="description">Returns a scaled rectangle provided a ratio and the container rect.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.display.html#hide">hide</a></b>(element)
+								</div>
+								<div class="description">Wrapper around hide that will always not show.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.display.html#isFullScreen">isFullScreen</a></b>()
+								</div>
+								<div class="description">Checks to see if we are in fullscreen mode.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.display.html#onFocus">onFocus</a></b>(focus)
+								</div>
+								<div class="description">Determines if the player is in focus or not.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.display.html#toggleFullScreen">toggleFullScreen</a></b>()
+								</div>
+								<div class="description">Toggle fullscreen.</div>
+							</td>
+						</tr>
+					
+					</tbody>
+				</table>
+				
+				
+				
+				<dl class="inheritsList">
+				<dt>Methods borrowed from class <a href="../symbols/minplayer.plugin.html">minplayer.plugin</a>: </dt><dd><a href="../symbols/minplayer.plugin.html#addPlugin">addPlugin</a>, <a href="../symbols/minplayer.plugin.html#bind">bind</a>, <a href="../symbols/minplayer.plugin.html#checkQueue">checkQueue</a>, <a href="../symbols/minplayer.plugin.html#create">create</a>, <a href="../symbols/minplayer.plugin.html#destroy">destroy</a>, <a href="../symbols/minplayer.plugin.html#get">get</a>, <a href="../symbols/minplayer.plugin.html#isValid">isValid</a>, <a href="../symbols/minplayer.plugin.html#poll">poll</a>, <a href="../symbols/minplayer.plugin.html#ready">ready</a>, <a href="../symbols/minplayer.plugin.html#trigger">trigger</a>, <a href="../symbols/minplayer.plugin.html#unbind">unbind</a></dd>
+				</dl>
+				
+			
+<!-- ============================== events summary ======================== -->
+			
+
+<!-- ============================== constructor details ==================== -->		
+			
+			<div class="details"><a name="constructor"> </a>
+				<div class="sectionTitle">
+					Class Detail
+				</div>
+				
+				<div class="fixedFont">
+						<b>minplayer.display</b>(name, context, options, queue)
+				</div>
+				
+				<div class="description">
+					
+					
+				</div>
+				
+				
+				
+				
+					
+						<dl class="detailList">
+						<dt class="heading">Parameters:</dt>
+						
+							<dt>
+								<span class="light fixedFont">{string}</span>  <b>name</b>
+								
+							</dt>
+								<dd>The name of this plugin.</dd>
+						
+							<dt>
+								<span class="light fixedFont">{object}</span>  <b>context</b>
+								
+							</dt>
+								<dd>The jQuery context this component resides.</dd>
+						
+							<dt>
+								<span class="light fixedFont">{object}</span>  <b>options</b>
+								
+							</dt>
+								<dd>The options for this component.</dd>
+						
+							<dt>
+								<span class="light fixedFont">{object}</span>  <b>queue</b>
+								
+							</dt>
+								<dd>The event queue to pass events around.</dd>
+						
+						</dl>
+					
+					
+					
+					
+					
+					
+					
+
+			</div>
+			
+
+<!-- ============================== field details ========================== -->		
+			
+				<div class="sectionTitle">
+					Field Detail
+				</div>
+				
+					<a name="constructor"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>constructor</b>
+					
+					</div>
+					<div class="description">
+						Reset the constructor.
+						
+						
+					</div>
+					
+					
+
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name="onResize"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>onResize</b>
+					
+					</div>
+					<div class="description">
+						Called when the window resizes.
+						
+						
+					</div>
+					
+					
+
+						
+						
+						
+						
+
+					
+				
+			
+
+<!-- ============================== method details ========================= -->		
+			
+				<div class="sectionTitle">
+					Method Detail
+				</div>
+				
+					<a name="construct"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>construct</b>()
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd>minplayer.plugin.construct</dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name="fullscreen"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>fullscreen</b>(full)
+					
+					</div>
+					<div class="description">
+						Make this display element go fullscreen.
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<span class="light fixedFont">{boolean}</span> <b>full</b>
+									
+								</dt>
+								<dd>Tell the player to go into fullscreen or not.</dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name="fullScreenElement"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{object}</span>
+					<b>fullScreenElement</b>()
+					
+					</div>
+					<div class="description">
+						Gets the full screen element.
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{object}</span> The display to be used for full screen support.</dd>
+							
+							</dl>
+						
+						
+						
+
+					<hr />
+				
+					<a name="getDisplay"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{object}</span>
+					<b>getDisplay</b>()
+					
+					</div>
+					<div class="description">
+						Returns the display for this component.
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{object}</span> The jQuery context for this display.</dd>
+							
+							</dl>
+						
+						
+						
+
+					<hr />
+				
+					<a name="getElements"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{object}</span>
+					<b>getElements</b>()
+					
+					</div>
+					<div class="description">
+						Returns all the jQuery elements that this component uses.
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{object}</span> An object which defines all the jQuery elements that
+this component uses.</dd>
+							
+							</dl>
+						
+						
+						
+
+					<hr />
+				
+					<a name="getScaledRect"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{object}</span>
+					<b>getScaledRect</b>(ratio, rect)
+					
+					</div>
+					<div class="description">
+						Returns a scaled rectangle provided a ratio and the container rect.
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<span class="light fixedFont">{number}</span> <b>ratio</b>
+									
+								</dt>
+								<dd>The width/height ratio of what is being scaled.</dd>
+							
+								<dt>
+									<span class="light fixedFont">{object}</span> <b>rect</b>
+									
+								</dt>
+								<dd>The bounding rectangle for scaling.</dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{object}</span> The Rectangle object of the scaled rectangle.</dd>
+							
+							</dl>
+						
+						
+						
+
+					<hr />
+				
+					<a name="hide"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>hide</b>(element)
+					
+					</div>
+					<div class="description">
+						Wrapper around hide that will always not show.
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<span class="light fixedFont">{object}</span> <b>element</b>
+									
+								</dt>
+								<dd>The element you wish to hide.</dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name="isFullScreen"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{boolean}</span>
+					<b>isFullScreen</b>()
+					
+					</div>
+					<div class="description">
+						Checks to see if we are in fullscreen mode.
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{boolean}</span> TRUE - fullscreen, FALSE - otherwise.</dd>
+							
+							</dl>
+						
+						
+						
+
+					<hr />
+				
+					<a name="onFocus"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>onFocus</b>(focus)
+					
+					</div>
+					<div class="description">
+						Determines if the player is in focus or not.
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<span class="light fixedFont">{boolean}</span> <b>focus</b>
+									
+								</dt>
+								<dd>If the player is in focus.</dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name="toggleFullScreen"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>toggleFullScreen</b>()
+					
+					</div>
+					<div class="description">
+						Toggle fullscreen.
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+						
+						
+
+					
+				
+			
+			
+<!-- ============================== event details ========================= -->		
+			
+			
+			<hr />
+		</div>
+
+		
+<!-- ============================== footer ================================= -->
+		<div class="fineprint" style="clear:both">
+			
+			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Sun Aug 19 2012 12:11:27 GMT-0500 (CDT)
+		</div>
+	</body>
+</html>
diff --git a/public/admin/js/osmplayer/doc/symbols/minplayer.file.html b/public/admin/js/osmplayer/doc/symbols/minplayer.file.html
new file mode 100644
index 0000000000000000000000000000000000000000..6bdc65a2ae6f9cc4203596ec86a75553bb72655c
--- /dev/null
+++ b/public/admin/js/osmplayer/doc/symbols/minplayer.file.html
@@ -0,0 +1,621 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+	<head>
+		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+		<meta name="generator" content="JsDoc Toolkit" />
+		
+		<title>JsDoc Reference - minplayer.file</title>
+
+		<style type="text/css">
+			/* default.css */
+body
+{
+	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
+	width: 800px;
+}
+
+.header
+{
+	clear: both;
+	background-color: #ccc;
+	padding: 8px;
+}
+
+h1
+{
+	font-size: 150%;
+	font-weight: bold;
+	padding: 0;
+	margin: 1em 0 0 .3em;
+}
+
+hr
+{
+	border: none 0;
+	border-top: 1px solid #7F8FB1;
+	height: 1px;
+}
+
+pre.code
+{
+	display: block;
+	padding: 8px;
+	border: 1px dashed #ccc;
+}
+
+#index
+{
+	margin-top: 24px;
+	float: left;
+	width: 160px;
+	position: absolute;
+	left: 8px;
+	background-color: #F3F3F3;
+	padding: 8px;
+}
+
+#content
+{
+	margin-left: 190px;
+	width: 600px;
+}
+
+.classList
+{
+	list-style-type: none;
+	padding: 0;
+	margin: 0 0 0 8px;
+	font-family: arial, sans-serif;
+	font-size: 1em;
+	overflow: auto;
+}
+
+.classList li
+{
+	padding: 0;
+	margin: 0 0 8px 0;
+}
+
+.summaryTable { width: 100%; }
+
+h1.classTitle
+{
+	font-size:170%;
+	line-height:130%;
+}
+
+h2 { font-size: 110%; }
+caption, div.sectionTitle
+{
+	background-color: #7F8FB1;
+	color: #fff;
+	font-size:130%;
+	text-align: left;
+	padding: 2px 6px 2px 6px;
+	border: 1px #7F8FB1 solid;
+}
+
+div.sectionTitle { margin-bottom: 8px; }
+.summaryTable thead { display: none; }
+
+.summaryTable td
+{
+	vertical-align: top;
+	padding: 4px;
+	border-bottom: 1px #7F8FB1 solid;
+	border-right: 1px #7F8FB1 solid;
+}
+
+/*col#summaryAttributes {}*/
+.summaryTable td.attributes
+{
+	border-left: 1px #7F8FB1 solid;
+	width: 140px;
+	text-align: right;
+}
+
+td.attributes, .fixedFont
+{
+	line-height: 15px;
+	color: #002EBE;
+	font-family: "Courier New",Courier,monospace;
+	font-size: 13px;
+}
+
+.summaryTable td.nameDescription
+{
+	text-align: left;
+	font-size: 13px;
+	line-height: 15px;
+}
+
+.summaryTable td.nameDescription, .description
+{
+	line-height: 15px;
+	padding: 4px;
+	padding-left: 4px;
+}
+
+.summaryTable { margin-bottom: 8px; }
+
+ul.inheritsList
+{
+	list-style: square;
+	margin-left: 20px;
+	padding-left: 0;
+}
+
+.detailList {
+	margin-left: 20px; 
+	line-height: 15px;
+}
+.detailList dt { margin-left: 20px; }
+
+.detailList .heading
+{
+	font-weight: bold;
+	padding-bottom: 6px;
+	margin-left: 0;
+}
+
+.light, td.attributes, .light a:link, .light a:visited
+{
+	color: #777;
+	font-style: italic;
+}
+
+.fineprint
+{
+	text-align: right;
+	font-size: 10px;
+}
+		</style>
+	</head>
+
+	<body>
+<!-- ============================== header ================================= -->	
+		<!-- begin static/header.html -->
+		<div id="header">
+</div>
+		<!-- end static/header.html -->
+
+<!-- ============================== classes index ============================ -->
+		<div id="index">
+			<!-- begin publish.classesIndex -->
+			<div align="center"><a href="../index.html">Class Index</a>
+| <a href="../files.html">File Index</a></div>
+<hr />
+<h2>Classes</h2>
+<ul class="classList">
+	
+	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
+	
+	<li><a href="../symbols/jQuery.fn.minplayer.html">jQuery.fn.minplayer</a></li>
+	
+	<li><a href="../symbols/jQuery.fn.osmplayer.html">jQuery.fn.osmplayer</a></li>
+	
+	<li><a href="../symbols/minplayer.async.html">minplayer.async</a></li>
+	
+	<li><a href="../symbols/minplayer.compatibility.html">minplayer.compatibility</a></li>
+	
+	<li><a href="../symbols/minplayer.display.html">minplayer.display</a></li>
+	
+	<li><a href="../symbols/minplayer.file.html">minplayer.file</a></li>
+	
+	<li><a href="../symbols/minplayer.flags.html">minplayer.flags</a></li>
+	
+	<li><a href="../symbols/minplayer.image.html">minplayer.image</a></li>
+	
+	<li><a href="../symbols/minplayer.players.base.html">minplayer.players.base</a></li>
+	
+	<li><a href="../symbols/minplayer.players.flash.html">minplayer.players.flash</a></li>
+	
+	<li><a href="../symbols/minplayer.players.html5.html">minplayer.players.html5</a></li>
+	
+	<li><a href="../symbols/minplayer.players.minplayer.html">minplayer.players.minplayer</a></li>
+	
+	<li><a href="../symbols/minplayer.players.vimeo.html">minplayer.players.vimeo</a></li>
+	
+	<li><a href="../symbols/minplayer.players.youtube.html">minplayer.players.youtube</a></li>
+	
+	<li><a href="../symbols/minplayer.plugin.html">minplayer.plugin</a></li>
+	
+	<li><a href="../symbols/osmplayer.html">osmplayer</a></li>
+	
+	<li><a href="../symbols/osmplayer.pager.html">osmplayer.pager</a></li>
+	
+	<li><a href="../symbols/osmplayer.playlist.html">osmplayer.playlist</a></li>
+	
+	<li><a href="../symbols/osmplayer.teaser.html">osmplayer.teaser</a></li>
+	
+</ul>
+<hr />
+			<!-- end publish.classesIndex -->
+		</div>
+		
+		<div id="content">
+<!-- ============================== class title ============================ -->
+			<h1 class="classTitle">
+				
+				Class minplayer.file
+			</h1>
+
+<!-- ============================== class summary ========================== -->			
+			<p class="description">
+				
+				
+			
+				A wrapper class used to provide all the data necessary to control an
+individual file within this media player.
+				
+				
+					<br /><i>Defined in: </i> <a href="../symbols/src/minplayer_src_minplayer.file.js.html">minplayer.file.js</a>.
+				
+			</p>
+
+<!-- ============================== constructor summary ==================== -->			
+			
+			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class minplayer.file.">
+				<caption>Class Summary</caption>
+				<thead>
+					<tr>
+						<th scope="col">Constructor Attributes</th>
+						<th scope="col">Constructor Name and Description</th>
+					</tr>
+				</thead>
+				<tbody>
+					<tr>
+						<td class="attributes">&nbsp;</td>
+						<td class="nameDescription" >
+							<div class="fixedFont">
+								<b><a href="../symbols/minplayer.file.html#constructor">minplayer.file</a></b>(file)
+							</div>
+							<div class="description"></div>
+						</td>
+					</tr>
+				</tbody>
+			</table>
+			
+
+<!-- ============================== properties summary ===================== -->
+			
+
+<!-- ============================== methods summary ======================== -->
+			
+				
+				
+				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class minplayer.file.">
+					<caption>Method Summary</caption>
+					<thead>
+						<tr>
+							<th scope="col">Method Attributes</th>
+							<th scope="col">Method Name and Description</th>
+						</tr>
+					</thead>
+					<tbody>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.file.html#getBestPlayer">getBestPlayer</a></b>()
+								</div>
+								<div class="description">Returns the best player for the job.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.file.html#getFileExtension">getFileExtension</a></b>()
+								</div>
+								<div class="description">Returns the file extension of the file path.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.file.html#getId">getId</a></b>()
+								</div>
+								<div class="description">Returns the ID for this media file.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.file.html#getMimeType">getMimeType</a></b>()
+								</div>
+								<div class="description">Returns the proper mimetype based off of the extension.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.file.html#getPriority">getPriority</a></b>()
+								</div>
+								<div class="description">The priority of this file is determined by the priority of the best
+player multiplied by the priority of the mimetype.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.file.html#getType">getType</a></b>()
+								</div>
+								<div class="description">The type of media this is: video or audio.</div>
+							</td>
+						</tr>
+					
+					</tbody>
+				</table>
+				
+				
+				
+			
+<!-- ============================== events summary ======================== -->
+			
+
+<!-- ============================== constructor details ==================== -->		
+			
+			<div class="details"><a name="constructor"> </a>
+				<div class="sectionTitle">
+					Class Detail
+				</div>
+				
+				<div class="fixedFont">
+						<b>minplayer.file</b>(file)
+				</div>
+				
+				<div class="description">
+					
+					
+				</div>
+				
+				
+				
+				
+					
+						<dl class="detailList">
+						<dt class="heading">Parameters:</dt>
+						
+							<dt>
+								<span class="light fixedFont">{object}</span>  <b>file</b>
+								
+							</dt>
+								<dd>A media file object with minimal required information.</dd>
+						
+						</dl>
+					
+					
+					
+					
+					
+					
+					
+
+			</div>
+			
+
+<!-- ============================== field details ========================== -->		
+			
+
+<!-- ============================== method details ========================= -->		
+			
+				<div class="sectionTitle">
+					Method Detail
+				</div>
+				
+					<a name="getBestPlayer"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{string}</span>
+					<b>getBestPlayer</b>()
+					
+					</div>
+					<div class="description">
+						Returns the best player for the job.
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{string}</span> The best player to play the media file.</dd>
+							
+							</dl>
+						
+						
+						
+
+					<hr />
+				
+					<a name="getFileExtension"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{string}</span>
+					<b>getFileExtension</b>()
+					
+					</div>
+					<div class="description">
+						Returns the file extension of the file path.
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{string}</span> The file extension.</dd>
+							
+							</dl>
+						
+						
+						
+
+					<hr />
+				
+					<a name="getId"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{string}</span>
+					<b>getId</b>()
+					
+					</div>
+					<div class="description">
+						Returns the ID for this media file.
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{string}</span> The id for this media file which is provided by the player.</dd>
+							
+							</dl>
+						
+						
+						
+
+					<hr />
+				
+					<a name="getMimeType"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{string}</span>
+					<b>getMimeType</b>()
+					
+					</div>
+					<div class="description">
+						Returns the proper mimetype based off of the extension.
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{string}</span> The mimetype of the file based off of extension.</dd>
+							
+							</dl>
+						
+						
+						
+
+					<hr />
+				
+					<a name="getPriority"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{integer}</span>
+					<b>getPriority</b>()
+					
+					</div>
+					<div class="description">
+						The priority of this file is determined by the priority of the best
+player multiplied by the priority of the mimetype.
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{integer}</span> The priority of the media file.</dd>
+							
+							</dl>
+						
+						
+						
+
+					<hr />
+				
+					<a name="getType"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{string}</span>
+					<b>getType</b>()
+					
+					</div>
+					<div class="description">
+						The type of media this is: video or audio.
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{string}</span> "video" or "audio" based on what the type of media this
+is.</dd>
+							
+							</dl>
+						
+						
+						
+
+					
+				
+			
+			
+<!-- ============================== event details ========================= -->		
+			
+			
+			<hr />
+		</div>
+
+		
+<!-- ============================== footer ================================= -->
+		<div class="fineprint" style="clear:both">
+			
+			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Sun Aug 19 2012 12:11:27 GMT-0500 (CDT)
+		</div>
+	</body>
+</html>
diff --git a/public/admin/js/osmplayer/doc/symbols/minplayer.flags.html b/public/admin/js/osmplayer/doc/symbols/minplayer.flags.html
new file mode 100644
index 0000000000000000000000000000000000000000..ddb2d62283ce81183622323cad8ab096bc88b105
--- /dev/null
+++ b/public/admin/js/osmplayer/doc/symbols/minplayer.flags.html
@@ -0,0 +1,560 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+	<head>
+		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+		<meta name="generator" content="JsDoc Toolkit" />
+		
+		<title>JsDoc Reference - minplayer.flags</title>
+
+		<style type="text/css">
+			/* default.css */
+body
+{
+	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
+	width: 800px;
+}
+
+.header
+{
+	clear: both;
+	background-color: #ccc;
+	padding: 8px;
+}
+
+h1
+{
+	font-size: 150%;
+	font-weight: bold;
+	padding: 0;
+	margin: 1em 0 0 .3em;
+}
+
+hr
+{
+	border: none 0;
+	border-top: 1px solid #7F8FB1;
+	height: 1px;
+}
+
+pre.code
+{
+	display: block;
+	padding: 8px;
+	border: 1px dashed #ccc;
+}
+
+#index
+{
+	margin-top: 24px;
+	float: left;
+	width: 160px;
+	position: absolute;
+	left: 8px;
+	background-color: #F3F3F3;
+	padding: 8px;
+}
+
+#content
+{
+	margin-left: 190px;
+	width: 600px;
+}
+
+.classList
+{
+	list-style-type: none;
+	padding: 0;
+	margin: 0 0 0 8px;
+	font-family: arial, sans-serif;
+	font-size: 1em;
+	overflow: auto;
+}
+
+.classList li
+{
+	padding: 0;
+	margin: 0 0 8px 0;
+}
+
+.summaryTable { width: 100%; }
+
+h1.classTitle
+{
+	font-size:170%;
+	line-height:130%;
+}
+
+h2 { font-size: 110%; }
+caption, div.sectionTitle
+{
+	background-color: #7F8FB1;
+	color: #fff;
+	font-size:130%;
+	text-align: left;
+	padding: 2px 6px 2px 6px;
+	border: 1px #7F8FB1 solid;
+}
+
+div.sectionTitle { margin-bottom: 8px; }
+.summaryTable thead { display: none; }
+
+.summaryTable td
+{
+	vertical-align: top;
+	padding: 4px;
+	border-bottom: 1px #7F8FB1 solid;
+	border-right: 1px #7F8FB1 solid;
+}
+
+/*col#summaryAttributes {}*/
+.summaryTable td.attributes
+{
+	border-left: 1px #7F8FB1 solid;
+	width: 140px;
+	text-align: right;
+}
+
+td.attributes, .fixedFont
+{
+	line-height: 15px;
+	color: #002EBE;
+	font-family: "Courier New",Courier,monospace;
+	font-size: 13px;
+}
+
+.summaryTable td.nameDescription
+{
+	text-align: left;
+	font-size: 13px;
+	line-height: 15px;
+}
+
+.summaryTable td.nameDescription, .description
+{
+	line-height: 15px;
+	padding: 4px;
+	padding-left: 4px;
+}
+
+.summaryTable { margin-bottom: 8px; }
+
+ul.inheritsList
+{
+	list-style: square;
+	margin-left: 20px;
+	padding-left: 0;
+}
+
+.detailList {
+	margin-left: 20px; 
+	line-height: 15px;
+}
+.detailList dt { margin-left: 20px; }
+
+.detailList .heading
+{
+	font-weight: bold;
+	padding-bottom: 6px;
+	margin-left: 0;
+}
+
+.light, td.attributes, .light a:link, .light a:visited
+{
+	color: #777;
+	font-style: italic;
+}
+
+.fineprint
+{
+	text-align: right;
+	font-size: 10px;
+}
+		</style>
+	</head>
+
+	<body>
+<!-- ============================== header ================================= -->	
+		<!-- begin static/header.html -->
+		<div id="header">
+</div>
+		<!-- end static/header.html -->
+
+<!-- ============================== classes index ============================ -->
+		<div id="index">
+			<!-- begin publish.classesIndex -->
+			<div align="center"><a href="../index.html">Class Index</a>
+| <a href="../files.html">File Index</a></div>
+<hr />
+<h2>Classes</h2>
+<ul class="classList">
+	
+	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
+	
+	<li><a href="../symbols/jQuery.fn.minplayer.html">jQuery.fn.minplayer</a></li>
+	
+	<li><a href="../symbols/jQuery.fn.osmplayer.html">jQuery.fn.osmplayer</a></li>
+	
+	<li><a href="../symbols/minplayer.async.html">minplayer.async</a></li>
+	
+	<li><a href="../symbols/minplayer.compatibility.html">minplayer.compatibility</a></li>
+	
+	<li><a href="../symbols/minplayer.display.html">minplayer.display</a></li>
+	
+	<li><a href="../symbols/minplayer.file.html">minplayer.file</a></li>
+	
+	<li><a href="../symbols/minplayer.flags.html">minplayer.flags</a></li>
+	
+	<li><a href="../symbols/minplayer.image.html">minplayer.image</a></li>
+	
+	<li><a href="../symbols/minplayer.players.base.html">minplayer.players.base</a></li>
+	
+	<li><a href="../symbols/minplayer.players.flash.html">minplayer.players.flash</a></li>
+	
+	<li><a href="../symbols/minplayer.players.html5.html">minplayer.players.html5</a></li>
+	
+	<li><a href="../symbols/minplayer.players.minplayer.html">minplayer.players.minplayer</a></li>
+	
+	<li><a href="../symbols/minplayer.players.vimeo.html">minplayer.players.vimeo</a></li>
+	
+	<li><a href="../symbols/minplayer.players.youtube.html">minplayer.players.youtube</a></li>
+	
+	<li><a href="../symbols/minplayer.plugin.html">minplayer.plugin</a></li>
+	
+	<li><a href="../symbols/osmplayer.html">osmplayer</a></li>
+	
+	<li><a href="../symbols/osmplayer.pager.html">osmplayer.pager</a></li>
+	
+	<li><a href="../symbols/osmplayer.playlist.html">osmplayer.playlist</a></li>
+	
+	<li><a href="../symbols/osmplayer.teaser.html">osmplayer.teaser</a></li>
+	
+</ul>
+<hr />
+			<!-- end publish.classesIndex -->
+		</div>
+		
+		<div id="content">
+<!-- ============================== class title ============================ -->
+			<h1 class="classTitle">
+				
+				Class minplayer.flags
+			</h1>
+
+<!-- ============================== class summary ========================== -->			
+			<p class="description">
+				
+				
+			
+				This is a class used to keep track of flag states
+which is used to control the busy cursor, big play button, among other
+items in which multiple components can have an interest in hiding or
+showing a single element on the screen.
+
+<p>
+<strong>Usage:</strong>
+<pre><code>
+  // Declare a flags variable.
+  var flags = new minplayer.flags();
+
+  // Set the flag based on two components interested in the flag.
+  flags.setFlag("component1", true);
+  flags.setFlag("component2", true);
+
+  // Print out the value of the flags. ( Prints 3 )
+  console.log(flags.flags);
+
+  // Now unset a single components flag.
+  flags.setFlag("component1", false);
+
+  // Print out the value of the flags.
+  console.log(flags.flags);
+
+  // Unset the other components flag.
+  flags.setFlag("component2", false);
+
+  // Print out the value of the flags.
+  console.log(flags.flags);
+</code></pre>
+</p>
+				
+				
+					<br /><i>Defined in: </i> <a href="../symbols/src/minplayer_src_minplayer.flags.js.html">minplayer.flags.js</a>.
+				
+			</p>
+
+<!-- ============================== constructor summary ==================== -->			
+			
+			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class minplayer.flags.">
+				<caption>Class Summary</caption>
+				<thead>
+					<tr>
+						<th scope="col">Constructor Attributes</th>
+						<th scope="col">Constructor Name and Description</th>
+					</tr>
+				</thead>
+				<tbody>
+					<tr>
+						<td class="attributes">&nbsp;</td>
+						<td class="nameDescription" >
+							<div class="fixedFont">
+								<b><a href="../symbols/minplayer.flags.html#constructor">minplayer.flags</a></b>()
+							</div>
+							<div class="description"></div>
+						</td>
+					</tr>
+				</tbody>
+			</table>
+			
+
+<!-- ============================== properties summary ===================== -->
+			
+				
+				
+				<table class="summaryTable" cellspacing="0" summary="A summary of the fields documented in the class minplayer.flags.">
+					<caption>Field Summary</caption>
+					<thead>
+						<tr>
+							<th scope="col">Field Attributes</th>
+							<th scope="col">Field Name and Description</th>
+						</tr>
+					</thead>
+					<tbody>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont">
+								<b><a href="../symbols/minplayer.flags.html#flag">flag</a></b>
+								</div>
+								<div class="description">The flag.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont">
+								<b><a href="../symbols/minplayer.flags.html#ids">ids</a></b>
+								</div>
+								<div class="description">Id map to reference id with the flag index.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont">
+								<b><a href="../symbols/minplayer.flags.html#numFlags">numFlags</a></b>
+								</div>
+								<div class="description">The number of flags.</div>
+							</td>
+						</tr>
+					
+					</tbody>
+				</table>
+				
+				
+				
+			
+
+<!-- ============================== methods summary ======================== -->
+			
+				
+				
+				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class minplayer.flags.">
+					<caption>Method Summary</caption>
+					<thead>
+						<tr>
+							<th scope="col">Method Attributes</th>
+							<th scope="col">Method Name and Description</th>
+						</tr>
+					</thead>
+					<tbody>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.flags.html#setFlag">setFlag</a></b>(id, value)
+								</div>
+								<div class="description">Sets a flag based on boolean logic operators.</div>
+							</td>
+						</tr>
+					
+					</tbody>
+				</table>
+				
+				
+				
+			
+<!-- ============================== events summary ======================== -->
+			
+
+<!-- ============================== constructor details ==================== -->		
+			
+			<div class="details"><a name="constructor"> </a>
+				<div class="sectionTitle">
+					Class Detail
+				</div>
+				
+				<div class="fixedFont">
+						<b>minplayer.flags</b>()
+				</div>
+				
+				<div class="description">
+					
+					
+				</div>
+				
+				
+				
+				
+					
+					
+					
+					
+					
+					
+					
+
+			</div>
+			
+
+<!-- ============================== field details ========================== -->		
+			
+				<div class="sectionTitle">
+					Field Detail
+				</div>
+				
+					<a name="flag"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>flag</b>
+					
+					</div>
+					<div class="description">
+						The flag.
+						
+						
+					</div>
+					
+					
+
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name="ids"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>ids</b>
+					
+					</div>
+					<div class="description">
+						Id map to reference id with the flag index.
+						
+						
+					</div>
+					
+					
+
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name="numFlags"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>numFlags</b>
+					
+					</div>
+					<div class="description">
+						The number of flags.
+						
+						
+					</div>
+					
+					
+
+						
+						
+						
+						
+
+					
+				
+			
+
+<!-- ============================== method details ========================= -->		
+			
+				<div class="sectionTitle">
+					Method Detail
+				</div>
+				
+					<a name="setFlag"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>setFlag</b>(id, value)
+					
+					</div>
+					<div class="description">
+						Sets a flag based on boolean logic operators.
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<span class="light fixedFont">{string}</span> <b>id</b>
+									
+								</dt>
+								<dd>The id of the controller interested in this flag.</dd>
+							
+								<dt>
+									<span class="light fixedFont">{boolean}</span> <b>value</b>
+									
+								</dt>
+								<dd>The value of this flag ( true or false ).</dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+						
+						
+
+					
+				
+			
+			
+<!-- ============================== event details ========================= -->		
+			
+			
+			<hr />
+		</div>
+
+		
+<!-- ============================== footer ================================= -->
+		<div class="fineprint" style="clear:both">
+			
+			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Sun Aug 19 2012 12:11:27 GMT-0500 (CDT)
+		</div>
+	</body>
+</html>
diff --git a/public/admin/js/osmplayer/doc/symbols/minplayer.image.html b/public/admin/js/osmplayer/doc/symbols/minplayer.image.html
new file mode 100644
index 0000000000000000000000000000000000000000..7374165fda95ee30171d55f40b83b77ef4b2ea8d
--- /dev/null
+++ b/public/admin/js/osmplayer/doc/symbols/minplayer.image.html
@@ -0,0 +1,687 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+	<head>
+		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+		<meta name="generator" content="JsDoc Toolkit" />
+		
+		<title>JsDoc Reference - minplayer.image</title>
+
+		<style type="text/css">
+			/* default.css */
+body
+{
+	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
+	width: 800px;
+}
+
+.header
+{
+	clear: both;
+	background-color: #ccc;
+	padding: 8px;
+}
+
+h1
+{
+	font-size: 150%;
+	font-weight: bold;
+	padding: 0;
+	margin: 1em 0 0 .3em;
+}
+
+hr
+{
+	border: none 0;
+	border-top: 1px solid #7F8FB1;
+	height: 1px;
+}
+
+pre.code
+{
+	display: block;
+	padding: 8px;
+	border: 1px dashed #ccc;
+}
+
+#index
+{
+	margin-top: 24px;
+	float: left;
+	width: 160px;
+	position: absolute;
+	left: 8px;
+	background-color: #F3F3F3;
+	padding: 8px;
+}
+
+#content
+{
+	margin-left: 190px;
+	width: 600px;
+}
+
+.classList
+{
+	list-style-type: none;
+	padding: 0;
+	margin: 0 0 0 8px;
+	font-family: arial, sans-serif;
+	font-size: 1em;
+	overflow: auto;
+}
+
+.classList li
+{
+	padding: 0;
+	margin: 0 0 8px 0;
+}
+
+.summaryTable { width: 100%; }
+
+h1.classTitle
+{
+	font-size:170%;
+	line-height:130%;
+}
+
+h2 { font-size: 110%; }
+caption, div.sectionTitle
+{
+	background-color: #7F8FB1;
+	color: #fff;
+	font-size:130%;
+	text-align: left;
+	padding: 2px 6px 2px 6px;
+	border: 1px #7F8FB1 solid;
+}
+
+div.sectionTitle { margin-bottom: 8px; }
+.summaryTable thead { display: none; }
+
+.summaryTable td
+{
+	vertical-align: top;
+	padding: 4px;
+	border-bottom: 1px #7F8FB1 solid;
+	border-right: 1px #7F8FB1 solid;
+}
+
+/*col#summaryAttributes {}*/
+.summaryTable td.attributes
+{
+	border-left: 1px #7F8FB1 solid;
+	width: 140px;
+	text-align: right;
+}
+
+td.attributes, .fixedFont
+{
+	line-height: 15px;
+	color: #002EBE;
+	font-family: "Courier New",Courier,monospace;
+	font-size: 13px;
+}
+
+.summaryTable td.nameDescription
+{
+	text-align: left;
+	font-size: 13px;
+	line-height: 15px;
+}
+
+.summaryTable td.nameDescription, .description
+{
+	line-height: 15px;
+	padding: 4px;
+	padding-left: 4px;
+}
+
+.summaryTable { margin-bottom: 8px; }
+
+ul.inheritsList
+{
+	list-style: square;
+	margin-left: 20px;
+	padding-left: 0;
+}
+
+.detailList {
+	margin-left: 20px; 
+	line-height: 15px;
+}
+.detailList dt { margin-left: 20px; }
+
+.detailList .heading
+{
+	font-weight: bold;
+	padding-bottom: 6px;
+	margin-left: 0;
+}
+
+.light, td.attributes, .light a:link, .light a:visited
+{
+	color: #777;
+	font-style: italic;
+}
+
+.fineprint
+{
+	text-align: right;
+	font-size: 10px;
+}
+		</style>
+	</head>
+
+	<body>
+<!-- ============================== header ================================= -->	
+		<!-- begin static/header.html -->
+		<div id="header">
+</div>
+		<!-- end static/header.html -->
+
+<!-- ============================== classes index ============================ -->
+		<div id="index">
+			<!-- begin publish.classesIndex -->
+			<div align="center"><a href="../index.html">Class Index</a>
+| <a href="../files.html">File Index</a></div>
+<hr />
+<h2>Classes</h2>
+<ul class="classList">
+	
+	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
+	
+	<li><a href="../symbols/jQuery.fn.minplayer.html">jQuery.fn.minplayer</a></li>
+	
+	<li><a href="../symbols/jQuery.fn.osmplayer.html">jQuery.fn.osmplayer</a></li>
+	
+	<li><a href="../symbols/minplayer.async.html">minplayer.async</a></li>
+	
+	<li><a href="../symbols/minplayer.compatibility.html">minplayer.compatibility</a></li>
+	
+	<li><a href="../symbols/minplayer.display.html">minplayer.display</a></li>
+	
+	<li><a href="../symbols/minplayer.file.html">minplayer.file</a></li>
+	
+	<li><a href="../symbols/minplayer.flags.html">minplayer.flags</a></li>
+	
+	<li><a href="../symbols/minplayer.image.html">minplayer.image</a></li>
+	
+	<li><a href="../symbols/minplayer.players.base.html">minplayer.players.base</a></li>
+	
+	<li><a href="../symbols/minplayer.players.flash.html">minplayer.players.flash</a></li>
+	
+	<li><a href="../symbols/minplayer.players.html5.html">minplayer.players.html5</a></li>
+	
+	<li><a href="../symbols/minplayer.players.minplayer.html">minplayer.players.minplayer</a></li>
+	
+	<li><a href="../symbols/minplayer.players.vimeo.html">minplayer.players.vimeo</a></li>
+	
+	<li><a href="../symbols/minplayer.players.youtube.html">minplayer.players.youtube</a></li>
+	
+	<li><a href="../symbols/minplayer.plugin.html">minplayer.plugin</a></li>
+	
+	<li><a href="../symbols/osmplayer.html">osmplayer</a></li>
+	
+	<li><a href="../symbols/osmplayer.pager.html">osmplayer.pager</a></li>
+	
+	<li><a href="../symbols/osmplayer.playlist.html">osmplayer.playlist</a></li>
+	
+	<li><a href="../symbols/osmplayer.teaser.html">osmplayer.teaser</a></li>
+	
+</ul>
+<hr />
+			<!-- end publish.classesIndex -->
+		</div>
+		
+		<div id="content">
+<!-- ============================== class title ============================ -->
+			<h1 class="classTitle">
+				
+				Class minplayer.image
+			</h1>
+
+<!-- ============================== class summary ========================== -->			
+			<p class="description">
+				
+				
+			
+				A class to easily handle images.
+				
+				
+					<br /><i>Defined in: </i> <a href="../symbols/src/minplayer_src_minplayer.image.js.html">minplayer.image.js</a>.
+				
+			</p>
+
+<!-- ============================== constructor summary ==================== -->			
+			
+			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class minplayer.image.">
+				<caption>Class Summary</caption>
+				<thead>
+					<tr>
+						<th scope="col">Constructor Attributes</th>
+						<th scope="col">Constructor Name and Description</th>
+					</tr>
+				</thead>
+				<tbody>
+					<tr>
+						<td class="attributes">&nbsp;</td>
+						<td class="nameDescription" >
+							<div class="fixedFont">
+								<b><a href="../symbols/minplayer.image.html#constructor">minplayer.image</a></b>(context, options)
+							</div>
+							<div class="description"></div>
+						</td>
+					</tr>
+				</tbody>
+			</table>
+			
+
+<!-- ============================== properties summary ===================== -->
+			
+				
+				
+				<table class="summaryTable" cellspacing="0" summary="A summary of the fields documented in the class minplayer.image.">
+					<caption>Field Summary</caption>
+					<thead>
+						<tr>
+							<th scope="col">Field Attributes</th>
+							<th scope="col">Field Name and Description</th>
+						</tr>
+					</thead>
+					<tbody>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont">
+								<b><a href="../symbols/minplayer.image.html#constructor">constructor</a></b>
+								</div>
+								<div class="description">Reset the constructor.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont">
+								<b><a href="../symbols/minplayer.image.html#loader">loader</a></b>
+								</div>
+								<div class="description">The loader for the image.</div>
+							</td>
+						</tr>
+					
+					</tbody>
+				</table>
+				
+				
+				
+			
+
+<!-- ============================== methods summary ======================== -->
+			
+				
+				
+				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class minplayer.image.">
+					<caption>Method Summary</caption>
+					<thead>
+						<tr>
+							<th scope="col">Method Attributes</th>
+							<th scope="col">Method Name and Description</th>
+						</tr>
+					</thead>
+					<tbody>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.image.html#clear">clear</a></b>(callback)
+								</div>
+								<div class="description">Clears an image.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.image.html#construct">construct</a></b>()
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.image.html#load">load</a></b>(src)
+								</div>
+								<div class="description">Loads an image.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.image.html#onResize">onResize</a></b>()
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.image.html#resize">resize</a></b>(width, height)
+								</div>
+								<div class="description">Resize the image provided a width and height or nothing.</div>
+							</td>
+						</tr>
+					
+					</tbody>
+				</table>
+				
+				
+				
+			
+<!-- ============================== events summary ======================== -->
+			
+
+<!-- ============================== constructor details ==================== -->		
+			
+			<div class="details"><a name="constructor"> </a>
+				<div class="sectionTitle">
+					Class Detail
+				</div>
+				
+				<div class="fixedFont">
+						<b>minplayer.image</b>(context, options)
+				</div>
+				
+				<div class="description">
+					
+					
+				</div>
+				
+				
+				
+				
+					
+						<dl class="detailList">
+						<dt class="heading">Parameters:</dt>
+						
+							<dt>
+								<span class="light fixedFont">{object}</span>  <b>context</b>
+								
+							</dt>
+								<dd>The jQuery context.</dd>
+						
+							<dt>
+								<span class="light fixedFont">{object}</span>  <b>options</b>
+								
+							</dt>
+								<dd>This components options.</dd>
+						
+						</dl>
+					
+					
+					
+					
+					
+					
+					
+
+			</div>
+			
+
+<!-- ============================== field details ========================== -->		
+			
+				<div class="sectionTitle">
+					Field Detail
+				</div>
+				
+					<a name="constructor"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>constructor</b>
+					
+					</div>
+					<div class="description">
+						Reset the constructor.
+						
+						
+					</div>
+					
+					
+
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name="loader"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>loader</b>
+					
+					</div>
+					<div class="description">
+						The loader for the image.
+						
+						
+					</div>
+					
+					
+
+						
+						
+						
+						
+
+					
+				
+			
+
+<!-- ============================== method details ========================= -->		
+			
+				<div class="sectionTitle">
+					Method Detail
+				</div>
+				
+					<a name="clear"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>clear</b>(callback)
+					
+					</div>
+					<div class="description">
+						Clears an image.
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<span class="light fixedFont">{function}</span> <b>callback</b>
+									
+								</dt>
+								<dd>Called when the image is done clearing.</dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name="construct"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>construct</b>()
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd>minplayer.plugin.construct</dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name="load"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>load</b>(src)
+					
+					</div>
+					<div class="description">
+						Loads an image.
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<span class="light fixedFont">{string}</span> <b>src</b>
+									
+								</dt>
+								<dd>The source of the image to load.</dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name="onResize"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>onResize</b>()
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd><a href="../symbols/minplayer.display.html#onResize">minplayer.display#onResize</a></dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name="resize"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>resize</b>(width, height)
+					
+					</div>
+					<div class="description">
+						Resize the image provided a width and height or nothing.
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<span class="light fixedFont">{integer}</span> <b>width</b>
+									
+								</dt>
+								<dd>(optional) The width of the container.</dd>
+							
+								<dt>
+									<span class="light fixedFont">{integer}</span> <b>height</b>
+									
+								</dt>
+								<dd>(optional) The height of the container.</dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+						
+						
+
+					
+				
+			
+			
+<!-- ============================== event details ========================= -->		
+			
+			
+			<hr />
+		</div>
+
+		
+<!-- ============================== footer ================================= -->
+		<div class="fineprint" style="clear:both">
+			
+			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Sun Aug 19 2012 12:11:27 GMT-0500 (CDT)
+		</div>
+	</body>
+</html>
diff --git a/public/admin/js/osmplayer/doc/symbols/minplayer.players.base.html b/public/admin/js/osmplayer/doc/symbols/minplayer.players.base.html
new file mode 100644
index 0000000000000000000000000000000000000000..07a45cf8248f849f01faeb82878066841a90f2f6
--- /dev/null
+++ b/public/admin/js/osmplayer/doc/symbols/minplayer.players.base.html
@@ -0,0 +1,2102 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+	<head>
+		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+		<meta name="generator" content="JsDoc Toolkit" />
+		
+		<title>JsDoc Reference - minplayer.players.base</title>
+
+		<style type="text/css">
+			/* default.css */
+body
+{
+	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
+	width: 800px;
+}
+
+.header
+{
+	clear: both;
+	background-color: #ccc;
+	padding: 8px;
+}
+
+h1
+{
+	font-size: 150%;
+	font-weight: bold;
+	padding: 0;
+	margin: 1em 0 0 .3em;
+}
+
+hr
+{
+	border: none 0;
+	border-top: 1px solid #7F8FB1;
+	height: 1px;
+}
+
+pre.code
+{
+	display: block;
+	padding: 8px;
+	border: 1px dashed #ccc;
+}
+
+#index
+{
+	margin-top: 24px;
+	float: left;
+	width: 160px;
+	position: absolute;
+	left: 8px;
+	background-color: #F3F3F3;
+	padding: 8px;
+}
+
+#content
+{
+	margin-left: 190px;
+	width: 600px;
+}
+
+.classList
+{
+	list-style-type: none;
+	padding: 0;
+	margin: 0 0 0 8px;
+	font-family: arial, sans-serif;
+	font-size: 1em;
+	overflow: auto;
+}
+
+.classList li
+{
+	padding: 0;
+	margin: 0 0 8px 0;
+}
+
+.summaryTable { width: 100%; }
+
+h1.classTitle
+{
+	font-size:170%;
+	line-height:130%;
+}
+
+h2 { font-size: 110%; }
+caption, div.sectionTitle
+{
+	background-color: #7F8FB1;
+	color: #fff;
+	font-size:130%;
+	text-align: left;
+	padding: 2px 6px 2px 6px;
+	border: 1px #7F8FB1 solid;
+}
+
+div.sectionTitle { margin-bottom: 8px; }
+.summaryTable thead { display: none; }
+
+.summaryTable td
+{
+	vertical-align: top;
+	padding: 4px;
+	border-bottom: 1px #7F8FB1 solid;
+	border-right: 1px #7F8FB1 solid;
+}
+
+/*col#summaryAttributes {}*/
+.summaryTable td.attributes
+{
+	border-left: 1px #7F8FB1 solid;
+	width: 140px;
+	text-align: right;
+}
+
+td.attributes, .fixedFont
+{
+	line-height: 15px;
+	color: #002EBE;
+	font-family: "Courier New",Courier,monospace;
+	font-size: 13px;
+}
+
+.summaryTable td.nameDescription
+{
+	text-align: left;
+	font-size: 13px;
+	line-height: 15px;
+}
+
+.summaryTable td.nameDescription, .description
+{
+	line-height: 15px;
+	padding: 4px;
+	padding-left: 4px;
+}
+
+.summaryTable { margin-bottom: 8px; }
+
+ul.inheritsList
+{
+	list-style: square;
+	margin-left: 20px;
+	padding-left: 0;
+}
+
+.detailList {
+	margin-left: 20px; 
+	line-height: 15px;
+}
+.detailList dt { margin-left: 20px; }
+
+.detailList .heading
+{
+	font-weight: bold;
+	padding-bottom: 6px;
+	margin-left: 0;
+}
+
+.light, td.attributes, .light a:link, .light a:visited
+{
+	color: #777;
+	font-style: italic;
+}
+
+.fineprint
+{
+	text-align: right;
+	font-size: 10px;
+}
+		</style>
+	</head>
+
+	<body>
+<!-- ============================== header ================================= -->	
+		<!-- begin static/header.html -->
+		<div id="header">
+</div>
+		<!-- end static/header.html -->
+
+<!-- ============================== classes index ============================ -->
+		<div id="index">
+			<!-- begin publish.classesIndex -->
+			<div align="center"><a href="../index.html">Class Index</a>
+| <a href="../files.html">File Index</a></div>
+<hr />
+<h2>Classes</h2>
+<ul class="classList">
+	
+	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
+	
+	<li><a href="../symbols/jQuery.fn.minplayer.html">jQuery.fn.minplayer</a></li>
+	
+	<li><a href="../symbols/jQuery.fn.osmplayer.html">jQuery.fn.osmplayer</a></li>
+	
+	<li><a href="../symbols/minplayer.async.html">minplayer.async</a></li>
+	
+	<li><a href="../symbols/minplayer.compatibility.html">minplayer.compatibility</a></li>
+	
+	<li><a href="../symbols/minplayer.display.html">minplayer.display</a></li>
+	
+	<li><a href="../symbols/minplayer.file.html">minplayer.file</a></li>
+	
+	<li><a href="../symbols/minplayer.flags.html">minplayer.flags</a></li>
+	
+	<li><a href="../symbols/minplayer.image.html">minplayer.image</a></li>
+	
+	<li><a href="../symbols/minplayer.players.base.html">minplayer.players.base</a></li>
+	
+	<li><a href="../symbols/minplayer.players.flash.html">minplayer.players.flash</a></li>
+	
+	<li><a href="../symbols/minplayer.players.html5.html">minplayer.players.html5</a></li>
+	
+	<li><a href="../symbols/minplayer.players.minplayer.html">minplayer.players.minplayer</a></li>
+	
+	<li><a href="../symbols/minplayer.players.vimeo.html">minplayer.players.vimeo</a></li>
+	
+	<li><a href="../symbols/minplayer.players.youtube.html">minplayer.players.youtube</a></li>
+	
+	<li><a href="../symbols/minplayer.plugin.html">minplayer.plugin</a></li>
+	
+	<li><a href="../symbols/osmplayer.html">osmplayer</a></li>
+	
+	<li><a href="../symbols/osmplayer.pager.html">osmplayer.pager</a></li>
+	
+	<li><a href="../symbols/osmplayer.playlist.html">osmplayer.playlist</a></li>
+	
+	<li><a href="../symbols/osmplayer.teaser.html">osmplayer.teaser</a></li>
+	
+</ul>
+<hr />
+			<!-- end publish.classesIndex -->
+		</div>
+		
+		<div id="content">
+<!-- ============================== class title ============================ -->
+			<h1 class="classTitle">
+				
+				Class minplayer.players.base
+			</h1>
+
+<!-- ============================== class summary ========================== -->			
+			<p class="description">
+				
+				<br />Extends
+					<a href="../symbols/minplayer.display.html">minplayer.display</a>.<br />
+				
+			
+				The base media player class where all media players derive from.
+				
+				
+					<br /><i>Defined in: </i> <a href="../symbols/src/minplayer_src_minplayer.players.base.js.html">minplayer.players.base.js</a>.
+				
+			</p>
+
+<!-- ============================== constructor summary ==================== -->			
+			
+			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class minplayer.players.base.">
+				<caption>Class Summary</caption>
+				<thead>
+					<tr>
+						<th scope="col">Constructor Attributes</th>
+						<th scope="col">Constructor Name and Description</th>
+					</tr>
+				</thead>
+				<tbody>
+					<tr>
+						<td class="attributes">&nbsp;</td>
+						<td class="nameDescription" >
+							<div class="fixedFont">
+								<b><a href="../symbols/minplayer.players.base.html#constructor">minplayer.players.base</a></b>(context, options, queue)
+							</div>
+							<div class="description"></div>
+						</td>
+					</tr>
+				</tbody>
+			</table>
+			
+
+<!-- ============================== properties summary ===================== -->
+			
+				
+				
+				<table class="summaryTable" cellspacing="0" summary="A summary of the fields documented in the class minplayer.players.base.">
+					<caption>Field Summary</caption>
+					<thead>
+						<tr>
+							<th scope="col">Field Attributes</th>
+							<th scope="col">Field Name and Description</th>
+						</tr>
+					</thead>
+					<tbody>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont">
+								<b><a href="../symbols/minplayer.players.base.html#constructor">constructor</a></b>
+								</div>
+								<div class="description">Reset the constructor.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont">
+								<b><a href="../symbols/minplayer.players.base.html#mediaFile">mediaFile</a></b>
+								</div>
+								<div class="description">The currently loaded media file.</div>
+							</td>
+						</tr>
+					
+					</tbody>
+				</table>
+				
+				
+				
+				<dl class="inheritsList">
+				<dt>Fields borrowed from class <a href="../symbols/minplayer.display.html">minplayer.display</a>: </dt><dd><a href="../symbols/minplayer.display.html#onResize">onResize</a></dd><dt>Fields borrowed from class <a href="../symbols/minplayer.plugin.html">minplayer.plugin</a>: </dt><dd><a href="../symbols/minplayer.plugin.html#active">active</a>, <a href="../symbols/minplayer.plugin.html#context">context</a>, <a href="../symbols/minplayer.plugin.html#lock">lock</a>, <a href="../symbols/minplayer.plugin.html#name">name</a>, <a href="../symbols/minplayer.plugin.html#options">options</a>, <a href="../symbols/minplayer.plugin.html#pluginReady">pluginReady</a>, <a href="../symbols/minplayer.plugin.html#queue">queue</a>, <a href="../symbols/minplayer.plugin.html#triggered">triggered</a></dd>
+				</dl>
+				
+			
+
+<!-- ============================== methods summary ======================== -->
+			
+				
+				
+				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class minplayer.players.base.">
+					<caption>Method Summary</caption>
+					<thead>
+						<tr>
+							<th scope="col">Method Attributes</th>
+							<th scope="col">Method Name and Description</th>
+						</tr>
+					</thead>
+					<tbody>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.base.html#addPlayer">addPlayer</a></b>()
+								</div>
+								<div class="description">Adds the media player.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&lt;static&gt; &nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont">minplayer.players.base.<b><a href="../symbols/minplayer.players.base.html#.canPlay">canPlay</a></b>(file)
+								</div>
+								<div class="description">Determine if we can play the media file.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.base.html#clear">clear</a></b>()
+								</div>
+								<div class="description">Clears the media player.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.base.html#construct">construct</a></b>()
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.base.html#create">create</a></b>()
+								</div>
+								<div class="description">Creates the media player and inserts it in the DOM.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.base.html#destroy">destroy</a></b>()
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.base.html#getBytesLoaded">getBytesLoaded</a></b>(callback)
+								</div>
+								<div class="description">Return the bytes of media loaded.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.base.html#getBytesStart">getBytesStart</a></b>(callback)
+								</div>
+								<div class="description">Return the start bytes for the loaded media.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.base.html#getBytesTotal">getBytesTotal</a></b>(callback)
+								</div>
+								<div class="description">Return the total amount of bytes.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.base.html#getCurrentTime">getCurrentTime</a></b>(callback)
+								</div>
+								<div class="description">Get the current time for the media being played.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.base.html#getDuration">getDuration</a></b>(callback)
+								</div>
+								<div class="description">Return the duration of the loaded media.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.base.html#getElements">getElements</a></b>()
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&lt;static&gt; &nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont">minplayer.players.base.<b><a href="../symbols/minplayer.players.base.html#.getMediaId">getMediaId</a></b>(file)
+								</div>
+								<div class="description">Returns the ID for the media being played.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.base.html#getPlayer">getPlayer</a></b>()
+								</div>
+								<div class="description">Returns the media player object.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&lt;static&gt; &nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont">minplayer.players.base.<b><a href="../symbols/minplayer.players.base.html#.getPriority">getPriority</a></b>()
+								</div>
+								<div class="description">Get the priority of this media player.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.base.html#getValue">getValue</a></b>(getter, callback)
+								</div>
+								<div class="description">Gets a value from the player.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.base.html#getVolume">getVolume</a></b>(callback)
+								</div>
+								<div class="description">Get the volume from the loaded media.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.base.html#hasController">hasController</a></b>()
+								</div>
+								<div class="description">Determines if the player should show the controller.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.base.html#hasPlayLoader">hasPlayLoader</a></b>(preview)
+								</div>
+								<div class="description">Determines if the player should show the playloader.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.base.html#isReady">isReady</a></b>()
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.base.html#load">load</a></b>(file)
+								</div>
+								<div class="description">Loads a new media player.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.base.html#onComplete">onComplete</a></b>()
+								</div>
+								<div class="description">Should be called when the media is complete.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.base.html#onError">onError</a></b>(errorCode)
+								</div>
+								<div class="description">Called when an error occurs.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.base.html#onLoaded">onLoaded</a></b>()
+								</div>
+								<div class="description">Should be called when the media is done loading.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.base.html#onPaused">onPaused</a></b>()
+								</div>
+								<div class="description">Should be called when the media is paused.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.base.html#onPlaying">onPlaying</a></b>()
+								</div>
+								<div class="description">Should be called when the media is playing.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.base.html#onReady">onReady</a></b>()
+								</div>
+								<div class="description">Called when the player is ready to recieve events and commands.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.base.html#onWaiting">onWaiting</a></b>()
+								</div>
+								<div class="description">Should be called when the player is waiting.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.base.html#pause">pause</a></b>()
+								</div>
+								<div class="description">Pause the loaded media file.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.base.html#play">play</a></b>()
+								</div>
+								<div class="description">Play the loaded media file.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.base.html#playerFound">playerFound</a></b>()
+								</div>
+								<div class="description">Returns if the media player is already within the DOM.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.base.html#reset">reset</a></b>()
+								</div>
+								<div class="description">Resets all variables.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.base.html#seek">seek</a></b>(pos)
+								</div>
+								<div class="description">Seek the loaded media.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.base.html#seekRelative">seekRelative</a></b>(pos)
+								</div>
+								<div class="description">Seeks to relative position.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.base.html#setVolume">setVolume</a></b>(vol)
+								</div>
+								<div class="description">Set the volume of the loaded minplayer.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.base.html#setVolumeRelative">setVolumeRelative</a></b>(vol)
+								</div>
+								<div class="description">Set the volume of the loaded minplayer.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.base.html#stop">stop</a></b>()
+								</div>
+								<div class="description">Stop the loaded media file.</div>
+							</td>
+						</tr>
+					
+					</tbody>
+				</table>
+				
+				
+				
+				<dl class="inheritsList">
+				<dt>Methods borrowed from class <a href="../symbols/minplayer.display.html">minplayer.display</a>: </dt><dd><a href="../symbols/minplayer.display.html#fullscreen">fullscreen</a>, <a href="../symbols/minplayer.display.html#fullScreenElement">fullScreenElement</a>, <a href="../symbols/minplayer.display.html#getDisplay">getDisplay</a>, <a href="../symbols/minplayer.display.html#getScaledRect">getScaledRect</a>, <a href="../symbols/minplayer.display.html#hide">hide</a>, <a href="../symbols/minplayer.display.html#isFullScreen">isFullScreen</a>, <a href="../symbols/minplayer.display.html#onFocus">onFocus</a>, <a href="../symbols/minplayer.display.html#toggleFullScreen">toggleFullScreen</a></dd><dt>Methods borrowed from class <a href="../symbols/minplayer.plugin.html">minplayer.plugin</a>: </dt><dd><a href="../symbols/minplayer.plugin.html#addPlugin">addPlugin</a>, <a href="../symbols/minplayer.plugin.html#bind">bind</a>, <a href="../symbols/minplayer.plugin.html#checkQueue">checkQueue</a>, <a href="../symbols/minplayer.plugin.html#get">get</a>, <a href="../symbols/minplayer.plugin.html#isValid">isValid</a>, <a href="../symbols/minplayer.plugin.html#poll">poll</a>, <a href="../symbols/minplayer.plugin.html#ready">ready</a>, <a href="../symbols/minplayer.plugin.html#trigger">trigger</a>, <a href="../symbols/minplayer.plugin.html#unbind">unbind</a></dd>
+				</dl>
+				
+			
+<!-- ============================== events summary ======================== -->
+			
+
+<!-- ============================== constructor details ==================== -->		
+			
+			<div class="details"><a name="constructor"> </a>
+				<div class="sectionTitle">
+					Class Detail
+				</div>
+				
+				<div class="fixedFont">
+						<b>minplayer.players.base</b>(context, options, queue)
+				</div>
+				
+				<div class="description">
+					
+					
+				</div>
+				
+				
+				
+				
+					
+						<dl class="detailList">
+						<dt class="heading">Parameters:</dt>
+						
+							<dt>
+								<span class="light fixedFont">{object}</span>  <b>context</b>
+								
+							</dt>
+								<dd>The jQuery context.</dd>
+						
+							<dt>
+								<span class="light fixedFont">{object}</span>  <b>options</b>
+								
+							</dt>
+								<dd>This components options.</dd>
+						
+							<dt>
+								<span class="light fixedFont">{object}</span>  <b>queue</b>
+								
+							</dt>
+								<dd>The event queue to pass events around.</dd>
+						
+						</dl>
+					
+					
+					
+					
+					
+					
+					
+
+			</div>
+			
+
+<!-- ============================== field details ========================== -->		
+			
+				<div class="sectionTitle">
+					Field Detail
+				</div>
+				
+					<a name="constructor"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>constructor</b>
+					
+					</div>
+					<div class="description">
+						Reset the constructor.
+						
+						
+					</div>
+					
+					
+
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name="mediaFile"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>mediaFile</b>
+					
+					</div>
+					<div class="description">
+						The currently loaded media file.
+						
+						
+					</div>
+					
+					
+
+						
+						
+						
+						
+
+					
+				
+			
+
+<!-- ============================== method details ========================= -->		
+			
+				<div class="sectionTitle">
+					Method Detail
+				</div>
+				
+					<a name="addPlayer"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>addPlayer</b>()
+					
+					</div>
+					<div class="description">
+						Adds the media player.
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name=".canPlay"> </a>
+					<div class="fixedFont">&lt;static&gt; 
+					
+					<span class="light">{boolean}</span>
+					<span class="light">minplayer.players.base.</span><b>canPlay</b>(file)
+					
+					</div>
+					<div class="description">
+						Determine if we can play the media file.
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<span class="light fixedFont">{object}</span> <b>file</b>
+									
+								</dt>
+								<dd>A <a href="../symbols/minplayer.file.html">minplayer.file</a> object.</dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{boolean}</span> If this player can play this media type.</dd>
+							
+							</dl>
+						
+						
+						
+
+					<hr />
+				
+					<a name="clear"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>clear</b>()
+					
+					</div>
+					<div class="description">
+						Clears the media player.
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name="construct"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>construct</b>()
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd>minplayer.plugin.construct</dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name="create"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{object}</span>
+					<b>create</b>()
+					
+					</div>
+					<div class="description">
+						Creates the media player and inserts it in the DOM.
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{object}</span> The media player entity.</dd>
+							
+							</dl>
+						
+						
+						
+
+					<hr />
+				
+					<a name="destroy"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>destroy</b>()
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd>minplayer.plugin.destroy.</dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name="getBytesLoaded"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{int}</span>
+					<b>getBytesLoaded</b>(callback)
+					
+					</div>
+					<div class="description">
+						Return the bytes of media loaded.
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<span class="light fixedFont">{function}</span> <b>callback</b>
+									
+								</dt>
+								<dd>Called when the bytes loaded is determined.</dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{int}</span> The amount of bytes loaded.</dd>
+							
+							</dl>
+						
+						
+						
+
+					<hr />
+				
+					<a name="getBytesStart"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{int}</span>
+					<b>getBytesStart</b>(callback)
+					
+					</div>
+					<div class="description">
+						Return the start bytes for the loaded media.
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<span class="light fixedFont">{function}</span> <b>callback</b>
+									
+								</dt>
+								<dd>Called when the start bytes is determined.</dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{int}</span> The bytes that were started.</dd>
+							
+							</dl>
+						
+						
+						
+
+					<hr />
+				
+					<a name="getBytesTotal"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{int}</span>
+					<b>getBytesTotal</b>(callback)
+					
+					</div>
+					<div class="description">
+						Return the total amount of bytes.
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<span class="light fixedFont">{function}</span> <b>callback</b>
+									
+								</dt>
+								<dd>Called when the bytes total is determined.</dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{int}</span> The total amount of bytes for this media.</dd>
+							
+							</dl>
+						
+						
+						
+
+					<hr />
+				
+					<a name="getCurrentTime"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{number}</span>
+					<b>getCurrentTime</b>(callback)
+					
+					</div>
+					<div class="description">
+						Get the current time for the media being played.
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<span class="light fixedFont">{function}</span> <b>callback</b>
+									
+								</dt>
+								<dd>Called when the time is determined.</dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{number}</span> The volume of the media; 0 to 1.</dd>
+							
+							</dl>
+						
+						
+						
+
+					<hr />
+				
+					<a name="getDuration"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{number}</span>
+					<b>getDuration</b>(callback)
+					
+					</div>
+					<div class="description">
+						Return the duration of the loaded media.
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<span class="light fixedFont">{function}</span> <b>callback</b>
+									
+								</dt>
+								<dd>Called when the duration is determined.</dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{number}</span> The duration of the loaded media.</dd>
+							
+							</dl>
+						
+						
+						
+
+					<hr />
+				
+					<a name="getElements"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{object}</span>
+					<b>getElements</b>()
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{object}</span> The elements for this display.</dd>
+							
+							</dl>
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd>minplayer.display.getElements</dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name=".getMediaId"> </a>
+					<div class="fixedFont">&lt;static&gt; 
+					
+					<span class="light">{string}</span>
+					<span class="light">minplayer.players.base.</span><b>getMediaId</b>(file)
+					
+					</div>
+					<div class="description">
+						Returns the ID for the media being played.
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<span class="light fixedFont">{object}</span> <b>file</b>
+									
+								</dt>
+								<dd>A <a href="../symbols/minplayer.file.html">minplayer.file</a> object.</dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{string}</span> The ID for the provided media.</dd>
+							
+							</dl>
+						
+						
+						
+
+					<hr />
+				
+					<a name="getPlayer"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{object}</span>
+					<b>getPlayer</b>()
+					
+					</div>
+					<div class="description">
+						Returns the media player object.
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{object}</span> The media player object.</dd>
+							
+							</dl>
+						
+						
+						
+
+					<hr />
+				
+					<a name=".getPriority"> </a>
+					<div class="fixedFont">&lt;static&gt; 
+					
+					<span class="light">{number}</span>
+					<span class="light">minplayer.players.base.</span><b>getPriority</b>()
+					
+					</div>
+					<div class="description">
+						Get the priority of this media player.
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{number}</span> The priority of this media player.</dd>
+							
+							</dl>
+						
+						
+						
+
+					<hr />
+				
+					<a name="getValue"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>getValue</b>(getter, callback)
+					
+					</div>
+					<div class="description">
+						Gets a value from the player.
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<span class="light fixedFont">{string}</span> <b>getter</b>
+									
+								</dt>
+								<dd>The getter method on the player.</dd>
+							
+								<dt>
+									<span class="light fixedFont">{function}</span> <b>callback</b>
+									
+								</dt>
+								<dd>The callback function.</dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name="getVolume"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{number}</span>
+					<b>getVolume</b>(callback)
+					
+					</div>
+					<div class="description">
+						Get the volume from the loaded media.
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<span class="light fixedFont">{function}</span> <b>callback</b>
+									
+								</dt>
+								<dd>Called when the volume is determined.</dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{number}</span> The volume of the media; 0 to 1.</dd>
+							
+							</dl>
+						
+						
+						
+
+					<hr />
+				
+					<a name="hasController"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{bool}</span>
+					<b>hasController</b>()
+					
+					</div>
+					<div class="description">
+						Determines if the player should show the controller.
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{bool}</span> If this player implements its own controller.</dd>
+							
+							</dl>
+						
+						
+						
+
+					<hr />
+				
+					<a name="hasPlayLoader"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{bool}</span>
+					<b>hasPlayLoader</b>(preview)
+					
+					</div>
+					<div class="description">
+						Determines if the player should show the playloader.
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<span class="light fixedFont">{string}</span> <b>preview</b>
+									
+								</dt>
+								<dd>The preview image.</dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{bool}</span> If this player implements its own playLoader.</dd>
+							
+							</dl>
+						
+						
+						
+
+					<hr />
+				
+					<a name="isReady"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{boolean}</span>
+					<b>isReady</b>()
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{boolean}</span> Checks to see if the Flash is ready.</dd>
+							
+							</dl>
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd><a href="../symbols/minplayer.players.base.html#isReady">minplayer.players.base#isReady</a></dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name="load"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{boolean}</span>
+					<b>load</b>(file)
+					
+					</div>
+					<div class="description">
+						Loads a new media player.
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<span class="light fixedFont">{object}</span> <b>file</b>
+									
+								</dt>
+								<dd>A <a href="../symbols/minplayer.file.html">minplayer.file</a> object.</dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{boolean}</span> If this action was performed.</dd>
+							
+							</dl>
+						
+						
+						
+
+					<hr />
+				
+					<a name="onComplete"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>onComplete</b>()
+					
+					</div>
+					<div class="description">
+						Should be called when the media is complete.
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name="onError"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>onError</b>(errorCode)
+					
+					</div>
+					<div class="description">
+						Called when an error occurs.
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<span class="light fixedFont">{string}</span> <b>errorCode</b>
+									
+								</dt>
+								<dd>The error that was triggered.</dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name="onLoaded"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>onLoaded</b>()
+					
+					</div>
+					<div class="description">
+						Should be called when the media is done loading.
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name="onPaused"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>onPaused</b>()
+					
+					</div>
+					<div class="description">
+						Should be called when the media is paused.
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name="onPlaying"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>onPlaying</b>()
+					
+					</div>
+					<div class="description">
+						Should be called when the media is playing.
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name="onReady"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>onReady</b>()
+					
+					</div>
+					<div class="description">
+						Called when the player is ready to recieve events and commands.
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name="onWaiting"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>onWaiting</b>()
+					
+					</div>
+					<div class="description">
+						Should be called when the player is waiting.
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name="pause"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{boolean}</span>
+					<b>pause</b>()
+					
+					</div>
+					<div class="description">
+						Pause the loaded media file.
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{boolean}</span> If this action was performed.</dd>
+							
+							</dl>
+						
+						
+						
+
+					<hr />
+				
+					<a name="play"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{boolean}</span>
+					<b>play</b>()
+					
+					</div>
+					<div class="description">
+						Play the loaded media file.
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{boolean}</span> If this action was performed.</dd>
+							
+							</dl>
+						
+						
+						
+
+					<hr />
+				
+					<a name="playerFound"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{boolean}</span>
+					<b>playerFound</b>()
+					
+					</div>
+					<div class="description">
+						Returns if the media player is already within the DOM.
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{boolean}</span> TRUE - if the player is in the DOM, FALSE otherwise.</dd>
+							
+							</dl>
+						
+						
+						
+
+					<hr />
+				
+					<a name="reset"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>reset</b>()
+					
+					</div>
+					<div class="description">
+						Resets all variables.
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name="seek"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{boolean}</span>
+					<b>seek</b>(pos)
+					
+					</div>
+					<div class="description">
+						Seek the loaded media.
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<span class="light fixedFont">{number}</span> <b>pos</b>
+									
+								</dt>
+								<dd>The position to seek the minplayer. 0 to 1.</dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{boolean}</span> If this action was performed.</dd>
+							
+							</dl>
+						
+						
+						
+
+					<hr />
+				
+					<a name="seekRelative"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>seekRelative</b>(pos)
+					
+					</div>
+					<div class="description">
+						Seeks to relative position.
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<span class="light fixedFont">{number}</span> <b>pos</b>
+									
+								</dt>
+								<dd>Relative position.  -1 to 1 (percent), > 1 (seconds).</dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name="setVolume"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{boolean}</span>
+					<b>setVolume</b>(vol)
+					
+					</div>
+					<div class="description">
+						Set the volume of the loaded minplayer.
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<span class="light fixedFont">{number}</span> <b>vol</b>
+									
+								</dt>
+								<dd>The volume to set the media. 0 to 1.</dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{boolean}</span> If this action was performed.</dd>
+							
+							</dl>
+						
+						
+						
+
+					<hr />
+				
+					<a name="setVolumeRelative"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>setVolumeRelative</b>(vol)
+					
+					</div>
+					<div class="description">
+						Set the volume of the loaded minplayer.
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<span class="light fixedFont">{number}</span> <b>vol</b>
+									
+								</dt>
+								<dd>-1 to 1 - The relative amount to increase or decrease.</dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name="stop"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{boolean}</span>
+					<b>stop</b>()
+					
+					</div>
+					<div class="description">
+						Stop the loaded media file.
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{boolean}</span> If this action was performed.</dd>
+							
+							</dl>
+						
+						
+						
+
+					
+				
+			
+			
+<!-- ============================== event details ========================= -->		
+			
+			
+			<hr />
+		</div>
+
+		
+<!-- ============================== footer ================================= -->
+		<div class="fineprint" style="clear:both">
+			
+			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Sun Aug 19 2012 12:11:27 GMT-0500 (CDT)
+		</div>
+	</body>
+</html>
diff --git a/public/admin/js/osmplayer/doc/symbols/minplayer.players.flash.html b/public/admin/js/osmplayer/doc/symbols/minplayer.players.flash.html
new file mode 100644
index 0000000000000000000000000000000000000000..3fc78e1aff82c68290ff7cca6dbea7cbd2c5dc0e
--- /dev/null
+++ b/public/admin/js/osmplayer/doc/symbols/minplayer.players.flash.html
@@ -0,0 +1,696 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+	<head>
+		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+		<meta name="generator" content="JsDoc Toolkit" />
+		
+		<title>JsDoc Reference - minplayer.players.flash</title>
+
+		<style type="text/css">
+			/* default.css */
+body
+{
+	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
+	width: 800px;
+}
+
+.header
+{
+	clear: both;
+	background-color: #ccc;
+	padding: 8px;
+}
+
+h1
+{
+	font-size: 150%;
+	font-weight: bold;
+	padding: 0;
+	margin: 1em 0 0 .3em;
+}
+
+hr
+{
+	border: none 0;
+	border-top: 1px solid #7F8FB1;
+	height: 1px;
+}
+
+pre.code
+{
+	display: block;
+	padding: 8px;
+	border: 1px dashed #ccc;
+}
+
+#index
+{
+	margin-top: 24px;
+	float: left;
+	width: 160px;
+	position: absolute;
+	left: 8px;
+	background-color: #F3F3F3;
+	padding: 8px;
+}
+
+#content
+{
+	margin-left: 190px;
+	width: 600px;
+}
+
+.classList
+{
+	list-style-type: none;
+	padding: 0;
+	margin: 0 0 0 8px;
+	font-family: arial, sans-serif;
+	font-size: 1em;
+	overflow: auto;
+}
+
+.classList li
+{
+	padding: 0;
+	margin: 0 0 8px 0;
+}
+
+.summaryTable { width: 100%; }
+
+h1.classTitle
+{
+	font-size:170%;
+	line-height:130%;
+}
+
+h2 { font-size: 110%; }
+caption, div.sectionTitle
+{
+	background-color: #7F8FB1;
+	color: #fff;
+	font-size:130%;
+	text-align: left;
+	padding: 2px 6px 2px 6px;
+	border: 1px #7F8FB1 solid;
+}
+
+div.sectionTitle { margin-bottom: 8px; }
+.summaryTable thead { display: none; }
+
+.summaryTable td
+{
+	vertical-align: top;
+	padding: 4px;
+	border-bottom: 1px #7F8FB1 solid;
+	border-right: 1px #7F8FB1 solid;
+}
+
+/*col#summaryAttributes {}*/
+.summaryTable td.attributes
+{
+	border-left: 1px #7F8FB1 solid;
+	width: 140px;
+	text-align: right;
+}
+
+td.attributes, .fixedFont
+{
+	line-height: 15px;
+	color: #002EBE;
+	font-family: "Courier New",Courier,monospace;
+	font-size: 13px;
+}
+
+.summaryTable td.nameDescription
+{
+	text-align: left;
+	font-size: 13px;
+	line-height: 15px;
+}
+
+.summaryTable td.nameDescription, .description
+{
+	line-height: 15px;
+	padding: 4px;
+	padding-left: 4px;
+}
+
+.summaryTable { margin-bottom: 8px; }
+
+ul.inheritsList
+{
+	list-style: square;
+	margin-left: 20px;
+	padding-left: 0;
+}
+
+.detailList {
+	margin-left: 20px; 
+	line-height: 15px;
+}
+.detailList dt { margin-left: 20px; }
+
+.detailList .heading
+{
+	font-weight: bold;
+	padding-bottom: 6px;
+	margin-left: 0;
+}
+
+.light, td.attributes, .light a:link, .light a:visited
+{
+	color: #777;
+	font-style: italic;
+}
+
+.fineprint
+{
+	text-align: right;
+	font-size: 10px;
+}
+		</style>
+	</head>
+
+	<body>
+<!-- ============================== header ================================= -->	
+		<!-- begin static/header.html -->
+		<div id="header">
+</div>
+		<!-- end static/header.html -->
+
+<!-- ============================== classes index ============================ -->
+		<div id="index">
+			<!-- begin publish.classesIndex -->
+			<div align="center"><a href="../index.html">Class Index</a>
+| <a href="../files.html">File Index</a></div>
+<hr />
+<h2>Classes</h2>
+<ul class="classList">
+	
+	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
+	
+	<li><a href="../symbols/jQuery.fn.minplayer.html">jQuery.fn.minplayer</a></li>
+	
+	<li><a href="../symbols/jQuery.fn.osmplayer.html">jQuery.fn.osmplayer</a></li>
+	
+	<li><a href="../symbols/minplayer.async.html">minplayer.async</a></li>
+	
+	<li><a href="../symbols/minplayer.compatibility.html">minplayer.compatibility</a></li>
+	
+	<li><a href="../symbols/minplayer.display.html">minplayer.display</a></li>
+	
+	<li><a href="../symbols/minplayer.file.html">minplayer.file</a></li>
+	
+	<li><a href="../symbols/minplayer.flags.html">minplayer.flags</a></li>
+	
+	<li><a href="../symbols/minplayer.image.html">minplayer.image</a></li>
+	
+	<li><a href="../symbols/minplayer.players.base.html">minplayer.players.base</a></li>
+	
+	<li><a href="../symbols/minplayer.players.flash.html">minplayer.players.flash</a></li>
+	
+	<li><a href="../symbols/minplayer.players.html5.html">minplayer.players.html5</a></li>
+	
+	<li><a href="../symbols/minplayer.players.minplayer.html">minplayer.players.minplayer</a></li>
+	
+	<li><a href="../symbols/minplayer.players.vimeo.html">minplayer.players.vimeo</a></li>
+	
+	<li><a href="../symbols/minplayer.players.youtube.html">minplayer.players.youtube</a></li>
+	
+	<li><a href="../symbols/minplayer.plugin.html">minplayer.plugin</a></li>
+	
+	<li><a href="../symbols/osmplayer.html">osmplayer</a></li>
+	
+	<li><a href="../symbols/osmplayer.pager.html">osmplayer.pager</a></li>
+	
+	<li><a href="../symbols/osmplayer.playlist.html">osmplayer.playlist</a></li>
+	
+	<li><a href="../symbols/osmplayer.teaser.html">osmplayer.teaser</a></li>
+	
+</ul>
+<hr />
+			<!-- end publish.classesIndex -->
+		</div>
+		
+		<div id="content">
+<!-- ============================== class title ============================ -->
+			<h1 class="classTitle">
+				
+				Class minplayer.players.flash
+			</h1>
+
+<!-- ============================== class summary ========================== -->			
+			<p class="description">
+				
+				<br />Extends
+					<a href="../symbols/minplayer.display.html">minplayer.display</a>.<br />
+				
+			
+				The Flash media player class to control the flash fallback.
+				
+				
+					<br /><i>Defined in: </i> <a href="../symbols/src/minplayer_src_minplayer.players.flash.js.html">minplayer.players.flash.js</a>.
+				
+			</p>
+
+<!-- ============================== constructor summary ==================== -->			
+			
+			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class minplayer.players.flash.">
+				<caption>Class Summary</caption>
+				<thead>
+					<tr>
+						<th scope="col">Constructor Attributes</th>
+						<th scope="col">Constructor Name and Description</th>
+					</tr>
+				</thead>
+				<tbody>
+					<tr>
+						<td class="attributes">&nbsp;</td>
+						<td class="nameDescription" >
+							<div class="fixedFont">
+								<b><a href="../symbols/minplayer.players.flash.html#constructor">minplayer.players.flash</a></b>(context, options, queue)
+							</div>
+							<div class="description"></div>
+						</td>
+					</tr>
+				</tbody>
+			</table>
+			
+
+<!-- ============================== properties summary ===================== -->
+			
+				
+				
+				<table class="summaryTable" cellspacing="0" summary="A summary of the fields documented in the class minplayer.players.flash.">
+					<caption>Field Summary</caption>
+					<thead>
+						<tr>
+							<th scope="col">Field Attributes</th>
+							<th scope="col">Field Name and Description</th>
+						</tr>
+					</thead>
+					<tbody>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont">
+								<b><a href="../symbols/minplayer.players.flash.html#constructor">constructor</a></b>
+								</div>
+								<div class="description">Reset the constructor.</div>
+							</td>
+						</tr>
+					
+					</tbody>
+				</table>
+				
+				
+				
+				<dl class="inheritsList">
+				<dt>Fields borrowed from class <a href="../symbols/minplayer.display.html">minplayer.display</a>: </dt><dd><a href="../symbols/minplayer.display.html#onResize">onResize</a></dd><dt>Fields borrowed from class <a href="../symbols/minplayer.plugin.html">minplayer.plugin</a>: </dt><dd><a href="../symbols/minplayer.plugin.html#active">active</a>, <a href="../symbols/minplayer.plugin.html#context">context</a>, <a href="../symbols/minplayer.plugin.html#lock">lock</a>, <a href="../symbols/minplayer.plugin.html#name">name</a>, <a href="../symbols/minplayer.plugin.html#options">options</a>, <a href="../symbols/minplayer.plugin.html#pluginReady">pluginReady</a>, <a href="../symbols/minplayer.plugin.html#queue">queue</a>, <a href="../symbols/minplayer.plugin.html#triggered">triggered</a></dd>
+				</dl>
+				
+			
+
+<!-- ============================== methods summary ======================== -->
+			
+				
+				
+				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class minplayer.players.flash.">
+					<caption>Method Summary</caption>
+					<thead>
+						<tr>
+							<th scope="col">Method Attributes</th>
+							<th scope="col">Method Name and Description</th>
+						</tr>
+					</thead>
+					<tbody>
+					
+						<tr>
+							<td class="attributes">&lt;static&gt; &nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont">minplayer.players.flash.<b><a href="../symbols/minplayer.players.flash.html#.canPlay">canPlay</a></b>(file)
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.flash.html#construct">construct</a></b>()
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.flash.html#getFlash">getFlash</a></b>(params)
+								</div>
+								<div class="description">API to return the Flash player code provided params.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&lt;static&gt; &nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont">minplayer.players.flash.<b><a href="../symbols/minplayer.players.flash.html#.getPriority">getPriority</a></b>()
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.flash.html#playerFound">playerFound</a></b>()
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+					</tbody>
+				</table>
+				
+				
+				
+				<dl class="inheritsList">
+				<dt>Methods borrowed from class <a href="../symbols/minplayer.display.html">minplayer.display</a>: </dt><dd><a href="../symbols/minplayer.display.html#fullscreen">fullscreen</a>, <a href="../symbols/minplayer.display.html#fullScreenElement">fullScreenElement</a>, <a href="../symbols/minplayer.display.html#getDisplay">getDisplay</a>, <a href="../symbols/minplayer.display.html#getElements">getElements</a>, <a href="../symbols/minplayer.display.html#getScaledRect">getScaledRect</a>, <a href="../symbols/minplayer.display.html#hide">hide</a>, <a href="../symbols/minplayer.display.html#isFullScreen">isFullScreen</a>, <a href="../symbols/minplayer.display.html#onFocus">onFocus</a>, <a href="../symbols/minplayer.display.html#toggleFullScreen">toggleFullScreen</a></dd><dt>Methods borrowed from class <a href="../symbols/minplayer.plugin.html">minplayer.plugin</a>: </dt><dd><a href="../symbols/minplayer.plugin.html#addPlugin">addPlugin</a>, <a href="../symbols/minplayer.plugin.html#bind">bind</a>, <a href="../symbols/minplayer.plugin.html#checkQueue">checkQueue</a>, <a href="../symbols/minplayer.plugin.html#create">create</a>, <a href="../symbols/minplayer.plugin.html#destroy">destroy</a>, <a href="../symbols/minplayer.plugin.html#get">get</a>, <a href="../symbols/minplayer.plugin.html#isValid">isValid</a>, <a href="../symbols/minplayer.plugin.html#poll">poll</a>, <a href="../symbols/minplayer.plugin.html#ready">ready</a>, <a href="../symbols/minplayer.plugin.html#trigger">trigger</a>, <a href="../symbols/minplayer.plugin.html#unbind">unbind</a></dd>
+				</dl>
+				
+			
+<!-- ============================== events summary ======================== -->
+			
+
+<!-- ============================== constructor details ==================== -->		
+			
+			<div class="details"><a name="constructor"> </a>
+				<div class="sectionTitle">
+					Class Detail
+				</div>
+				
+				<div class="fixedFont">
+						<b>minplayer.players.flash</b>(context, options, queue)
+				</div>
+				
+				<div class="description">
+					
+					
+				</div>
+				
+				
+				
+				
+					
+						<dl class="detailList">
+						<dt class="heading">Parameters:</dt>
+						
+							<dt>
+								<span class="light fixedFont">{object}</span>  <b>context</b>
+								
+							</dt>
+								<dd>The jQuery context.</dd>
+						
+							<dt>
+								<span class="light fixedFont">{object}</span>  <b>options</b>
+								
+							</dt>
+								<dd>This components options.</dd>
+						
+							<dt>
+								<span class="light fixedFont">{object}</span>  <b>queue</b>
+								
+							</dt>
+								<dd>The event queue to pass events around.</dd>
+						
+						</dl>
+					
+					
+					
+					
+					
+					
+					
+
+			</div>
+			
+
+<!-- ============================== field details ========================== -->		
+			
+				<div class="sectionTitle">
+					Field Detail
+				</div>
+				
+					<a name="constructor"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>constructor</b>
+					
+					</div>
+					<div class="description">
+						Reset the constructor.
+						
+						
+					</div>
+					
+					
+
+						
+						
+						
+						
+
+					
+				
+			
+
+<!-- ============================== method details ========================= -->		
+			
+				<div class="sectionTitle">
+					Method Detail
+				</div>
+				
+					<a name=".canPlay"> </a>
+					<div class="fixedFont">&lt;static&gt; 
+					
+					<span class="light">{boolean}</span>
+					<span class="light">minplayer.players.flash.</span><b>canPlay</b>(file)
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<b>file</b>
+									
+								</dt>
+								<dd></dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{boolean}</span> If this player can play this media type.</dd>
+							
+							</dl>
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd>minplayer.players.base#canPlay</dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name="construct"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>construct</b>()
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd>minplayer.plugin.construct</dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name="getFlash"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{object}</span>
+					<b>getFlash</b>(params)
+					
+					</div>
+					<div class="description">
+						API to return the Flash player code provided params.
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<span class="light fixedFont">{object}</span> <b>params</b>
+									
+								</dt>
+								<dd>The params used to populate the Flash code.</dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{object}</span> A Flash DOM element.</dd>
+							
+							</dl>
+						
+						
+						
+
+					<hr />
+				
+					<a name=".getPriority"> </a>
+					<div class="fixedFont">&lt;static&gt; 
+					
+					<span class="light">{number}</span>
+					<span class="light">minplayer.players.flash.</span><b>getPriority</b>()
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{number}</span> The priority of this media player.</dd>
+							
+							</dl>
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd>minplayer.players.base#getPriority</dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name="playerFound"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{boolean}</span>
+					<b>playerFound</b>()
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{boolean}</span> TRUE - if the player is in the DOM, FALSE otherwise.</dd>
+							
+							</dl>
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd><a href="../symbols/minplayer.players.base.html#playerFound">minplayer.players.base#playerFound</a></dd>
+							
+							</dl>
+						
+
+					
+				
+			
+			
+<!-- ============================== event details ========================= -->		
+			
+			
+			<hr />
+		</div>
+
+		
+<!-- ============================== footer ================================= -->
+		<div class="fineprint" style="clear:both">
+			
+			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Sun Aug 19 2012 12:11:27 GMT-0500 (CDT)
+		</div>
+	</body>
+</html>
diff --git a/public/admin/js/osmplayer/doc/symbols/minplayer.players.html5.html b/public/admin/js/osmplayer/doc/symbols/minplayer.players.html5.html
new file mode 100644
index 0000000000000000000000000000000000000000..45528bec3607e12d06553a1bdeff31c21db403d8
--- /dev/null
+++ b/public/admin/js/osmplayer/doc/symbols/minplayer.players.html5.html
@@ -0,0 +1,1454 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+	<head>
+		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+		<meta name="generator" content="JsDoc Toolkit" />
+		
+		<title>JsDoc Reference - minplayer.players.html5</title>
+
+		<style type="text/css">
+			/* default.css */
+body
+{
+	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
+	width: 800px;
+}
+
+.header
+{
+	clear: both;
+	background-color: #ccc;
+	padding: 8px;
+}
+
+h1
+{
+	font-size: 150%;
+	font-weight: bold;
+	padding: 0;
+	margin: 1em 0 0 .3em;
+}
+
+hr
+{
+	border: none 0;
+	border-top: 1px solid #7F8FB1;
+	height: 1px;
+}
+
+pre.code
+{
+	display: block;
+	padding: 8px;
+	border: 1px dashed #ccc;
+}
+
+#index
+{
+	margin-top: 24px;
+	float: left;
+	width: 160px;
+	position: absolute;
+	left: 8px;
+	background-color: #F3F3F3;
+	padding: 8px;
+}
+
+#content
+{
+	margin-left: 190px;
+	width: 600px;
+}
+
+.classList
+{
+	list-style-type: none;
+	padding: 0;
+	margin: 0 0 0 8px;
+	font-family: arial, sans-serif;
+	font-size: 1em;
+	overflow: auto;
+}
+
+.classList li
+{
+	padding: 0;
+	margin: 0 0 8px 0;
+}
+
+.summaryTable { width: 100%; }
+
+h1.classTitle
+{
+	font-size:170%;
+	line-height:130%;
+}
+
+h2 { font-size: 110%; }
+caption, div.sectionTitle
+{
+	background-color: #7F8FB1;
+	color: #fff;
+	font-size:130%;
+	text-align: left;
+	padding: 2px 6px 2px 6px;
+	border: 1px #7F8FB1 solid;
+}
+
+div.sectionTitle { margin-bottom: 8px; }
+.summaryTable thead { display: none; }
+
+.summaryTable td
+{
+	vertical-align: top;
+	padding: 4px;
+	border-bottom: 1px #7F8FB1 solid;
+	border-right: 1px #7F8FB1 solid;
+}
+
+/*col#summaryAttributes {}*/
+.summaryTable td.attributes
+{
+	border-left: 1px #7F8FB1 solid;
+	width: 140px;
+	text-align: right;
+}
+
+td.attributes, .fixedFont
+{
+	line-height: 15px;
+	color: #002EBE;
+	font-family: "Courier New",Courier,monospace;
+	font-size: 13px;
+}
+
+.summaryTable td.nameDescription
+{
+	text-align: left;
+	font-size: 13px;
+	line-height: 15px;
+}
+
+.summaryTable td.nameDescription, .description
+{
+	line-height: 15px;
+	padding: 4px;
+	padding-left: 4px;
+}
+
+.summaryTable { margin-bottom: 8px; }
+
+ul.inheritsList
+{
+	list-style: square;
+	margin-left: 20px;
+	padding-left: 0;
+}
+
+.detailList {
+	margin-left: 20px; 
+	line-height: 15px;
+}
+.detailList dt { margin-left: 20px; }
+
+.detailList .heading
+{
+	font-weight: bold;
+	padding-bottom: 6px;
+	margin-left: 0;
+}
+
+.light, td.attributes, .light a:link, .light a:visited
+{
+	color: #777;
+	font-style: italic;
+}
+
+.fineprint
+{
+	text-align: right;
+	font-size: 10px;
+}
+		</style>
+	</head>
+
+	<body>
+<!-- ============================== header ================================= -->	
+		<!-- begin static/header.html -->
+		<div id="header">
+</div>
+		<!-- end static/header.html -->
+
+<!-- ============================== classes index ============================ -->
+		<div id="index">
+			<!-- begin publish.classesIndex -->
+			<div align="center"><a href="../index.html">Class Index</a>
+| <a href="../files.html">File Index</a></div>
+<hr />
+<h2>Classes</h2>
+<ul class="classList">
+	
+	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
+	
+	<li><a href="../symbols/jQuery.fn.minplayer.html">jQuery.fn.minplayer</a></li>
+	
+	<li><a href="../symbols/jQuery.fn.osmplayer.html">jQuery.fn.osmplayer</a></li>
+	
+	<li><a href="../symbols/minplayer.async.html">minplayer.async</a></li>
+	
+	<li><a href="../symbols/minplayer.compatibility.html">minplayer.compatibility</a></li>
+	
+	<li><a href="../symbols/minplayer.display.html">minplayer.display</a></li>
+	
+	<li><a href="../symbols/minplayer.file.html">minplayer.file</a></li>
+	
+	<li><a href="../symbols/minplayer.flags.html">minplayer.flags</a></li>
+	
+	<li><a href="../symbols/minplayer.image.html">minplayer.image</a></li>
+	
+	<li><a href="../symbols/minplayer.players.base.html">minplayer.players.base</a></li>
+	
+	<li><a href="../symbols/minplayer.players.flash.html">minplayer.players.flash</a></li>
+	
+	<li><a href="../symbols/minplayer.players.html5.html">minplayer.players.html5</a></li>
+	
+	<li><a href="../symbols/minplayer.players.minplayer.html">minplayer.players.minplayer</a></li>
+	
+	<li><a href="../symbols/minplayer.players.vimeo.html">minplayer.players.vimeo</a></li>
+	
+	<li><a href="../symbols/minplayer.players.youtube.html">minplayer.players.youtube</a></li>
+	
+	<li><a href="../symbols/minplayer.plugin.html">minplayer.plugin</a></li>
+	
+	<li><a href="../symbols/osmplayer.html">osmplayer</a></li>
+	
+	<li><a href="../symbols/osmplayer.pager.html">osmplayer.pager</a></li>
+	
+	<li><a href="../symbols/osmplayer.playlist.html">osmplayer.playlist</a></li>
+	
+	<li><a href="../symbols/osmplayer.teaser.html">osmplayer.teaser</a></li>
+	
+</ul>
+<hr />
+			<!-- end publish.classesIndex -->
+		</div>
+		
+		<div id="content">
+<!-- ============================== class title ============================ -->
+			<h1 class="classTitle">
+				
+				Class minplayer.players.html5
+			</h1>
+
+<!-- ============================== class summary ========================== -->			
+			<p class="description">
+				
+				<br />Extends
+					<a href="../symbols/minplayer.display.html">minplayer.display</a>.<br />
+				
+			
+				The HTML5 media player implementation.
+				
+				
+					<br /><i>Defined in: </i> <a href="../symbols/src/minplayer_src_minplayer.players.html5.js.html">minplayer.players.html5.js</a>.
+				
+			</p>
+
+<!-- ============================== constructor summary ==================== -->			
+			
+			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class minplayer.players.html5.">
+				<caption>Class Summary</caption>
+				<thead>
+					<tr>
+						<th scope="col">Constructor Attributes</th>
+						<th scope="col">Constructor Name and Description</th>
+					</tr>
+				</thead>
+				<tbody>
+					<tr>
+						<td class="attributes">&nbsp;</td>
+						<td class="nameDescription" >
+							<div class="fixedFont">
+								<b><a href="../symbols/minplayer.players.html5.html#constructor">minplayer.players.html5</a></b>(context, options, queue)
+							</div>
+							<div class="description"></div>
+						</td>
+					</tr>
+				</tbody>
+			</table>
+			
+
+<!-- ============================== properties summary ===================== -->
+			
+				
+				
+				<table class="summaryTable" cellspacing="0" summary="A summary of the fields documented in the class minplayer.players.html5.">
+					<caption>Field Summary</caption>
+					<thead>
+						<tr>
+							<th scope="col">Field Attributes</th>
+							<th scope="col">Field Name and Description</th>
+						</tr>
+					</thead>
+					<tbody>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont">
+								<b><a href="../symbols/minplayer.players.html5.html#constructor">constructor</a></b>
+								</div>
+								<div class="description">Reset the constructor.</div>
+							</td>
+						</tr>
+					
+					</tbody>
+				</table>
+				
+				
+				
+				<dl class="inheritsList">
+				<dt>Fields borrowed from class <a href="../symbols/minplayer.display.html">minplayer.display</a>: </dt><dd><a href="../symbols/minplayer.display.html#onResize">onResize</a></dd><dt>Fields borrowed from class <a href="../symbols/minplayer.plugin.html">minplayer.plugin</a>: </dt><dd><a href="../symbols/minplayer.plugin.html#active">active</a>, <a href="../symbols/minplayer.plugin.html#context">context</a>, <a href="../symbols/minplayer.plugin.html#lock">lock</a>, <a href="../symbols/minplayer.plugin.html#name">name</a>, <a href="../symbols/minplayer.plugin.html#options">options</a>, <a href="../symbols/minplayer.plugin.html#pluginReady">pluginReady</a>, <a href="../symbols/minplayer.plugin.html#queue">queue</a>, <a href="../symbols/minplayer.plugin.html#triggered">triggered</a></dd>
+				</dl>
+				
+			
+
+<!-- ============================== methods summary ======================== -->
+			
+				
+				
+				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class minplayer.players.html5.">
+					<caption>Method Summary</caption>
+					<thead>
+						<tr>
+							<th scope="col">Method Attributes</th>
+							<th scope="col">Method Name and Description</th>
+						</tr>
+					</thead>
+					<tbody>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.html5.html#addPlayerEvent">addPlayerEvent</a></b>(type, callback)
+								</div>
+								<div class="description">Adds a new player event.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.html5.html#addPlayerEvents">addPlayerEvents</a></b>()
+								</div>
+								<div class="description">Add events.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&lt;static&gt; &nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont">minplayer.players.html5.<b><a href="../symbols/minplayer.players.html5.html#.canPlay">canPlay</a></b>(file)
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.html5.html#construct">construct</a></b>()
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.html5.html#create">create</a></b>()
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.html5.html#getBytesLoaded">getBytesLoaded</a></b>(callback)
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.html5.html#getBytesTotal">getBytesTotal</a></b>(callback)
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.html5.html#getCurrentTime">getCurrentTime</a></b>(callback)
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.html5.html#getDuration">getDuration</a></b>(callback)
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.html5.html#getPlayer">getPlayer</a></b>()
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&lt;static&gt; &nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont">minplayer.players.html5.<b><a href="../symbols/minplayer.players.html5.html#.getPriority">getPriority</a></b>()
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.html5.html#getVolume">getVolume</a></b>(callback)
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.html5.html#load">load</a></b>(file)
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.html5.html#onReady">onReady</a></b>()
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.html5.html#pause">pause</a></b>()
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.html5.html#play">play</a></b>()
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.html5.html#playerFound">playerFound</a></b>()
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.html5.html#seek">seek</a></b>(pos)
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.html5.html#setVolume">setVolume</a></b>(vol)
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.html5.html#stop">stop</a></b>()
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+					</tbody>
+				</table>
+				
+				
+				
+				<dl class="inheritsList">
+				<dt>Methods borrowed from class <a href="../symbols/minplayer.display.html">minplayer.display</a>: </dt><dd><a href="../symbols/minplayer.display.html#fullscreen">fullscreen</a>, <a href="../symbols/minplayer.display.html#fullScreenElement">fullScreenElement</a>, <a href="../symbols/minplayer.display.html#getDisplay">getDisplay</a>, <a href="../symbols/minplayer.display.html#getElements">getElements</a>, <a href="../symbols/minplayer.display.html#getScaledRect">getScaledRect</a>, <a href="../symbols/minplayer.display.html#hide">hide</a>, <a href="../symbols/minplayer.display.html#isFullScreen">isFullScreen</a>, <a href="../symbols/minplayer.display.html#onFocus">onFocus</a>, <a href="../symbols/minplayer.display.html#toggleFullScreen">toggleFullScreen</a></dd><dt>Methods borrowed from class <a href="../symbols/minplayer.plugin.html">minplayer.plugin</a>: </dt><dd><a href="../symbols/minplayer.plugin.html#addPlugin">addPlugin</a>, <a href="../symbols/minplayer.plugin.html#bind">bind</a>, <a href="../symbols/minplayer.plugin.html#checkQueue">checkQueue</a>, <a href="../symbols/minplayer.plugin.html#destroy">destroy</a>, <a href="../symbols/minplayer.plugin.html#get">get</a>, <a href="../symbols/minplayer.plugin.html#isValid">isValid</a>, <a href="../symbols/minplayer.plugin.html#poll">poll</a>, <a href="../symbols/minplayer.plugin.html#ready">ready</a>, <a href="../symbols/minplayer.plugin.html#trigger">trigger</a>, <a href="../symbols/minplayer.plugin.html#unbind">unbind</a></dd>
+				</dl>
+				
+			
+<!-- ============================== events summary ======================== -->
+			
+
+<!-- ============================== constructor details ==================== -->		
+			
+			<div class="details"><a name="constructor"> </a>
+				<div class="sectionTitle">
+					Class Detail
+				</div>
+				
+				<div class="fixedFont">
+						<b>minplayer.players.html5</b>(context, options, queue)
+				</div>
+				
+				<div class="description">
+					
+					
+				</div>
+				
+				
+				
+				
+					
+						<dl class="detailList">
+						<dt class="heading">Parameters:</dt>
+						
+							<dt>
+								<span class="light fixedFont">{object}</span>  <b>context</b>
+								
+							</dt>
+								<dd>The jQuery context.</dd>
+						
+							<dt>
+								<span class="light fixedFont">{object}</span>  <b>options</b>
+								
+							</dt>
+								<dd>This components options.</dd>
+						
+							<dt>
+								<span class="light fixedFont">{object}</span>  <b>queue</b>
+								
+							</dt>
+								<dd>The event queue to pass events around.</dd>
+						
+						</dl>
+					
+					
+					
+					
+					
+					
+					
+
+			</div>
+			
+
+<!-- ============================== field details ========================== -->		
+			
+				<div class="sectionTitle">
+					Field Detail
+				</div>
+				
+					<a name="constructor"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>constructor</b>
+					
+					</div>
+					<div class="description">
+						Reset the constructor.
+						
+						
+					</div>
+					
+					
+
+						
+						
+						
+						
+
+					
+				
+			
+
+<!-- ============================== method details ========================= -->		
+			
+				<div class="sectionTitle">
+					Method Detail
+				</div>
+				
+					<a name="addPlayerEvent"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>addPlayerEvent</b>(type, callback)
+					
+					</div>
+					<div class="description">
+						Adds a new player event.
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<span class="light fixedFont">{string}</span> <b>type</b>
+									
+								</dt>
+								<dd>The type of event being fired.</dd>
+							
+								<dt>
+									<span class="light fixedFont">{function}</span> <b>callback</b>
+									
+								</dt>
+								<dd>Called when the event is fired.</dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name="addPlayerEvents"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{boolean}</span>
+					<b>addPlayerEvents</b>()
+					
+					</div>
+					<div class="description">
+						Add events.
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{boolean}</span> If this action was performed.</dd>
+							
+							</dl>
+						
+						
+						
+
+					<hr />
+				
+					<a name=".canPlay"> </a>
+					<div class="fixedFont">&lt;static&gt; 
+					
+					<span class="light">{boolean}</span>
+					<span class="light">minplayer.players.html5.</span><b>canPlay</b>(file)
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<b>file</b>
+									
+								</dt>
+								<dd></dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{boolean}</span> If this player can play this media type.</dd>
+							
+							</dl>
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd>minplayer.players.base#canPlay</dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name="construct"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>construct</b>()
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd>minplayer.plugin.construct</dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name="create"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{object}</span>
+					<b>create</b>()
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{object}</span> The media player entity.</dd>
+							
+							</dl>
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd><a href="../symbols/minplayer.players.base.html#create">minplayer.players.base#create</a></dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name="getBytesLoaded"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>getBytesLoaded</b>(callback)
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<b>callback</b>
+									
+								</dt>
+								<dd></dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd><a href="../symbols/minplayer.players.base.html#getBytesLoaded">minplayer.players.base#getBytesLoaded</a></dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name="getBytesTotal"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>getBytesTotal</b>(callback)
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<b>callback</b>
+									
+								</dt>
+								<dd></dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd><a href="../symbols/minplayer.players.base.html#getBytesTotal">minplayer.players.base#getBytesTotal</a></dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name="getCurrentTime"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>getCurrentTime</b>(callback)
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<b>callback</b>
+									
+								</dt>
+								<dd></dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd><a href="../symbols/minplayer.players.base.html#getCurrentTime">minplayer.players.base#getCurrentTime</a></dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name="getDuration"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>getDuration</b>(callback)
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<b>callback</b>
+									
+								</dt>
+								<dd></dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd><a href="../symbols/minplayer.players.base.html#getDuration">minplayer.players.base#getDuration</a></dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name="getPlayer"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{object}</span>
+					<b>getPlayer</b>()
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{object}</span> The media player object.</dd>
+							
+							</dl>
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd><a href="../symbols/minplayer.players.base.html#getPlayer">minplayer.players.base#getPlayer</a></dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name=".getPriority"> </a>
+					<div class="fixedFont">&lt;static&gt; 
+					
+					<span class="light">{number}</span>
+					<span class="light">minplayer.players.html5.</span><b>getPriority</b>()
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{number}</span> The priority of this media player.</dd>
+							
+							</dl>
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd>minplayer.players.base#getPriority</dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name="getVolume"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>getVolume</b>(callback)
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<b>callback</b>
+									
+								</dt>
+								<dd></dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd><a href="../symbols/minplayer.players.base.html#getVolume">minplayer.players.base#getVolume</a></dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name="load"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{boolean}</span>
+					<b>load</b>(file)
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<b>file</b>
+									
+								</dt>
+								<dd></dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{boolean}</span> If this action was performed.</dd>
+							
+							</dl>
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd><a href="../symbols/minplayer.players.base.html#load">minplayer.players.base#load</a></dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name="onReady"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>onReady</b>()
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd><a href="../symbols/minplayer.players.base.html#onReady">minplayer.players.base#onReady</a></dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name="pause"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{boolean}</span>
+					<b>pause</b>()
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{boolean}</span> If this action was performed.</dd>
+							
+							</dl>
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd><a href="../symbols/minplayer.players.base.html#pause">minplayer.players.base#pause</a></dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name="play"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{boolean}</span>
+					<b>play</b>()
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{boolean}</span> If this action was performed.</dd>
+							
+							</dl>
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd><a href="../symbols/minplayer.players.base.html#play">minplayer.players.base#play</a></dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name="playerFound"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{boolean}</span>
+					<b>playerFound</b>()
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{boolean}</span> TRUE - if the player is in the DOM, FALSE otherwise.</dd>
+							
+							</dl>
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd><a href="../symbols/minplayer.players.base.html#playerFound">minplayer.players.base#playerFound</a></dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name="seek"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{boolean}</span>
+					<b>seek</b>(pos)
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<b>pos</b>
+									
+								</dt>
+								<dd></dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{boolean}</span> If this action was performed.</dd>
+							
+							</dl>
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd><a href="../symbols/minplayer.players.base.html#seek">minplayer.players.base#seek</a></dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name="setVolume"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{boolean}</span>
+					<b>setVolume</b>(vol)
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<b>vol</b>
+									
+								</dt>
+								<dd></dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{boolean}</span> If this action was performed.</dd>
+							
+							</dl>
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd><a href="../symbols/minplayer.players.base.html#setVolume">minplayer.players.base#setVolume</a></dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name="stop"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{boolean}</span>
+					<b>stop</b>()
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{boolean}</span> If this action was performed.</dd>
+							
+							</dl>
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd><a href="../symbols/minplayer.players.base.html#stop">minplayer.players.base#stop</a></dd>
+							
+							</dl>
+						
+
+					
+				
+			
+			
+<!-- ============================== event details ========================= -->		
+			
+			
+			<hr />
+		</div>
+
+		
+<!-- ============================== footer ================================= -->
+		<div class="fineprint" style="clear:both">
+			
+			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Sun Aug 19 2012 12:11:28 GMT-0500 (CDT)
+		</div>
+	</body>
+</html>
diff --git a/public/admin/js/osmplayer/doc/symbols/minplayer.players.minplayer.html b/public/admin/js/osmplayer/doc/symbols/minplayer.players.minplayer.html
new file mode 100644
index 0000000000000000000000000000000000000000..1882f53f42c0ae0880d83282e48a92fab9ef15c2
--- /dev/null
+++ b/public/admin/js/osmplayer/doc/symbols/minplayer.players.minplayer.html
@@ -0,0 +1,1304 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+	<head>
+		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+		<meta name="generator" content="JsDoc Toolkit" />
+		
+		<title>JsDoc Reference - minplayer.players.minplayer</title>
+
+		<style type="text/css">
+			/* default.css */
+body
+{
+	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
+	width: 800px;
+}
+
+.header
+{
+	clear: both;
+	background-color: #ccc;
+	padding: 8px;
+}
+
+h1
+{
+	font-size: 150%;
+	font-weight: bold;
+	padding: 0;
+	margin: 1em 0 0 .3em;
+}
+
+hr
+{
+	border: none 0;
+	border-top: 1px solid #7F8FB1;
+	height: 1px;
+}
+
+pre.code
+{
+	display: block;
+	padding: 8px;
+	border: 1px dashed #ccc;
+}
+
+#index
+{
+	margin-top: 24px;
+	float: left;
+	width: 160px;
+	position: absolute;
+	left: 8px;
+	background-color: #F3F3F3;
+	padding: 8px;
+}
+
+#content
+{
+	margin-left: 190px;
+	width: 600px;
+}
+
+.classList
+{
+	list-style-type: none;
+	padding: 0;
+	margin: 0 0 0 8px;
+	font-family: arial, sans-serif;
+	font-size: 1em;
+	overflow: auto;
+}
+
+.classList li
+{
+	padding: 0;
+	margin: 0 0 8px 0;
+}
+
+.summaryTable { width: 100%; }
+
+h1.classTitle
+{
+	font-size:170%;
+	line-height:130%;
+}
+
+h2 { font-size: 110%; }
+caption, div.sectionTitle
+{
+	background-color: #7F8FB1;
+	color: #fff;
+	font-size:130%;
+	text-align: left;
+	padding: 2px 6px 2px 6px;
+	border: 1px #7F8FB1 solid;
+}
+
+div.sectionTitle { margin-bottom: 8px; }
+.summaryTable thead { display: none; }
+
+.summaryTable td
+{
+	vertical-align: top;
+	padding: 4px;
+	border-bottom: 1px #7F8FB1 solid;
+	border-right: 1px #7F8FB1 solid;
+}
+
+/*col#summaryAttributes {}*/
+.summaryTable td.attributes
+{
+	border-left: 1px #7F8FB1 solid;
+	width: 140px;
+	text-align: right;
+}
+
+td.attributes, .fixedFont
+{
+	line-height: 15px;
+	color: #002EBE;
+	font-family: "Courier New",Courier,monospace;
+	font-size: 13px;
+}
+
+.summaryTable td.nameDescription
+{
+	text-align: left;
+	font-size: 13px;
+	line-height: 15px;
+}
+
+.summaryTable td.nameDescription, .description
+{
+	line-height: 15px;
+	padding: 4px;
+	padding-left: 4px;
+}
+
+.summaryTable { margin-bottom: 8px; }
+
+ul.inheritsList
+{
+	list-style: square;
+	margin-left: 20px;
+	padding-left: 0;
+}
+
+.detailList {
+	margin-left: 20px; 
+	line-height: 15px;
+}
+.detailList dt { margin-left: 20px; }
+
+.detailList .heading
+{
+	font-weight: bold;
+	padding-bottom: 6px;
+	margin-left: 0;
+}
+
+.light, td.attributes, .light a:link, .light a:visited
+{
+	color: #777;
+	font-style: italic;
+}
+
+.fineprint
+{
+	text-align: right;
+	font-size: 10px;
+}
+		</style>
+	</head>
+
+	<body>
+<!-- ============================== header ================================= -->	
+		<!-- begin static/header.html -->
+		<div id="header">
+</div>
+		<!-- end static/header.html -->
+
+<!-- ============================== classes index ============================ -->
+		<div id="index">
+			<!-- begin publish.classesIndex -->
+			<div align="center"><a href="../index.html">Class Index</a>
+| <a href="../files.html">File Index</a></div>
+<hr />
+<h2>Classes</h2>
+<ul class="classList">
+	
+	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
+	
+	<li><a href="../symbols/jQuery.fn.minplayer.html">jQuery.fn.minplayer</a></li>
+	
+	<li><a href="../symbols/jQuery.fn.osmplayer.html">jQuery.fn.osmplayer</a></li>
+	
+	<li><a href="../symbols/minplayer.async.html">minplayer.async</a></li>
+	
+	<li><a href="../symbols/minplayer.compatibility.html">minplayer.compatibility</a></li>
+	
+	<li><a href="../symbols/minplayer.display.html">minplayer.display</a></li>
+	
+	<li><a href="../symbols/minplayer.file.html">minplayer.file</a></li>
+	
+	<li><a href="../symbols/minplayer.flags.html">minplayer.flags</a></li>
+	
+	<li><a href="../symbols/minplayer.image.html">minplayer.image</a></li>
+	
+	<li><a href="../symbols/minplayer.players.base.html">minplayer.players.base</a></li>
+	
+	<li><a href="../symbols/minplayer.players.flash.html">minplayer.players.flash</a></li>
+	
+	<li><a href="../symbols/minplayer.players.html5.html">minplayer.players.html5</a></li>
+	
+	<li><a href="../symbols/minplayer.players.minplayer.html">minplayer.players.minplayer</a></li>
+	
+	<li><a href="../symbols/minplayer.players.vimeo.html">minplayer.players.vimeo</a></li>
+	
+	<li><a href="../symbols/minplayer.players.youtube.html">minplayer.players.youtube</a></li>
+	
+	<li><a href="../symbols/minplayer.plugin.html">minplayer.plugin</a></li>
+	
+	<li><a href="../symbols/osmplayer.html">osmplayer</a></li>
+	
+	<li><a href="../symbols/osmplayer.pager.html">osmplayer.pager</a></li>
+	
+	<li><a href="../symbols/osmplayer.playlist.html">osmplayer.playlist</a></li>
+	
+	<li><a href="../symbols/osmplayer.teaser.html">osmplayer.teaser</a></li>
+	
+</ul>
+<hr />
+			<!-- end publish.classesIndex -->
+		</div>
+		
+		<div id="content">
+<!-- ============================== class title ============================ -->
+			<h1 class="classTitle">
+				
+				Class minplayer.players.minplayer
+			</h1>
+
+<!-- ============================== class summary ========================== -->			
+			<p class="description">
+				
+				<br />Extends
+					<a href="../symbols/minplayer.display.html">minplayer.display</a>.<br />
+				
+			
+				The Flash media player class to control the flash fallback.
+				
+				
+					<br /><i>Defined in: </i> <a href="../symbols/src/minplayer_src_minplayer.players.minplayer.js.html">minplayer.players.minplayer.js</a>.
+				
+			</p>
+
+<!-- ============================== constructor summary ==================== -->			
+			
+			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class minplayer.players.minplayer.">
+				<caption>Class Summary</caption>
+				<thead>
+					<tr>
+						<th scope="col">Constructor Attributes</th>
+						<th scope="col">Constructor Name and Description</th>
+					</tr>
+				</thead>
+				<tbody>
+					<tr>
+						<td class="attributes">&nbsp;</td>
+						<td class="nameDescription" >
+							<div class="fixedFont">
+								<b><a href="../symbols/minplayer.players.minplayer.html#constructor">minplayer.players.minplayer</a></b>(context, options, queue)
+							</div>
+							<div class="description"></div>
+						</td>
+					</tr>
+				</tbody>
+			</table>
+			
+
+<!-- ============================== properties summary ===================== -->
+			
+				
+				
+				<table class="summaryTable" cellspacing="0" summary="A summary of the fields documented in the class minplayer.players.minplayer.">
+					<caption>Field Summary</caption>
+					<thead>
+						<tr>
+							<th scope="col">Field Attributes</th>
+							<th scope="col">Field Name and Description</th>
+						</tr>
+					</thead>
+					<tbody>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont">
+								<b><a href="../symbols/minplayer.players.minplayer.html#constructor">constructor</a></b>
+								</div>
+								<div class="description">Reset the constructor.</div>
+							</td>
+						</tr>
+					
+					</tbody>
+				</table>
+				
+				
+				
+				<dl class="inheritsList">
+				<dt>Fields borrowed from class <a href="../symbols/minplayer.display.html">minplayer.display</a>: </dt><dd><a href="../symbols/minplayer.display.html#onResize">onResize</a></dd><dt>Fields borrowed from class <a href="../symbols/minplayer.plugin.html">minplayer.plugin</a>: </dt><dd><a href="../symbols/minplayer.plugin.html#active">active</a>, <a href="../symbols/minplayer.plugin.html#context">context</a>, <a href="../symbols/minplayer.plugin.html#lock">lock</a>, <a href="../symbols/minplayer.plugin.html#name">name</a>, <a href="../symbols/minplayer.plugin.html#options">options</a>, <a href="../symbols/minplayer.plugin.html#pluginReady">pluginReady</a>, <a href="../symbols/minplayer.plugin.html#queue">queue</a>, <a href="../symbols/minplayer.plugin.html#triggered">triggered</a></dd>
+				</dl>
+				
+			
+
+<!-- ============================== methods summary ======================== -->
+			
+				
+				
+				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class minplayer.players.minplayer.">
+					<caption>Method Summary</caption>
+					<thead>
+						<tr>
+							<th scope="col">Method Attributes</th>
+							<th scope="col">Method Name and Description</th>
+						</tr>
+					</thead>
+					<tbody>
+					
+						<tr>
+							<td class="attributes">&lt;static&gt; &nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont">minplayer.players.minplayer.<b><a href="../symbols/minplayer.players.minplayer.html#.canPlay">canPlay</a></b>(file)
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.minplayer.html#clear">clear</a></b>()
+								</div>
+								<div class="description">Resets all variables.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.minplayer.html#construct">construct</a></b>()
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.minplayer.html#create">create</a></b>()
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.minplayer.html#getBytesLoaded">getBytesLoaded</a></b>(callback)
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.minplayer.html#getBytesTotal">getBytesTotal</a></b>(callback)
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.minplayer.html#getCurrentTime">getCurrentTime</a></b>(callback)
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.minplayer.html#getDuration">getDuration</a></b>(callback)
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&lt;static&gt; &nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont">minplayer.players.minplayer.<b><a href="../symbols/minplayer.players.minplayer.html#.getPriority">getPriority</a></b>()
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.minplayer.html#getVolume">getVolume</a></b>(callback)
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.minplayer.html#load">load</a></b>(file)
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.minplayer.html#onMediaUpdate">onMediaUpdate</a></b>(eventType)
+								</div>
+								<div class="description">Called when the Flash player has an update.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.minplayer.html#pause">pause</a></b>()
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.minplayer.html#play">play</a></b>()
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.minplayer.html#seek">seek</a></b>(pos)
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.minplayer.html#setVolume">setVolume</a></b>(vol)
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.minplayer.html#stop">stop</a></b>()
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+					</tbody>
+				</table>
+				
+				
+				
+				<dl class="inheritsList">
+				<dt>Methods borrowed from class <a href="../symbols/minplayer.display.html">minplayer.display</a>: </dt><dd><a href="../symbols/minplayer.display.html#fullscreen">fullscreen</a>, <a href="../symbols/minplayer.display.html#fullScreenElement">fullScreenElement</a>, <a href="../symbols/minplayer.display.html#getDisplay">getDisplay</a>, <a href="../symbols/minplayer.display.html#getElements">getElements</a>, <a href="../symbols/minplayer.display.html#getScaledRect">getScaledRect</a>, <a href="../symbols/minplayer.display.html#hide">hide</a>, <a href="../symbols/minplayer.display.html#isFullScreen">isFullScreen</a>, <a href="../symbols/minplayer.display.html#onFocus">onFocus</a>, <a href="../symbols/minplayer.display.html#toggleFullScreen">toggleFullScreen</a></dd><dt>Methods borrowed from class <a href="../symbols/minplayer.plugin.html">minplayer.plugin</a>: </dt><dd><a href="../symbols/minplayer.plugin.html#addPlugin">addPlugin</a>, <a href="../symbols/minplayer.plugin.html#bind">bind</a>, <a href="../symbols/minplayer.plugin.html#checkQueue">checkQueue</a>, <a href="../symbols/minplayer.plugin.html#destroy">destroy</a>, <a href="../symbols/minplayer.plugin.html#get">get</a>, <a href="../symbols/minplayer.plugin.html#isValid">isValid</a>, <a href="../symbols/minplayer.plugin.html#poll">poll</a>, <a href="../symbols/minplayer.plugin.html#ready">ready</a>, <a href="../symbols/minplayer.plugin.html#trigger">trigger</a>, <a href="../symbols/minplayer.plugin.html#unbind">unbind</a></dd>
+				</dl>
+				
+			
+<!-- ============================== events summary ======================== -->
+			
+
+<!-- ============================== constructor details ==================== -->		
+			
+			<div class="details"><a name="constructor"> </a>
+				<div class="sectionTitle">
+					Class Detail
+				</div>
+				
+				<div class="fixedFont">
+						<b>minplayer.players.minplayer</b>(context, options, queue)
+				</div>
+				
+				<div class="description">
+					
+					
+				</div>
+				
+				
+				
+				
+					
+						<dl class="detailList">
+						<dt class="heading">Parameters:</dt>
+						
+							<dt>
+								<span class="light fixedFont">{object}</span>  <b>context</b>
+								
+							</dt>
+								<dd>The jQuery context.</dd>
+						
+							<dt>
+								<span class="light fixedFont">{object}</span>  <b>options</b>
+								
+							</dt>
+								<dd>This components options.</dd>
+						
+							<dt>
+								<span class="light fixedFont">{object}</span>  <b>queue</b>
+								
+							</dt>
+								<dd>The event queue to pass events around.</dd>
+						
+						</dl>
+					
+					
+					
+					
+					
+					
+					
+
+			</div>
+			
+
+<!-- ============================== field details ========================== -->		
+			
+				<div class="sectionTitle">
+					Field Detail
+				</div>
+				
+					<a name="constructor"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>constructor</b>
+					
+					</div>
+					<div class="description">
+						Reset the constructor.
+						
+						
+					</div>
+					
+					
+
+						
+						
+						
+						
+
+					
+				
+			
+
+<!-- ============================== method details ========================= -->		
+			
+				<div class="sectionTitle">
+					Method Detail
+				</div>
+				
+					<a name=".canPlay"> </a>
+					<div class="fixedFont">&lt;static&gt; 
+					
+					<span class="light">{boolean}</span>
+					<span class="light">minplayer.players.minplayer.</span><b>canPlay</b>(file)
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<b>file</b>
+									
+								</dt>
+								<dd></dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{boolean}</span> If this player can play this media type.</dd>
+							
+							</dl>
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd>minplayer.players.base#canPlay</dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name="clear"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>clear</b>()
+					
+					</div>
+					<div class="description">
+						Resets all variables.
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name="construct"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>construct</b>()
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd>minplayer.plugin.construct</dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name="create"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{object}</span>
+					<b>create</b>()
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{object}</span> The media player entity.</dd>
+							
+							</dl>
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd><a href="../symbols/minplayer.players.base.html#create">minplayer.players.base#create</a></dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name="getBytesLoaded"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>getBytesLoaded</b>(callback)
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<b>callback</b>
+									
+								</dt>
+								<dd></dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd><a href="../symbols/minplayer.players.base.html#getBytesLoaded">minplayer.players.base#getBytesLoaded</a></dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name="getBytesTotal"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>getBytesTotal</b>(callback)
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<b>callback</b>
+									
+								</dt>
+								<dd></dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd>minplayer.players.base#getBytesTotal.</dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name="getCurrentTime"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>getCurrentTime</b>(callback)
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<b>callback</b>
+									
+								</dt>
+								<dd></dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd><a href="../symbols/minplayer.players.base.html#getCurrentTime">minplayer.players.base#getCurrentTime</a></dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name="getDuration"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>getDuration</b>(callback)
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<b>callback</b>
+									
+								</dt>
+								<dd></dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd>minplayer.players.flash#getDuration</dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name=".getPriority"> </a>
+					<div class="fixedFont">&lt;static&gt; 
+					
+					<span class="light">{number}</span>
+					<span class="light">minplayer.players.minplayer.</span><b>getPriority</b>()
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{number}</span> The priority of this media player.</dd>
+							
+							</dl>
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd>minplayer.players.base#getPriority</dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name="getVolume"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>getVolume</b>(callback)
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<b>callback</b>
+									
+								</dt>
+								<dd></dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd><a href="../symbols/minplayer.players.base.html#getVolume">minplayer.players.base#getVolume</a></dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name="load"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{boolean}</span>
+					<b>load</b>(file)
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<b>file</b>
+									
+								</dt>
+								<dd></dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{boolean}</span> If this action was performed.</dd>
+							
+							</dl>
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd><a href="../symbols/minplayer.players.base.html#load">minplayer.players.base#load</a></dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name="onMediaUpdate"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>onMediaUpdate</b>(eventType)
+					
+					</div>
+					<div class="description">
+						Called when the Flash player has an update.
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<span class="light fixedFont">{string}</span> <b>eventType</b>
+									
+								</dt>
+								<dd>The event that was triggered in the player.</dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name="pause"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{boolean}</span>
+					<b>pause</b>()
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{boolean}</span> If this action was performed.</dd>
+							
+							</dl>
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd><a href="../symbols/minplayer.players.base.html#pause">minplayer.players.base#pause</a></dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name="play"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{boolean}</span>
+					<b>play</b>()
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{boolean}</span> If this action was performed.</dd>
+							
+							</dl>
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd><a href="../symbols/minplayer.players.base.html#play">minplayer.players.base#play</a></dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name="seek"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{boolean}</span>
+					<b>seek</b>(pos)
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<b>pos</b>
+									
+								</dt>
+								<dd></dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{boolean}</span> If this action was performed.</dd>
+							
+							</dl>
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd><a href="../symbols/minplayer.players.base.html#seek">minplayer.players.base#seek</a></dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name="setVolume"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{boolean}</span>
+					<b>setVolume</b>(vol)
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<b>vol</b>
+									
+								</dt>
+								<dd></dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{boolean}</span> If this action was performed.</dd>
+							
+							</dl>
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd><a href="../symbols/minplayer.players.base.html#setVolume">minplayer.players.base#setVolume</a></dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name="stop"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{boolean}</span>
+					<b>stop</b>()
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{boolean}</span> If this action was performed.</dd>
+							
+							</dl>
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd><a href="../symbols/minplayer.players.base.html#stop">minplayer.players.base#stop</a></dd>
+							
+							</dl>
+						
+
+					
+				
+			
+			
+<!-- ============================== event details ========================= -->		
+			
+			
+			<hr />
+		</div>
+
+		
+<!-- ============================== footer ================================= -->
+		<div class="fineprint" style="clear:both">
+			
+			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Sun Aug 19 2012 12:11:28 GMT-0500 (CDT)
+		</div>
+	</body>
+</html>
diff --git a/public/admin/js/osmplayer/doc/symbols/minplayer.players.vimeo.html b/public/admin/js/osmplayer/doc/symbols/minplayer.players.vimeo.html
new file mode 100644
index 0000000000000000000000000000000000000000..2ef794b4db28da97d323dccd320a20a75646305d
--- /dev/null
+++ b/public/admin/js/osmplayer/doc/symbols/minplayer.players.vimeo.html
@@ -0,0 +1,1398 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+	<head>
+		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+		<meta name="generator" content="JsDoc Toolkit" />
+		
+		<title>JsDoc Reference - minplayer.players.vimeo</title>
+
+		<style type="text/css">
+			/* default.css */
+body
+{
+	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
+	width: 800px;
+}
+
+.header
+{
+	clear: both;
+	background-color: #ccc;
+	padding: 8px;
+}
+
+h1
+{
+	font-size: 150%;
+	font-weight: bold;
+	padding: 0;
+	margin: 1em 0 0 .3em;
+}
+
+hr
+{
+	border: none 0;
+	border-top: 1px solid #7F8FB1;
+	height: 1px;
+}
+
+pre.code
+{
+	display: block;
+	padding: 8px;
+	border: 1px dashed #ccc;
+}
+
+#index
+{
+	margin-top: 24px;
+	float: left;
+	width: 160px;
+	position: absolute;
+	left: 8px;
+	background-color: #F3F3F3;
+	padding: 8px;
+}
+
+#content
+{
+	margin-left: 190px;
+	width: 600px;
+}
+
+.classList
+{
+	list-style-type: none;
+	padding: 0;
+	margin: 0 0 0 8px;
+	font-family: arial, sans-serif;
+	font-size: 1em;
+	overflow: auto;
+}
+
+.classList li
+{
+	padding: 0;
+	margin: 0 0 8px 0;
+}
+
+.summaryTable { width: 100%; }
+
+h1.classTitle
+{
+	font-size:170%;
+	line-height:130%;
+}
+
+h2 { font-size: 110%; }
+caption, div.sectionTitle
+{
+	background-color: #7F8FB1;
+	color: #fff;
+	font-size:130%;
+	text-align: left;
+	padding: 2px 6px 2px 6px;
+	border: 1px #7F8FB1 solid;
+}
+
+div.sectionTitle { margin-bottom: 8px; }
+.summaryTable thead { display: none; }
+
+.summaryTable td
+{
+	vertical-align: top;
+	padding: 4px;
+	border-bottom: 1px #7F8FB1 solid;
+	border-right: 1px #7F8FB1 solid;
+}
+
+/*col#summaryAttributes {}*/
+.summaryTable td.attributes
+{
+	border-left: 1px #7F8FB1 solid;
+	width: 140px;
+	text-align: right;
+}
+
+td.attributes, .fixedFont
+{
+	line-height: 15px;
+	color: #002EBE;
+	font-family: "Courier New",Courier,monospace;
+	font-size: 13px;
+}
+
+.summaryTable td.nameDescription
+{
+	text-align: left;
+	font-size: 13px;
+	line-height: 15px;
+}
+
+.summaryTable td.nameDescription, .description
+{
+	line-height: 15px;
+	padding: 4px;
+	padding-left: 4px;
+}
+
+.summaryTable { margin-bottom: 8px; }
+
+ul.inheritsList
+{
+	list-style: square;
+	margin-left: 20px;
+	padding-left: 0;
+}
+
+.detailList {
+	margin-left: 20px; 
+	line-height: 15px;
+}
+.detailList dt { margin-left: 20px; }
+
+.detailList .heading
+{
+	font-weight: bold;
+	padding-bottom: 6px;
+	margin-left: 0;
+}
+
+.light, td.attributes, .light a:link, .light a:visited
+{
+	color: #777;
+	font-style: italic;
+}
+
+.fineprint
+{
+	text-align: right;
+	font-size: 10px;
+}
+		</style>
+	</head>
+
+	<body>
+<!-- ============================== header ================================= -->	
+		<!-- begin static/header.html -->
+		<div id="header">
+</div>
+		<!-- end static/header.html -->
+
+<!-- ============================== classes index ============================ -->
+		<div id="index">
+			<!-- begin publish.classesIndex -->
+			<div align="center"><a href="../index.html">Class Index</a>
+| <a href="../files.html">File Index</a></div>
+<hr />
+<h2>Classes</h2>
+<ul class="classList">
+	
+	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
+	
+	<li><a href="../symbols/jQuery.fn.minplayer.html">jQuery.fn.minplayer</a></li>
+	
+	<li><a href="../symbols/jQuery.fn.osmplayer.html">jQuery.fn.osmplayer</a></li>
+	
+	<li><a href="../symbols/minplayer.async.html">minplayer.async</a></li>
+	
+	<li><a href="../symbols/minplayer.compatibility.html">minplayer.compatibility</a></li>
+	
+	<li><a href="../symbols/minplayer.display.html">minplayer.display</a></li>
+	
+	<li><a href="../symbols/minplayer.file.html">minplayer.file</a></li>
+	
+	<li><a href="../symbols/minplayer.flags.html">minplayer.flags</a></li>
+	
+	<li><a href="../symbols/minplayer.image.html">minplayer.image</a></li>
+	
+	<li><a href="../symbols/minplayer.players.base.html">minplayer.players.base</a></li>
+	
+	<li><a href="../symbols/minplayer.players.flash.html">minplayer.players.flash</a></li>
+	
+	<li><a href="../symbols/minplayer.players.html5.html">minplayer.players.html5</a></li>
+	
+	<li><a href="../symbols/minplayer.players.minplayer.html">minplayer.players.minplayer</a></li>
+	
+	<li><a href="../symbols/minplayer.players.vimeo.html">minplayer.players.vimeo</a></li>
+	
+	<li><a href="../symbols/minplayer.players.youtube.html">minplayer.players.youtube</a></li>
+	
+	<li><a href="../symbols/minplayer.plugin.html">minplayer.plugin</a></li>
+	
+	<li><a href="../symbols/osmplayer.html">osmplayer</a></li>
+	
+	<li><a href="../symbols/osmplayer.pager.html">osmplayer.pager</a></li>
+	
+	<li><a href="../symbols/osmplayer.playlist.html">osmplayer.playlist</a></li>
+	
+	<li><a href="../symbols/osmplayer.teaser.html">osmplayer.teaser</a></li>
+	
+</ul>
+<hr />
+			<!-- end publish.classesIndex -->
+		</div>
+		
+		<div id="content">
+<!-- ============================== class title ============================ -->
+			<h1 class="classTitle">
+				
+				Class minplayer.players.vimeo
+			</h1>
+
+<!-- ============================== class summary ========================== -->			
+			<p class="description">
+				
+				<br />Extends
+					<a href="../symbols/minplayer.players.base.html">minplayer.players.base</a>.<br />
+				
+			
+				The vimeo media player.
+				
+				
+					<br /><i>Defined in: </i> <a href="../symbols/src/minplayer_src_minplayer.players.vimeo.js.html">minplayer.players.vimeo.js</a>.
+				
+			</p>
+
+<!-- ============================== constructor summary ==================== -->			
+			
+			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class minplayer.players.vimeo.">
+				<caption>Class Summary</caption>
+				<thead>
+					<tr>
+						<th scope="col">Constructor Attributes</th>
+						<th scope="col">Constructor Name and Description</th>
+					</tr>
+				</thead>
+				<tbody>
+					<tr>
+						<td class="attributes">&nbsp;</td>
+						<td class="nameDescription" >
+							<div class="fixedFont">
+								<b><a href="../symbols/minplayer.players.vimeo.html#constructor">minplayer.players.vimeo</a></b>(context, options, queue)
+							</div>
+							<div class="description"></div>
+						</td>
+					</tr>
+				</tbody>
+			</table>
+			
+
+<!-- ============================== properties summary ===================== -->
+			
+				
+				
+				<table class="summaryTable" cellspacing="0" summary="A summary of the fields documented in the class minplayer.players.vimeo.">
+					<caption>Field Summary</caption>
+					<thead>
+						<tr>
+							<th scope="col">Field Attributes</th>
+							<th scope="col">Field Name and Description</th>
+						</tr>
+					</thead>
+					<tbody>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont">
+								<b><a href="../symbols/minplayer.players.vimeo.html#constructor">constructor</a></b>
+								</div>
+								<div class="description">Reset the constructor.</div>
+							</td>
+						</tr>
+					
+					</tbody>
+				</table>
+				
+				
+				
+				<dl class="inheritsList">
+				<dt>Fields borrowed from class <a href="../symbols/minplayer.players.base.html">minplayer.players.base</a>: </dt><dd><a href="../symbols/minplayer.players.base.html#mediaFile">mediaFile</a></dd><dt>Fields borrowed from class <a href="../symbols/minplayer.display.html">minplayer.display</a>: </dt><dd><a href="../symbols/minplayer.display.html#onResize">onResize</a></dd><dt>Fields borrowed from class <a href="../symbols/minplayer.plugin.html">minplayer.plugin</a>: </dt><dd><a href="../symbols/minplayer.plugin.html#active">active</a>, <a href="../symbols/minplayer.plugin.html#context">context</a>, <a href="../symbols/minplayer.plugin.html#lock">lock</a>, <a href="../symbols/minplayer.plugin.html#name">name</a>, <a href="../symbols/minplayer.plugin.html#options">options</a>, <a href="../symbols/minplayer.plugin.html#pluginReady">pluginReady</a>, <a href="../symbols/minplayer.plugin.html#queue">queue</a>, <a href="../symbols/minplayer.plugin.html#triggered">triggered</a></dd>
+				</dl>
+				
+			
+
+<!-- ============================== methods summary ======================== -->
+			
+				
+				
+				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class minplayer.players.vimeo.">
+					<caption>Method Summary</caption>
+					<thead>
+						<tr>
+							<th scope="col">Method Attributes</th>
+							<th scope="col">Method Name and Description</th>
+						</tr>
+					</thead>
+					<tbody>
+					
+						<tr>
+							<td class="attributes">&lt;static&gt; &nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont">minplayer.players.vimeo.<b><a href="../symbols/minplayer.players.vimeo.html#.canPlay">canPlay</a></b>(file)
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.vimeo.html#clear">clear</a></b>()
+								</div>
+								<div class="description">Clears the media player.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.vimeo.html#construct">construct</a></b>()
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.vimeo.html#create">create</a></b>()
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.vimeo.html#getDuration">getDuration</a></b>(callback)
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&lt;static&gt; &nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont">minplayer.players.vimeo.<b><a href="../symbols/minplayer.players.vimeo.html#.getImage">getImage</a></b>(file, type, callback)
+								</div>
+								<div class="description">Returns a preview image for this media player.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&lt;static&gt; &nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont">minplayer.players.vimeo.<b><a href="../symbols/minplayer.players.vimeo.html#.getMediaId">getMediaId</a></b>(file)
+								</div>
+								<div class="description">Return the ID for a provided media file.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&lt;static&gt; &nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont">minplayer.players.vimeo.<b><a href="../symbols/minplayer.players.vimeo.html#.getPriority">getPriority</a></b>()
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.vimeo.html#getVolume">getVolume</a></b>(callback)
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.vimeo.html#hasController">hasController</a></b>()
+								</div>
+								<div class="description">Determines if the player should show the playloader.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.vimeo.html#hasPlayLoader">hasPlayLoader</a></b>(preview)
+								</div>
+								<div class="description">Determines if the player should show the playloader.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.vimeo.html#load">load</a></b>(file)
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.vimeo.html#onReady">onReady</a></b>(player_id)
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.vimeo.html#pause">pause</a></b>()
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.vimeo.html#play">play</a></b>()
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.vimeo.html#reset">reset</a></b>()
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.vimeo.html#seek">seek</a></b>(pos)
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.vimeo.html#setVolume">setVolume</a></b>(vol)
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.vimeo.html#stop">stop</a></b>()
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+					</tbody>
+				</table>
+				
+				
+				
+				<dl class="inheritsList">
+				<dt>Methods borrowed from class <a href="../symbols/minplayer.players.base.html">minplayer.players.base</a>: </dt><dd><a href="../symbols/minplayer.players.base.html#addPlayer">addPlayer</a>, <a href="../symbols/minplayer.players.base.html#destroy">destroy</a>, <a href="../symbols/minplayer.players.base.html#getBytesLoaded">getBytesLoaded</a>, <a href="../symbols/minplayer.players.base.html#getBytesStart">getBytesStart</a>, <a href="../symbols/minplayer.players.base.html#getBytesTotal">getBytesTotal</a>, <a href="../symbols/minplayer.players.base.html#getCurrentTime">getCurrentTime</a>, <a href="../symbols/minplayer.players.base.html#getElements">getElements</a>, <a href="../symbols/minplayer.players.base.html#getPlayer">getPlayer</a>, <a href="../symbols/minplayer.players.base.html#getValue">getValue</a>, <a href="../symbols/minplayer.players.base.html#isReady">isReady</a>, <a href="../symbols/minplayer.players.base.html#onComplete">onComplete</a>, <a href="../symbols/minplayer.players.base.html#onError">onError</a>, <a href="../symbols/minplayer.players.base.html#onLoaded">onLoaded</a>, <a href="../symbols/minplayer.players.base.html#onPaused">onPaused</a>, <a href="../symbols/minplayer.players.base.html#onPlaying">onPlaying</a>, <a href="../symbols/minplayer.players.base.html#onWaiting">onWaiting</a>, <a href="../symbols/minplayer.players.base.html#playerFound">playerFound</a>, <a href="../symbols/minplayer.players.base.html#seekRelative">seekRelative</a>, <a href="../symbols/minplayer.players.base.html#setVolumeRelative">setVolumeRelative</a></dd><dt>Methods borrowed from class <a href="../symbols/minplayer.display.html">minplayer.display</a>: </dt><dd><a href="../symbols/minplayer.display.html#fullscreen">fullscreen</a>, <a href="../symbols/minplayer.display.html#fullScreenElement">fullScreenElement</a>, <a href="../symbols/minplayer.display.html#getDisplay">getDisplay</a>, <a href="../symbols/minplayer.display.html#getScaledRect">getScaledRect</a>, <a href="../symbols/minplayer.display.html#hide">hide</a>, <a href="../symbols/minplayer.display.html#isFullScreen">isFullScreen</a>, <a href="../symbols/minplayer.display.html#onFocus">onFocus</a>, <a href="../symbols/minplayer.display.html#toggleFullScreen">toggleFullScreen</a></dd><dt>Methods borrowed from class <a href="../symbols/minplayer.plugin.html">minplayer.plugin</a>: </dt><dd><a href="../symbols/minplayer.plugin.html#addPlugin">addPlugin</a>, <a href="../symbols/minplayer.plugin.html#bind">bind</a>, <a href="../symbols/minplayer.plugin.html#checkQueue">checkQueue</a>, <a href="../symbols/minplayer.plugin.html#get">get</a>, <a href="../symbols/minplayer.plugin.html#isValid">isValid</a>, <a href="../symbols/minplayer.plugin.html#poll">poll</a>, <a href="../symbols/minplayer.plugin.html#ready">ready</a>, <a href="../symbols/minplayer.plugin.html#trigger">trigger</a>, <a href="../symbols/minplayer.plugin.html#unbind">unbind</a></dd>
+				</dl>
+				
+			
+<!-- ============================== events summary ======================== -->
+			
+
+<!-- ============================== constructor details ==================== -->		
+			
+			<div class="details"><a name="constructor"> </a>
+				<div class="sectionTitle">
+					Class Detail
+				</div>
+				
+				<div class="fixedFont">
+						<b>minplayer.players.vimeo</b>(context, options, queue)
+				</div>
+				
+				<div class="description">
+					
+					
+				</div>
+				
+				
+				
+				
+					
+						<dl class="detailList">
+						<dt class="heading">Parameters:</dt>
+						
+							<dt>
+								<span class="light fixedFont">{object}</span>  <b>context</b>
+								
+							</dt>
+								<dd>The jQuery context.</dd>
+						
+							<dt>
+								<span class="light fixedFont">{object}</span>  <b>options</b>
+								
+							</dt>
+								<dd>This components options.</dd>
+						
+							<dt>
+								<span class="light fixedFont">{object}</span>  <b>queue</b>
+								
+							</dt>
+								<dd>The event queue to pass events around.</dd>
+						
+						</dl>
+					
+					
+					
+					
+					
+					
+					
+
+			</div>
+			
+
+<!-- ============================== field details ========================== -->		
+			
+				<div class="sectionTitle">
+					Field Detail
+				</div>
+				
+					<a name="constructor"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>constructor</b>
+					
+					</div>
+					<div class="description">
+						Reset the constructor.
+						
+						
+					</div>
+					
+					
+
+						
+						
+						
+						
+
+					
+				
+			
+
+<!-- ============================== method details ========================= -->		
+			
+				<div class="sectionTitle">
+					Method Detail
+				</div>
+				
+					<a name=".canPlay"> </a>
+					<div class="fixedFont">&lt;static&gt; 
+					
+					<span class="light">{boolean}</span>
+					<span class="light">minplayer.players.vimeo.</span><b>canPlay</b>(file)
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<b>file</b>
+									
+								</dt>
+								<dd></dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{boolean}</span> If this player can play this media type.</dd>
+							
+							</dl>
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd>minplayer.players.base#canPlay</dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name="clear"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>clear</b>()
+					
+					</div>
+					<div class="description">
+						Clears the media player.
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name="construct"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>construct</b>()
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd>minplayer.plugin.construct</dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name="create"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{object}</span>
+					<b>create</b>()
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{object}</span> The media player entity.</dd>
+							
+							</dl>
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd><a href="../symbols/minplayer.players.base.html#create">minplayer.players.base#create</a></dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name="getDuration"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>getDuration</b>(callback)
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<b>callback</b>
+									
+								</dt>
+								<dd></dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd>minplayer.players.base#getDuration.</dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name=".getImage"> </a>
+					<div class="fixedFont">&lt;static&gt; 
+					
+					
+					<span class="light">minplayer.players.vimeo.</span><b>getImage</b>(file, type, callback)
+					
+					</div>
+					<div class="description">
+						Returns a preview image for this media player.
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<span class="light fixedFont">{object}</span> <b>file</b>
+									
+								</dt>
+								<dd>A <a href="../symbols/minplayer.file.html">minplayer.file</a> object.</dd>
+							
+								<dt>
+									<span class="light fixedFont">{string}</span> <b>type</b>
+									
+								</dt>
+								<dd>The type of image.</dd>
+							
+								<dt>
+									<span class="light fixedFont">{function}</span> <b>callback</b>
+									
+								</dt>
+								<dd>Called when the image is retrieved.</dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name=".getMediaId"> </a>
+					<div class="fixedFont">&lt;static&gt; 
+					
+					<span class="light">{string}</span>
+					<span class="light">minplayer.players.vimeo.</span><b>getMediaId</b>(file)
+					
+					</div>
+					<div class="description">
+						Return the ID for a provided media file.
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<span class="light fixedFont">{object}</span> <b>file</b>
+									
+								</dt>
+								<dd>A <a href="../symbols/minplayer.file.html">minplayer.file</a> object.</dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{string}</span> The ID for the provided media.</dd>
+							
+							</dl>
+						
+						
+						
+
+					<hr />
+				
+					<a name=".getPriority"> </a>
+					<div class="fixedFont">&lt;static&gt; 
+					
+					<span class="light">{number}</span>
+					<span class="light">minplayer.players.vimeo.</span><b>getPriority</b>()
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{number}</span> The priority of this media player.</dd>
+							
+							</dl>
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd>minplayer.players.base#getPriority</dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name="getVolume"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>getVolume</b>(callback)
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<b>callback</b>
+									
+								</dt>
+								<dd></dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd><a href="../symbols/minplayer.players.base.html#getVolume">minplayer.players.base#getVolume</a></dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name="hasController"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{bool}</span>
+					<b>hasController</b>()
+					
+					</div>
+					<div class="description">
+						Determines if the player should show the playloader.
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{bool}</span> If this player implements its own playLoader.</dd>
+							
+							</dl>
+						
+						
+						
+
+					<hr />
+				
+					<a name="hasPlayLoader"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{bool}</span>
+					<b>hasPlayLoader</b>(preview)
+					
+					</div>
+					<div class="description">
+						Determines if the player should show the playloader.
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<span class="light fixedFont">{string}</span> <b>preview</b>
+									
+								</dt>
+								<dd>The preview image.</dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{bool}</span> If this player implements its own playLoader.</dd>
+							
+							</dl>
+						
+						
+						
+
+					<hr />
+				
+					<a name="load"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{boolean}</span>
+					<b>load</b>(file)
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<b>file</b>
+									
+								</dt>
+								<dd></dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{boolean}</span> If this action was performed.</dd>
+							
+							</dl>
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd><a href="../symbols/minplayer.players.base.html#load">minplayer.players.base#load</a></dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name="onReady"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>onReady</b>(player_id)
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<b>player_id</b>
+									
+								</dt>
+								<dd></dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd><a href="../symbols/minplayer.players.base.html#onReady">minplayer.players.base#onReady</a></dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name="pause"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{boolean}</span>
+					<b>pause</b>()
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{boolean}</span> If this action was performed.</dd>
+							
+							</dl>
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd><a href="../symbols/minplayer.players.base.html#pause">minplayer.players.base#pause</a></dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name="play"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{boolean}</span>
+					<b>play</b>()
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{boolean}</span> If this action was performed.</dd>
+							
+							</dl>
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd><a href="../symbols/minplayer.players.base.html#play">minplayer.players.base#play</a></dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name="reset"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>reset</b>()
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd><a href="../symbols/minplayer.players.base.html#reset">minplayer.players.base#reset</a></dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name="seek"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{boolean}</span>
+					<b>seek</b>(pos)
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<b>pos</b>
+									
+								</dt>
+								<dd></dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{boolean}</span> If this action was performed.</dd>
+							
+							</dl>
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd><a href="../symbols/minplayer.players.base.html#seek">minplayer.players.base#seek</a></dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name="setVolume"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{boolean}</span>
+					<b>setVolume</b>(vol)
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<b>vol</b>
+									
+								</dt>
+								<dd></dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{boolean}</span> If this action was performed.</dd>
+							
+							</dl>
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd><a href="../symbols/minplayer.players.base.html#setVolume">minplayer.players.base#setVolume</a></dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name="stop"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{boolean}</span>
+					<b>stop</b>()
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{boolean}</span> If this action was performed.</dd>
+							
+							</dl>
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd><a href="../symbols/minplayer.players.base.html#stop">minplayer.players.base#stop</a></dd>
+							
+							</dl>
+						
+
+					
+				
+			
+			
+<!-- ============================== event details ========================= -->		
+			
+			
+			<hr />
+		</div>
+
+		
+<!-- ============================== footer ================================= -->
+		<div class="fineprint" style="clear:both">
+			
+			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Sun Aug 19 2012 12:11:28 GMT-0500 (CDT)
+		</div>
+	</body>
+</html>
diff --git a/public/admin/js/osmplayer/doc/symbols/minplayer.players.youtube.html b/public/admin/js/osmplayer/doc/symbols/minplayer.players.youtube.html
new file mode 100644
index 0000000000000000000000000000000000000000..b8d644f0c2b245c33f5e923f60c132a856ed10ed
--- /dev/null
+++ b/public/admin/js/osmplayer/doc/symbols/minplayer.players.youtube.html
@@ -0,0 +1,1732 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+	<head>
+		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+		<meta name="generator" content="JsDoc Toolkit" />
+		
+		<title>JsDoc Reference - minplayer.players.youtube</title>
+
+		<style type="text/css">
+			/* default.css */
+body
+{
+	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
+	width: 800px;
+}
+
+.header
+{
+	clear: both;
+	background-color: #ccc;
+	padding: 8px;
+}
+
+h1
+{
+	font-size: 150%;
+	font-weight: bold;
+	padding: 0;
+	margin: 1em 0 0 .3em;
+}
+
+hr
+{
+	border: none 0;
+	border-top: 1px solid #7F8FB1;
+	height: 1px;
+}
+
+pre.code
+{
+	display: block;
+	padding: 8px;
+	border: 1px dashed #ccc;
+}
+
+#index
+{
+	margin-top: 24px;
+	float: left;
+	width: 160px;
+	position: absolute;
+	left: 8px;
+	background-color: #F3F3F3;
+	padding: 8px;
+}
+
+#content
+{
+	margin-left: 190px;
+	width: 600px;
+}
+
+.classList
+{
+	list-style-type: none;
+	padding: 0;
+	margin: 0 0 0 8px;
+	font-family: arial, sans-serif;
+	font-size: 1em;
+	overflow: auto;
+}
+
+.classList li
+{
+	padding: 0;
+	margin: 0 0 8px 0;
+}
+
+.summaryTable { width: 100%; }
+
+h1.classTitle
+{
+	font-size:170%;
+	line-height:130%;
+}
+
+h2 { font-size: 110%; }
+caption, div.sectionTitle
+{
+	background-color: #7F8FB1;
+	color: #fff;
+	font-size:130%;
+	text-align: left;
+	padding: 2px 6px 2px 6px;
+	border: 1px #7F8FB1 solid;
+}
+
+div.sectionTitle { margin-bottom: 8px; }
+.summaryTable thead { display: none; }
+
+.summaryTable td
+{
+	vertical-align: top;
+	padding: 4px;
+	border-bottom: 1px #7F8FB1 solid;
+	border-right: 1px #7F8FB1 solid;
+}
+
+/*col#summaryAttributes {}*/
+.summaryTable td.attributes
+{
+	border-left: 1px #7F8FB1 solid;
+	width: 140px;
+	text-align: right;
+}
+
+td.attributes, .fixedFont
+{
+	line-height: 15px;
+	color: #002EBE;
+	font-family: "Courier New",Courier,monospace;
+	font-size: 13px;
+}
+
+.summaryTable td.nameDescription
+{
+	text-align: left;
+	font-size: 13px;
+	line-height: 15px;
+}
+
+.summaryTable td.nameDescription, .description
+{
+	line-height: 15px;
+	padding: 4px;
+	padding-left: 4px;
+}
+
+.summaryTable { margin-bottom: 8px; }
+
+ul.inheritsList
+{
+	list-style: square;
+	margin-left: 20px;
+	padding-left: 0;
+}
+
+.detailList {
+	margin-left: 20px; 
+	line-height: 15px;
+}
+.detailList dt { margin-left: 20px; }
+
+.detailList .heading
+{
+	font-weight: bold;
+	padding-bottom: 6px;
+	margin-left: 0;
+}
+
+.light, td.attributes, .light a:link, .light a:visited
+{
+	color: #777;
+	font-style: italic;
+}
+
+.fineprint
+{
+	text-align: right;
+	font-size: 10px;
+}
+		</style>
+	</head>
+
+	<body>
+<!-- ============================== header ================================= -->	
+		<!-- begin static/header.html -->
+		<div id="header">
+</div>
+		<!-- end static/header.html -->
+
+<!-- ============================== classes index ============================ -->
+		<div id="index">
+			<!-- begin publish.classesIndex -->
+			<div align="center"><a href="../index.html">Class Index</a>
+| <a href="../files.html">File Index</a></div>
+<hr />
+<h2>Classes</h2>
+<ul class="classList">
+	
+	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
+	
+	<li><a href="../symbols/jQuery.fn.minplayer.html">jQuery.fn.minplayer</a></li>
+	
+	<li><a href="../symbols/jQuery.fn.osmplayer.html">jQuery.fn.osmplayer</a></li>
+	
+	<li><a href="../symbols/minplayer.async.html">minplayer.async</a></li>
+	
+	<li><a href="../symbols/minplayer.compatibility.html">minplayer.compatibility</a></li>
+	
+	<li><a href="../symbols/minplayer.display.html">minplayer.display</a></li>
+	
+	<li><a href="../symbols/minplayer.file.html">minplayer.file</a></li>
+	
+	<li><a href="../symbols/minplayer.flags.html">minplayer.flags</a></li>
+	
+	<li><a href="../symbols/minplayer.image.html">minplayer.image</a></li>
+	
+	<li><a href="../symbols/minplayer.players.base.html">minplayer.players.base</a></li>
+	
+	<li><a href="../symbols/minplayer.players.flash.html">minplayer.players.flash</a></li>
+	
+	<li><a href="../symbols/minplayer.players.html5.html">minplayer.players.html5</a></li>
+	
+	<li><a href="../symbols/minplayer.players.minplayer.html">minplayer.players.minplayer</a></li>
+	
+	<li><a href="../symbols/minplayer.players.vimeo.html">minplayer.players.vimeo</a></li>
+	
+	<li><a href="../symbols/minplayer.players.youtube.html">minplayer.players.youtube</a></li>
+	
+	<li><a href="../symbols/minplayer.plugin.html">minplayer.plugin</a></li>
+	
+	<li><a href="../symbols/osmplayer.html">osmplayer</a></li>
+	
+	<li><a href="../symbols/osmplayer.pager.html">osmplayer.pager</a></li>
+	
+	<li><a href="../symbols/osmplayer.playlist.html">osmplayer.playlist</a></li>
+	
+	<li><a href="../symbols/osmplayer.teaser.html">osmplayer.teaser</a></li>
+	
+</ul>
+<hr />
+			<!-- end publish.classesIndex -->
+		</div>
+		
+		<div id="content">
+<!-- ============================== class title ============================ -->
+			<h1 class="classTitle">
+				
+				Class minplayer.players.youtube
+			</h1>
+
+<!-- ============================== class summary ========================== -->			
+			<p class="description">
+				
+				<br />Extends
+					<a href="../symbols/minplayer.players.base.html">minplayer.players.base</a>.<br />
+				
+			
+				The YouTube media player.
+				
+				
+					<br /><i>Defined in: </i> <a href="../symbols/src/minplayer_src_minplayer.players.youtube.js.html">minplayer.players.youtube.js</a>.
+				
+			</p>
+
+<!-- ============================== constructor summary ==================== -->			
+			
+			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class minplayer.players.youtube.">
+				<caption>Class Summary</caption>
+				<thead>
+					<tr>
+						<th scope="col">Constructor Attributes</th>
+						<th scope="col">Constructor Name and Description</th>
+					</tr>
+				</thead>
+				<tbody>
+					<tr>
+						<td class="attributes">&nbsp;</td>
+						<td class="nameDescription" >
+							<div class="fixedFont">
+								<b><a href="../symbols/minplayer.players.youtube.html#constructor">minplayer.players.youtube</a></b>(context, options, queue)
+							</div>
+							<div class="description"></div>
+						</td>
+					</tr>
+				</tbody>
+			</table>
+			
+
+<!-- ============================== properties summary ===================== -->
+			
+				
+				
+				<table class="summaryTable" cellspacing="0" summary="A summary of the fields documented in the class minplayer.players.youtube.">
+					<caption>Field Summary</caption>
+					<thead>
+						<tr>
+							<th scope="col">Field Attributes</th>
+							<th scope="col">Field Name and Description</th>
+						</tr>
+					</thead>
+					<tbody>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont">
+								<b><a href="../symbols/minplayer.players.youtube.html#constructor">constructor</a></b>
+								</div>
+								<div class="description">Reset the constructor.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont">
+								<b><a href="../symbols/minplayer.players.youtube.html#quality">quality</a></b>
+								</div>
+								<div class="description">The quality of the YouTube stream.</div>
+							</td>
+						</tr>
+					
+					</tbody>
+				</table>
+				
+				
+				
+				<dl class="inheritsList">
+				<dt>Fields borrowed from class <a href="../symbols/minplayer.players.base.html">minplayer.players.base</a>: </dt><dd><a href="../symbols/minplayer.players.base.html#mediaFile">mediaFile</a></dd><dt>Fields borrowed from class <a href="../symbols/minplayer.display.html">minplayer.display</a>: </dt><dd><a href="../symbols/minplayer.display.html#onResize">onResize</a></dd><dt>Fields borrowed from class <a href="../symbols/minplayer.plugin.html">minplayer.plugin</a>: </dt><dd><a href="../symbols/minplayer.plugin.html#active">active</a>, <a href="../symbols/minplayer.plugin.html#context">context</a>, <a href="../symbols/minplayer.plugin.html#lock">lock</a>, <a href="../symbols/minplayer.plugin.html#name">name</a>, <a href="../symbols/minplayer.plugin.html#options">options</a>, <a href="../symbols/minplayer.plugin.html#pluginReady">pluginReady</a>, <a href="../symbols/minplayer.plugin.html#queue">queue</a>, <a href="../symbols/minplayer.plugin.html#triggered">triggered</a></dd>
+				</dl>
+				
+			
+
+<!-- ============================== methods summary ======================== -->
+			
+				
+				
+				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class minplayer.players.youtube.">
+					<caption>Method Summary</caption>
+					<thead>
+						<tr>
+							<th scope="col">Method Attributes</th>
+							<th scope="col">Method Name and Description</th>
+						</tr>
+					</thead>
+					<tbody>
+					
+						<tr>
+							<td class="attributes">&lt;static&gt; &nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont">minplayer.players.youtube.<b><a href="../symbols/minplayer.players.youtube.html#.canPlay">canPlay</a></b>(file)
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.youtube.html#construct">construct</a></b>()
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.youtube.html#create">create</a></b>()
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.youtube.html#getBytesLoaded">getBytesLoaded</a></b>(callback)
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.youtube.html#getBytesStart">getBytesStart</a></b>(callback)
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.youtube.html#getBytesTotal">getBytesTotal</a></b>(callback)
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.youtube.html#getCurrentTime">getCurrentTime</a></b>(callback)
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.youtube.html#getDuration">getDuration</a></b>(callback)
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&lt;static&gt; &nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont">minplayer.players.youtube.<b><a href="../symbols/minplayer.players.youtube.html#.getImage">getImage</a></b>(file, type, callback)
+								</div>
+								<div class="description">Returns a preview image for this media player.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&lt;static&gt; &nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont">minplayer.players.youtube.<b><a href="../symbols/minplayer.players.youtube.html#.getMediaId">getMediaId</a></b>(file)
+								</div>
+								<div class="description">Return the ID for a provided media file.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&lt;static&gt; &nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont">minplayer.players.youtube.<b><a href="../symbols/minplayer.players.youtube.html#.getPriority">getPriority</a></b>()
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.youtube.html#getVolume">getVolume</a></b>(callback)
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.youtube.html#hasController">hasController</a></b>()
+								</div>
+								<div class="description">Determines if the player should show the controller.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.youtube.html#hasPlayLoader">hasPlayLoader</a></b>(preview)
+								</div>
+								<div class="description">Determines if the player should show the playloader.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.youtube.html#load">load</a></b>(file)
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.youtube.html#onPlayerStateChange">onPlayerStateChange</a></b>(event)
+								</div>
+								<div class="description">Called when the player state changes.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.youtube.html#onQualityChange">onQualityChange</a></b>(newQuality)
+								</div>
+								<div class="description">Called when the player quality changes.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.youtube.html#onReady">onReady</a></b>(event)
+								</div>
+								<div class="description">Called when an error occurs.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.youtube.html#pause">pause</a></b>()
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.youtube.html#play">play</a></b>()
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.youtube.html#playerFound">playerFound</a></b>()
+								</div>
+								<div class="description">Checks to see if this player can be found.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.youtube.html#seek">seek</a></b>(pos)
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.youtube.html#setPlayerState">setPlayerState</a></b>(playerState)
+								</div>
+								<div class="description">Translates the player state for the YouTube API player.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.youtube.html#setVolume">setVolume</a></b>(vol)
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.players.youtube.html#stop">stop</a></b>()
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+					</tbody>
+				</table>
+				
+				
+				
+				<dl class="inheritsList">
+				<dt>Methods borrowed from class <a href="../symbols/minplayer.players.base.html">minplayer.players.base</a>: </dt><dd><a href="../symbols/minplayer.players.base.html#addPlayer">addPlayer</a>, <a href="../symbols/minplayer.players.base.html#clear">clear</a>, <a href="../symbols/minplayer.players.base.html#destroy">destroy</a>, <a href="../symbols/minplayer.players.base.html#getElements">getElements</a>, <a href="../symbols/minplayer.players.base.html#getPlayer">getPlayer</a>, <a href="../symbols/minplayer.players.base.html#getValue">getValue</a>, <a href="../symbols/minplayer.players.base.html#isReady">isReady</a>, <a href="../symbols/minplayer.players.base.html#onComplete">onComplete</a>, <a href="../symbols/minplayer.players.base.html#onError">onError</a>, <a href="../symbols/minplayer.players.base.html#onLoaded">onLoaded</a>, <a href="../symbols/minplayer.players.base.html#onPaused">onPaused</a>, <a href="../symbols/minplayer.players.base.html#onPlaying">onPlaying</a>, <a href="../symbols/minplayer.players.base.html#onWaiting">onWaiting</a>, <a href="../symbols/minplayer.players.base.html#reset">reset</a>, <a href="../symbols/minplayer.players.base.html#seekRelative">seekRelative</a>, <a href="../symbols/minplayer.players.base.html#setVolumeRelative">setVolumeRelative</a></dd><dt>Methods borrowed from class <a href="../symbols/minplayer.display.html">minplayer.display</a>: </dt><dd><a href="../symbols/minplayer.display.html#fullscreen">fullscreen</a>, <a href="../symbols/minplayer.display.html#fullScreenElement">fullScreenElement</a>, <a href="../symbols/minplayer.display.html#getDisplay">getDisplay</a>, <a href="../symbols/minplayer.display.html#getScaledRect">getScaledRect</a>, <a href="../symbols/minplayer.display.html#hide">hide</a>, <a href="../symbols/minplayer.display.html#isFullScreen">isFullScreen</a>, <a href="../symbols/minplayer.display.html#onFocus">onFocus</a>, <a href="../symbols/minplayer.display.html#toggleFullScreen">toggleFullScreen</a></dd><dt>Methods borrowed from class <a href="../symbols/minplayer.plugin.html">minplayer.plugin</a>: </dt><dd><a href="../symbols/minplayer.plugin.html#addPlugin">addPlugin</a>, <a href="../symbols/minplayer.plugin.html#bind">bind</a>, <a href="../symbols/minplayer.plugin.html#checkQueue">checkQueue</a>, <a href="../symbols/minplayer.plugin.html#get">get</a>, <a href="../symbols/minplayer.plugin.html#isValid">isValid</a>, <a href="../symbols/minplayer.plugin.html#poll">poll</a>, <a href="../symbols/minplayer.plugin.html#ready">ready</a>, <a href="../symbols/minplayer.plugin.html#trigger">trigger</a>, <a href="../symbols/minplayer.plugin.html#unbind">unbind</a></dd>
+				</dl>
+				
+			
+<!-- ============================== events summary ======================== -->
+			
+
+<!-- ============================== constructor details ==================== -->		
+			
+			<div class="details"><a name="constructor"> </a>
+				<div class="sectionTitle">
+					Class Detail
+				</div>
+				
+				<div class="fixedFont">
+						<b>minplayer.players.youtube</b>(context, options, queue)
+				</div>
+				
+				<div class="description">
+					
+					
+				</div>
+				
+				
+				
+				
+					
+						<dl class="detailList">
+						<dt class="heading">Parameters:</dt>
+						
+							<dt>
+								<span class="light fixedFont">{object}</span>  <b>context</b>
+								
+							</dt>
+								<dd>The jQuery context.</dd>
+						
+							<dt>
+								<span class="light fixedFont">{object}</span>  <b>options</b>
+								
+							</dt>
+								<dd>This components options.</dd>
+						
+							<dt>
+								<span class="light fixedFont">{object}</span>  <b>queue</b>
+								
+							</dt>
+								<dd>The event queue to pass events around.</dd>
+						
+						</dl>
+					
+					
+					
+					
+					
+					
+					
+
+			</div>
+			
+
+<!-- ============================== field details ========================== -->		
+			
+				<div class="sectionTitle">
+					Field Detail
+				</div>
+				
+					<a name="constructor"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>constructor</b>
+					
+					</div>
+					<div class="description">
+						Reset the constructor.
+						
+						
+					</div>
+					
+					
+
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name="quality"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>quality</b>
+					
+					</div>
+					<div class="description">
+						The quality of the YouTube stream.
+						
+						
+					</div>
+					
+					
+
+						
+						
+						
+						
+
+					
+				
+			
+
+<!-- ============================== method details ========================= -->		
+			
+				<div class="sectionTitle">
+					Method Detail
+				</div>
+				
+					<a name=".canPlay"> </a>
+					<div class="fixedFont">&lt;static&gt; 
+					
+					<span class="light">{boolean}</span>
+					<span class="light">minplayer.players.youtube.</span><b>canPlay</b>(file)
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<b>file</b>
+									
+								</dt>
+								<dd></dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{boolean}</span> If this player can play this media type.</dd>
+							
+							</dl>
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd>minplayer.players.base#canPlay</dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name="construct"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>construct</b>()
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd>minplayer.plugin.construct</dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name="create"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{object}</span>
+					<b>create</b>()
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{object}</span> The media player entity.</dd>
+							
+							</dl>
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd><a href="../symbols/minplayer.players.base.html#create">minplayer.players.base#create</a></dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name="getBytesLoaded"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>getBytesLoaded</b>(callback)
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<b>callback</b>
+									
+								</dt>
+								<dd></dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd>minplayer.players.base#getBytesLoaded.</dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name="getBytesStart"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>getBytesStart</b>(callback)
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<b>callback</b>
+									
+								</dt>
+								<dd></dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd>minplayer.players.base#getBytesStart.</dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name="getBytesTotal"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>getBytesTotal</b>(callback)
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<b>callback</b>
+									
+								</dt>
+								<dd></dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd>minplayer.players.base#getBytesTotal.</dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name="getCurrentTime"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>getCurrentTime</b>(callback)
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<b>callback</b>
+									
+								</dt>
+								<dd></dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd><a href="../symbols/minplayer.players.base.html#getCurrentTime">minplayer.players.base#getCurrentTime</a></dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name="getDuration"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>getDuration</b>(callback)
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<b>callback</b>
+									
+								</dt>
+								<dd></dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd>minplayer.players.base#getDuration.</dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name=".getImage"> </a>
+					<div class="fixedFont">&lt;static&gt; 
+					
+					
+					<span class="light">minplayer.players.youtube.</span><b>getImage</b>(file, type, callback)
+					
+					</div>
+					<div class="description">
+						Returns a preview image for this media player.
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<span class="light fixedFont">{object}</span> <b>file</b>
+									
+								</dt>
+								<dd>A <a href="../symbols/minplayer.file.html">minplayer.file</a> object.</dd>
+							
+								<dt>
+									<span class="light fixedFont">{string}</span> <b>type</b>
+									
+								</dt>
+								<dd>The type of image.</dd>
+							
+								<dt>
+									<span class="light fixedFont">{function}</span> <b>callback</b>
+									
+								</dt>
+								<dd>Called when the image is retrieved.</dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name=".getMediaId"> </a>
+					<div class="fixedFont">&lt;static&gt; 
+					
+					<span class="light">{string}</span>
+					<span class="light">minplayer.players.youtube.</span><b>getMediaId</b>(file)
+					
+					</div>
+					<div class="description">
+						Return the ID for a provided media file.
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<span class="light fixedFont">{object}</span> <b>file</b>
+									
+								</dt>
+								<dd>A <a href="../symbols/minplayer.file.html">minplayer.file</a> object.</dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{string}</span> The ID for the provided media.</dd>
+							
+							</dl>
+						
+						
+						
+
+					<hr />
+				
+					<a name=".getPriority"> </a>
+					<div class="fixedFont">&lt;static&gt; 
+					
+					<span class="light">{number}</span>
+					<span class="light">minplayer.players.youtube.</span><b>getPriority</b>()
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{number}</span> The priority of this media player.</dd>
+							
+							</dl>
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd>minplayer.players.base#getPriority</dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name="getVolume"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>getVolume</b>(callback)
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<b>callback</b>
+									
+								</dt>
+								<dd></dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd><a href="../symbols/minplayer.players.base.html#getVolume">minplayer.players.base#getVolume</a></dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name="hasController"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{bool}</span>
+					<b>hasController</b>()
+					
+					</div>
+					<div class="description">
+						Determines if the player should show the controller.
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{bool}</span> If this player implements its own playLoader.</dd>
+							
+							</dl>
+						
+						
+						
+
+					<hr />
+				
+					<a name="hasPlayLoader"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{bool}</span>
+					<b>hasPlayLoader</b>(preview)
+					
+					</div>
+					<div class="description">
+						Determines if the player should show the playloader.
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<span class="light fixedFont">{string}</span> <b>preview</b>
+									
+								</dt>
+								<dd>The preview image.</dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{bool}</span> If this player implements its own playLoader.</dd>
+							
+							</dl>
+						
+						
+						
+
+					<hr />
+				
+					<a name="load"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{boolean}</span>
+					<b>load</b>(file)
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<b>file</b>
+									
+								</dt>
+								<dd></dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{boolean}</span> If this action was performed.</dd>
+							
+							</dl>
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd><a href="../symbols/minplayer.players.base.html#load">minplayer.players.base#load</a></dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name="onPlayerStateChange"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>onPlayerStateChange</b>(event)
+					
+					</div>
+					<div class="description">
+						Called when the player state changes.
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<span class="light fixedFont">{object}</span> <b>event</b>
+									
+								</dt>
+								<dd>A JavaScript Event.</dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name="onQualityChange"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>onQualityChange</b>(newQuality)
+					
+					</div>
+					<div class="description">
+						Called when the player quality changes.
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<span class="light fixedFont">{string}</span> <b>newQuality</b>
+									
+								</dt>
+								<dd>The new quality for the change.</dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name="onReady"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>onReady</b>(event)
+					
+					</div>
+					<div class="description">
+						Called when an error occurs.
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<span class="light fixedFont">{string}</span> <b>event</b>
+									
+								</dt>
+								<dd>The onReady event that was triggered.</dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name="pause"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{boolean}</span>
+					<b>pause</b>()
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{boolean}</span> If this action was performed.</dd>
+							
+							</dl>
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd><a href="../symbols/minplayer.players.base.html#pause">minplayer.players.base#pause</a></dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name="play"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{boolean}</span>
+					<b>play</b>()
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{boolean}</span> If this action was performed.</dd>
+							
+							</dl>
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd><a href="../symbols/minplayer.players.base.html#play">minplayer.players.base#play</a></dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name="playerFound"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{bool}</span>
+					<b>playerFound</b>()
+					
+					</div>
+					<div class="description">
+						Checks to see if this player can be found.
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{bool}</span> TRUE - Player is found, FALSE - otherwise.</dd>
+							
+							</dl>
+						
+						
+						
+
+					<hr />
+				
+					<a name="seek"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{boolean}</span>
+					<b>seek</b>(pos)
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<b>pos</b>
+									
+								</dt>
+								<dd></dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{boolean}</span> If this action was performed.</dd>
+							
+							</dl>
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd><a href="../symbols/minplayer.players.base.html#seek">minplayer.players.base#seek</a></dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name="setPlayerState"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>setPlayerState</b>(playerState)
+					
+					</div>
+					<div class="description">
+						Translates the player state for the YouTube API player.
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<span class="light fixedFont">{number}</span> <b>playerState</b>
+									
+								</dt>
+								<dd>The YouTube player state.</dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name="setVolume"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{boolean}</span>
+					<b>setVolume</b>(vol)
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<b>vol</b>
+									
+								</dt>
+								<dd></dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{boolean}</span> If this action was performed.</dd>
+							
+							</dl>
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd><a href="../symbols/minplayer.players.base.html#setVolume">minplayer.players.base#setVolume</a></dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name="stop"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{boolean}</span>
+					<b>stop</b>()
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{boolean}</span> If this action was performed.</dd>
+							
+							</dl>
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd><a href="../symbols/minplayer.players.base.html#stop">minplayer.players.base#stop</a></dd>
+							
+							</dl>
+						
+
+					
+				
+			
+			
+<!-- ============================== event details ========================= -->		
+			
+			
+			<hr />
+		</div>
+
+		
+<!-- ============================== footer ================================= -->
+		<div class="fineprint" style="clear:both">
+			
+			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Sun Aug 19 2012 12:11:28 GMT-0500 (CDT)
+		</div>
+	</body>
+</html>
diff --git a/public/admin/js/osmplayer/doc/symbols/minplayer.plugin.html b/public/admin/js/osmplayer/doc/symbols/minplayer.plugin.html
new file mode 100644
index 0000000000000000000000000000000000000000..a52d5837d20f13488e35f75bd22bdd3222c73bbd
--- /dev/null
+++ b/public/admin/js/osmplayer/doc/symbols/minplayer.plugin.html
@@ -0,0 +1,1264 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+	<head>
+		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+		<meta name="generator" content="JsDoc Toolkit" />
+		
+		<title>JsDoc Reference - minplayer.plugin</title>
+
+		<style type="text/css">
+			/* default.css */
+body
+{
+	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
+	width: 800px;
+}
+
+.header
+{
+	clear: both;
+	background-color: #ccc;
+	padding: 8px;
+}
+
+h1
+{
+	font-size: 150%;
+	font-weight: bold;
+	padding: 0;
+	margin: 1em 0 0 .3em;
+}
+
+hr
+{
+	border: none 0;
+	border-top: 1px solid #7F8FB1;
+	height: 1px;
+}
+
+pre.code
+{
+	display: block;
+	padding: 8px;
+	border: 1px dashed #ccc;
+}
+
+#index
+{
+	margin-top: 24px;
+	float: left;
+	width: 160px;
+	position: absolute;
+	left: 8px;
+	background-color: #F3F3F3;
+	padding: 8px;
+}
+
+#content
+{
+	margin-left: 190px;
+	width: 600px;
+}
+
+.classList
+{
+	list-style-type: none;
+	padding: 0;
+	margin: 0 0 0 8px;
+	font-family: arial, sans-serif;
+	font-size: 1em;
+	overflow: auto;
+}
+
+.classList li
+{
+	padding: 0;
+	margin: 0 0 8px 0;
+}
+
+.summaryTable { width: 100%; }
+
+h1.classTitle
+{
+	font-size:170%;
+	line-height:130%;
+}
+
+h2 { font-size: 110%; }
+caption, div.sectionTitle
+{
+	background-color: #7F8FB1;
+	color: #fff;
+	font-size:130%;
+	text-align: left;
+	padding: 2px 6px 2px 6px;
+	border: 1px #7F8FB1 solid;
+}
+
+div.sectionTitle { margin-bottom: 8px; }
+.summaryTable thead { display: none; }
+
+.summaryTable td
+{
+	vertical-align: top;
+	padding: 4px;
+	border-bottom: 1px #7F8FB1 solid;
+	border-right: 1px #7F8FB1 solid;
+}
+
+/*col#summaryAttributes {}*/
+.summaryTable td.attributes
+{
+	border-left: 1px #7F8FB1 solid;
+	width: 140px;
+	text-align: right;
+}
+
+td.attributes, .fixedFont
+{
+	line-height: 15px;
+	color: #002EBE;
+	font-family: "Courier New",Courier,monospace;
+	font-size: 13px;
+}
+
+.summaryTable td.nameDescription
+{
+	text-align: left;
+	font-size: 13px;
+	line-height: 15px;
+}
+
+.summaryTable td.nameDescription, .description
+{
+	line-height: 15px;
+	padding: 4px;
+	padding-left: 4px;
+}
+
+.summaryTable { margin-bottom: 8px; }
+
+ul.inheritsList
+{
+	list-style: square;
+	margin-left: 20px;
+	padding-left: 0;
+}
+
+.detailList {
+	margin-left: 20px; 
+	line-height: 15px;
+}
+.detailList dt { margin-left: 20px; }
+
+.detailList .heading
+{
+	font-weight: bold;
+	padding-bottom: 6px;
+	margin-left: 0;
+}
+
+.light, td.attributes, .light a:link, .light a:visited
+{
+	color: #777;
+	font-style: italic;
+}
+
+.fineprint
+{
+	text-align: right;
+	font-size: 10px;
+}
+		</style>
+	</head>
+
+	<body>
+<!-- ============================== header ================================= -->	
+		<!-- begin static/header.html -->
+		<div id="header">
+</div>
+		<!-- end static/header.html -->
+
+<!-- ============================== classes index ============================ -->
+		<div id="index">
+			<!-- begin publish.classesIndex -->
+			<div align="center"><a href="../index.html">Class Index</a>
+| <a href="../files.html">File Index</a></div>
+<hr />
+<h2>Classes</h2>
+<ul class="classList">
+	
+	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
+	
+	<li><a href="../symbols/jQuery.fn.minplayer.html">jQuery.fn.minplayer</a></li>
+	
+	<li><a href="../symbols/jQuery.fn.osmplayer.html">jQuery.fn.osmplayer</a></li>
+	
+	<li><a href="../symbols/minplayer.async.html">minplayer.async</a></li>
+	
+	<li><a href="../symbols/minplayer.compatibility.html">minplayer.compatibility</a></li>
+	
+	<li><a href="../symbols/minplayer.display.html">minplayer.display</a></li>
+	
+	<li><a href="../symbols/minplayer.file.html">minplayer.file</a></li>
+	
+	<li><a href="../symbols/minplayer.flags.html">minplayer.flags</a></li>
+	
+	<li><a href="../symbols/minplayer.image.html">minplayer.image</a></li>
+	
+	<li><a href="../symbols/minplayer.players.base.html">minplayer.players.base</a></li>
+	
+	<li><a href="../symbols/minplayer.players.flash.html">minplayer.players.flash</a></li>
+	
+	<li><a href="../symbols/minplayer.players.html5.html">minplayer.players.html5</a></li>
+	
+	<li><a href="../symbols/minplayer.players.minplayer.html">minplayer.players.minplayer</a></li>
+	
+	<li><a href="../symbols/minplayer.players.vimeo.html">minplayer.players.vimeo</a></li>
+	
+	<li><a href="../symbols/minplayer.players.youtube.html">minplayer.players.youtube</a></li>
+	
+	<li><a href="../symbols/minplayer.plugin.html">minplayer.plugin</a></li>
+	
+	<li><a href="../symbols/osmplayer.html">osmplayer</a></li>
+	
+	<li><a href="../symbols/osmplayer.pager.html">osmplayer.pager</a></li>
+	
+	<li><a href="../symbols/osmplayer.playlist.html">osmplayer.playlist</a></li>
+	
+	<li><a href="../symbols/osmplayer.teaser.html">osmplayer.teaser</a></li>
+	
+</ul>
+<hr />
+			<!-- end publish.classesIndex -->
+		</div>
+		
+		<div id="content">
+<!-- ============================== class title ============================ -->
+			<h1 class="classTitle">
+				
+				Class minplayer.plugin
+			</h1>
+
+<!-- ============================== class summary ========================== -->			
+			<p class="description">
+				
+				
+			
+				The base class for all plugins.
+				
+				
+					<br /><i>Defined in: </i> <a href="../symbols/src/minplayer_src_minplayer.plugin.js.html">minplayer.plugin.js</a>.
+				
+			</p>
+
+<!-- ============================== constructor summary ==================== -->			
+			
+			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class minplayer.plugin.">
+				<caption>Class Summary</caption>
+				<thead>
+					<tr>
+						<th scope="col">Constructor Attributes</th>
+						<th scope="col">Constructor Name and Description</th>
+					</tr>
+				</thead>
+				<tbody>
+					<tr>
+						<td class="attributes">&nbsp;</td>
+						<td class="nameDescription" >
+							<div class="fixedFont">
+								<b><a href="../symbols/minplayer.plugin.html#constructor">minplayer.plugin</a></b>(name, context, options, queue)
+							</div>
+							<div class="description"></div>
+						</td>
+					</tr>
+				</tbody>
+			</table>
+			
+
+<!-- ============================== properties summary ===================== -->
+			
+				
+				
+				<table class="summaryTable" cellspacing="0" summary="A summary of the fields documented in the class minplayer.plugin.">
+					<caption>Field Summary</caption>
+					<thead>
+						<tr>
+							<th scope="col">Field Attributes</th>
+							<th scope="col">Field Name and Description</th>
+						</tr>
+					</thead>
+					<tbody>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont">
+								<b><a href="../symbols/minplayer.plugin.html#active">active</a></b>
+								</div>
+								<div class="description">Say that we are active.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont">
+								<b><a href="../symbols/minplayer.plugin.html#context">context</a></b>
+								</div>
+								<div class="description">Keep track of the context.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont">
+								<b><a href="../symbols/minplayer.plugin.html#lock">lock</a></b>
+								</div>
+								<div class="description">Create a queue lock.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont">
+								<b><a href="../symbols/minplayer.plugin.html#name">name</a></b>
+								</div>
+								<div class="description">The name of this plugin.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont">
+								<b><a href="../symbols/minplayer.plugin.html#options">options</a></b>
+								</div>
+								<div class="description">The options for this plugin.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont">
+								<b><a href="../symbols/minplayer.plugin.html#pluginReady">pluginReady</a></b>
+								</div>
+								<div class="description">The ready flag.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont">
+								<b><a href="../symbols/minplayer.plugin.html#queue">queue</a></b>
+								</div>
+								<div class="description">The event queue.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont">
+								<b><a href="../symbols/minplayer.plugin.html#triggered">triggered</a></b>
+								</div>
+								<div class="description">Keep track of already triggered events.</div>
+							</td>
+						</tr>
+					
+					</tbody>
+				</table>
+				
+				
+				
+			
+
+<!-- ============================== methods summary ======================== -->
+			
+				
+				
+				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class minplayer.plugin.">
+					<caption>Method Summary</caption>
+					<thead>
+						<tr>
+							<th scope="col">Method Attributes</th>
+							<th scope="col">Method Name and Description</th>
+						</tr>
+					</thead>
+					<tbody>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.plugin.html#addPlugin">addPlugin</a></b>(name, plugin)
+								</div>
+								<div class="description">Adds a new plugin to this player.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.plugin.html#bind">bind</a></b>(type, data, fn)
+								</div>
+								<div class="description">Bind to a media event.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.plugin.html#checkQueue">checkQueue</a></b>(plugin)
+								</div>
+								<div class="description">Check the queue and execute it.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.plugin.html#construct">construct</a></b>()
+								</div>
+								<div class="description">The constructor which is called once the context is set.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.plugin.html#create">create</a></b>(name, base, context)
+								</div>
+								<div class="description">Creates a new plugin within this context.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.plugin.html#destroy">destroy</a></b>()
+								</div>
+								<div class="description">Destructor.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.plugin.html#get">get</a></b>(plugin, callback)
+								</div>
+								<div class="description">Gets a plugin by name and calls callback when it is ready.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.plugin.html#isValid">isValid</a></b>()
+								</div>
+								<div class="description">Returns if this component is valid.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.plugin.html#poll">poll</a></b>(callback, interval)
+								</div>
+								<div class="description">Create a polling timer.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.plugin.html#ready">ready</a></b>()
+								</div>
+								<div class="description">Plugins should call this method when they are ready.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.plugin.html#trigger">trigger</a></b>(type, data)
+								</div>
+								<div class="description">Trigger a media event.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/minplayer.plugin.html#unbind">unbind</a></b>(type, fn)
+								</div>
+								<div class="description">Unbind a media event.</div>
+							</td>
+						</tr>
+					
+					</tbody>
+				</table>
+				
+				
+				
+			
+<!-- ============================== events summary ======================== -->
+			
+
+<!-- ============================== constructor details ==================== -->		
+			
+			<div class="details"><a name="constructor"> </a>
+				<div class="sectionTitle">
+					Class Detail
+				</div>
+				
+				<div class="fixedFont">
+						<b>minplayer.plugin</b>(name, context, options, queue)
+				</div>
+				
+				<div class="description">
+					
+					
+				</div>
+				
+				
+				
+				
+					
+						<dl class="detailList">
+						<dt class="heading">Parameters:</dt>
+						
+							<dt>
+								<span class="light fixedFont">{string}</span>  <b>name</b>
+								
+							</dt>
+								<dd>The name of this plugin.</dd>
+						
+							<dt>
+								<span class="light fixedFont">{object}</span>  <b>context</b>
+								
+							</dt>
+								<dd>The jQuery context.</dd>
+						
+							<dt>
+								<span class="light fixedFont">{object}</span>  <b>options</b>
+								
+							</dt>
+								<dd>This components options.</dd>
+						
+							<dt>
+								<span class="light fixedFont">{object}</span>  <b>queue</b>
+								
+							</dt>
+								<dd>The event queue to pass events around.</dd>
+						
+						</dl>
+					
+					
+					
+					
+					
+					
+					
+
+			</div>
+			
+
+<!-- ============================== field details ========================== -->		
+			
+				<div class="sectionTitle">
+					Field Detail
+				</div>
+				
+					<a name="active"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>active</b>
+					
+					</div>
+					<div class="description">
+						Say that we are active.
+						
+						
+					</div>
+					
+					
+
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name="context"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>context</b>
+					
+					</div>
+					<div class="description">
+						Keep track of the context.
+						
+						
+					</div>
+					
+					
+
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name="lock"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>lock</b>
+					
+					</div>
+					<div class="description">
+						Create a queue lock.
+						
+						
+					</div>
+					
+					
+
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name="name"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>name</b>
+					
+					</div>
+					<div class="description">
+						The name of this plugin.
+						
+						
+					</div>
+					
+					
+
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name="options"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>options</b>
+					
+					</div>
+					<div class="description">
+						The options for this plugin.
+						
+						
+					</div>
+					
+					
+
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name="pluginReady"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>pluginReady</b>
+					
+					</div>
+					<div class="description">
+						The ready flag.
+						
+						
+					</div>
+					
+					
+
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name="queue"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>queue</b>
+					
+					</div>
+					<div class="description">
+						The event queue.
+						
+						
+					</div>
+					
+					
+
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name="triggered"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>triggered</b>
+					
+					</div>
+					<div class="description">
+						Keep track of already triggered events.
+						
+						
+					</div>
+					
+					
+
+						
+						
+						
+						
+
+					
+				
+			
+
+<!-- ============================== method details ========================= -->		
+			
+				<div class="sectionTitle">
+					Method Detail
+				</div>
+				
+					<a name="addPlugin"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>addPlugin</b>(name, plugin)
+					
+					</div>
+					<div class="description">
+						Adds a new plugin to this player.
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<span class="light fixedFont">{string}</span> <b>name</b>
+									
+								</dt>
+								<dd>The name of this plugin.</dd>
+							
+								<dt>
+									<span class="light fixedFont">{object}</span> <b>plugin</b>
+									
+								</dt>
+								<dd>A new plugin object, derived from media.plugin.</dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name="bind"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{object}</span>
+					<b>bind</b>(type, data, fn)
+					
+					</div>
+					<div class="description">
+						Bind to a media event.
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<span class="light fixedFont">{string}</span> <b>type</b>
+									
+								</dt>
+								<dd>The event type.</dd>
+							
+								<dt>
+									<span class="light fixedFont">{object}</span> <b>data</b>
+									
+								</dt>
+								<dd>The data to bind with the event.</dd>
+							
+								<dt>
+									<span class="light fixedFont">{function}</span> <b>fn</b>
+									
+								</dt>
+								<dd>The callback function.</dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{object}</span> The plugin object.</dd>
+							
+							</dl>
+						
+						
+						
+
+					<hr />
+				
+					<a name="checkQueue"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>checkQueue</b>(plugin)
+					
+					</div>
+					<div class="description">
+						Check the queue and execute it.
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<span class="light fixedFont">{object}</span> <b>plugin</b>
+									
+								</dt>
+								<dd>The plugin object to check the queue against.</dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name="construct"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>construct</b>()
+					
+					</div>
+					<div class="description">
+						The constructor which is called once the context is set.
+Any class deriving from the plugin class should place all context
+dependant functionality within this function instead of the standard
+constructor function since it is called on object derivation as well
+as object creation.
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name="create"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{object}</span>
+					<b>create</b>(name, base, context)
+					
+					</div>
+					<div class="description">
+						Creates a new plugin within this context.
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<span class="light fixedFont">{string}</span> <b>name</b>
+									
+								</dt>
+								<dd>The name of the plugin you wish to create.</dd>
+							
+								<dt>
+									<span class="light fixedFont">{object}</span> <b>base</b>
+									
+								</dt>
+								<dd>The base object for this plugin.</dd>
+							
+								<dt>
+									<span class="light fixedFont">{object}</span> <b>context</b>
+									
+								</dt>
+								<dd>The context which you would like to create.</dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{object}</span> The new plugin object.</dd>
+							
+							</dl>
+						
+						
+						
+
+					<hr />
+				
+					<a name="destroy"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>destroy</b>()
+					
+					</div>
+					<div class="description">
+						Destructor.
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name="get"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{object}</span>
+					<b>get</b>(plugin, callback)
+					
+					</div>
+					<div class="description">
+						Gets a plugin by name and calls callback when it is ready.
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<span class="light fixedFont">{string}</span> <b>plugin</b>
+									
+								</dt>
+								<dd>The plugin of the plugin.</dd>
+							
+								<dt>
+									<span class="light fixedFont">{function}</span> <b>callback</b>
+									
+								</dt>
+								<dd>Called when the plugin is ready.</dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{object}</span> The plugin if no callback is provided.</dd>
+							
+							</dl>
+						
+						
+						
+
+					<hr />
+				
+					<a name="isValid"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{boolean}</span>
+					<b>isValid</b>()
+					
+					</div>
+					<div class="description">
+						Returns if this component is valid.
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{boolean}</span> TRUE if the plugin display is valid.</dd>
+							
+							</dl>
+						
+						
+						
+
+					<hr />
+				
+					<a name="poll"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>poll</b>(callback, interval)
+					
+					</div>
+					<div class="description">
+						Create a polling timer.
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<span class="light fixedFont">{function}</span> <b>callback</b>
+									
+								</dt>
+								<dd>The function to call when you poll.</dd>
+							
+								<dt>
+									<span class="light fixedFont">{integer}</span> <b>interval</b>
+									
+								</dt>
+								<dd>The interval you would like to poll.</dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name="ready"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>ready</b>()
+					
+					</div>
+					<div class="description">
+						Plugins should call this method when they are ready.
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name="trigger"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{object}</span>
+					<b>trigger</b>(type, data)
+					
+					</div>
+					<div class="description">
+						Trigger a media event.
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<span class="light fixedFont">{string}</span> <b>type</b>
+									
+								</dt>
+								<dd>The event type.</dd>
+							
+								<dt>
+									<span class="light fixedFont">{object}</span> <b>data</b>
+									
+								</dt>
+								<dd>The event data object.</dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{object}</span> The plugin object.</dd>
+							
+							</dl>
+						
+						
+						
+
+					<hr />
+				
+					<a name="unbind"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{object}</span>
+					<b>unbind</b>(type, fn)
+					
+					</div>
+					<div class="description">
+						Unbind a media event.
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<span class="light fixedFont">{string}</span> <b>type</b>
+									
+								</dt>
+								<dd>The event type.</dd>
+							
+								<dt>
+									<span class="light fixedFont">{function}</span> <b>fn</b>
+									
+								</dt>
+								<dd>The callback function.</dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{object}</span> The plugin object.</dd>
+							
+							</dl>
+						
+						
+						
+
+					
+				
+			
+			
+<!-- ============================== event details ========================= -->		
+			
+			
+			<hr />
+		</div>
+
+		
+<!-- ============================== footer ================================= -->
+		<div class="fineprint" style="clear:both">
+			
+			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Sun Aug 19 2012 12:11:28 GMT-0500 (CDT)
+		</div>
+	</body>
+</html>
diff --git a/public/admin/js/osmplayer/doc/symbols/osmplayer.html b/public/admin/js/osmplayer/doc/symbols/osmplayer.html
new file mode 100644
index 0000000000000000000000000000000000000000..24e6068de303615f55b09fc605a4e17d817f52c9
--- /dev/null
+++ b/public/admin/js/osmplayer/doc/symbols/osmplayer.html
@@ -0,0 +1,854 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+	<head>
+		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+		<meta name="generator" content="JsDoc Toolkit" />
+		
+		<title>JsDoc Reference - osmplayer</title>
+
+		<style type="text/css">
+			/* default.css */
+body
+{
+	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
+	width: 800px;
+}
+
+.header
+{
+	clear: both;
+	background-color: #ccc;
+	padding: 8px;
+}
+
+h1
+{
+	font-size: 150%;
+	font-weight: bold;
+	padding: 0;
+	margin: 1em 0 0 .3em;
+}
+
+hr
+{
+	border: none 0;
+	border-top: 1px solid #7F8FB1;
+	height: 1px;
+}
+
+pre.code
+{
+	display: block;
+	padding: 8px;
+	border: 1px dashed #ccc;
+}
+
+#index
+{
+	margin-top: 24px;
+	float: left;
+	width: 160px;
+	position: absolute;
+	left: 8px;
+	background-color: #F3F3F3;
+	padding: 8px;
+}
+
+#content
+{
+	margin-left: 190px;
+	width: 600px;
+}
+
+.classList
+{
+	list-style-type: none;
+	padding: 0;
+	margin: 0 0 0 8px;
+	font-family: arial, sans-serif;
+	font-size: 1em;
+	overflow: auto;
+}
+
+.classList li
+{
+	padding: 0;
+	margin: 0 0 8px 0;
+}
+
+.summaryTable { width: 100%; }
+
+h1.classTitle
+{
+	font-size:170%;
+	line-height:130%;
+}
+
+h2 { font-size: 110%; }
+caption, div.sectionTitle
+{
+	background-color: #7F8FB1;
+	color: #fff;
+	font-size:130%;
+	text-align: left;
+	padding: 2px 6px 2px 6px;
+	border: 1px #7F8FB1 solid;
+}
+
+div.sectionTitle { margin-bottom: 8px; }
+.summaryTable thead { display: none; }
+
+.summaryTable td
+{
+	vertical-align: top;
+	padding: 4px;
+	border-bottom: 1px #7F8FB1 solid;
+	border-right: 1px #7F8FB1 solid;
+}
+
+/*col#summaryAttributes {}*/
+.summaryTable td.attributes
+{
+	border-left: 1px #7F8FB1 solid;
+	width: 140px;
+	text-align: right;
+}
+
+td.attributes, .fixedFont
+{
+	line-height: 15px;
+	color: #002EBE;
+	font-family: "Courier New",Courier,monospace;
+	font-size: 13px;
+}
+
+.summaryTable td.nameDescription
+{
+	text-align: left;
+	font-size: 13px;
+	line-height: 15px;
+}
+
+.summaryTable td.nameDescription, .description
+{
+	line-height: 15px;
+	padding: 4px;
+	padding-left: 4px;
+}
+
+.summaryTable { margin-bottom: 8px; }
+
+ul.inheritsList
+{
+	list-style: square;
+	margin-left: 20px;
+	padding-left: 0;
+}
+
+.detailList {
+	margin-left: 20px; 
+	line-height: 15px;
+}
+.detailList dt { margin-left: 20px; }
+
+.detailList .heading
+{
+	font-weight: bold;
+	padding-bottom: 6px;
+	margin-left: 0;
+}
+
+.light, td.attributes, .light a:link, .light a:visited
+{
+	color: #777;
+	font-style: italic;
+}
+
+.fineprint
+{
+	text-align: right;
+	font-size: 10px;
+}
+		</style>
+	</head>
+
+	<body>
+<!-- ============================== header ================================= -->	
+		<!-- begin static/header.html -->
+		<div id="header">
+</div>
+		<!-- end static/header.html -->
+
+<!-- ============================== classes index ============================ -->
+		<div id="index">
+			<!-- begin publish.classesIndex -->
+			<div align="center"><a href="../index.html">Class Index</a>
+| <a href="../files.html">File Index</a></div>
+<hr />
+<h2>Classes</h2>
+<ul class="classList">
+	
+	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
+	
+	<li><a href="../symbols/jQuery.fn.minplayer.html">jQuery.fn.minplayer</a></li>
+	
+	<li><a href="../symbols/jQuery.fn.osmplayer.html">jQuery.fn.osmplayer</a></li>
+	
+	<li><a href="../symbols/minplayer.async.html">minplayer.async</a></li>
+	
+	<li><a href="../symbols/minplayer.compatibility.html">minplayer.compatibility</a></li>
+	
+	<li><a href="../symbols/minplayer.display.html">minplayer.display</a></li>
+	
+	<li><a href="../symbols/minplayer.file.html">minplayer.file</a></li>
+	
+	<li><a href="../symbols/minplayer.flags.html">minplayer.flags</a></li>
+	
+	<li><a href="../symbols/minplayer.image.html">minplayer.image</a></li>
+	
+	<li><a href="../symbols/minplayer.players.base.html">minplayer.players.base</a></li>
+	
+	<li><a href="../symbols/minplayer.players.flash.html">minplayer.players.flash</a></li>
+	
+	<li><a href="../symbols/minplayer.players.html5.html">minplayer.players.html5</a></li>
+	
+	<li><a href="../symbols/minplayer.players.minplayer.html">minplayer.players.minplayer</a></li>
+	
+	<li><a href="../symbols/minplayer.players.vimeo.html">minplayer.players.vimeo</a></li>
+	
+	<li><a href="../symbols/minplayer.players.youtube.html">minplayer.players.youtube</a></li>
+	
+	<li><a href="../symbols/minplayer.plugin.html">minplayer.plugin</a></li>
+	
+	<li><a href="../symbols/osmplayer.html">osmplayer</a></li>
+	
+	<li><a href="../symbols/osmplayer.pager.html">osmplayer.pager</a></li>
+	
+	<li><a href="../symbols/osmplayer.playlist.html">osmplayer.playlist</a></li>
+	
+	<li><a href="../symbols/osmplayer.teaser.html">osmplayer.teaser</a></li>
+	
+</ul>
+<hr />
+			<!-- end publish.classesIndex -->
+		</div>
+		
+		<div id="content">
+<!-- ============================== class title ============================ -->
+			<h1 class="classTitle">
+				
+				Class osmplayer
+			</h1>
+
+<!-- ============================== class summary ========================== -->			
+			<p class="description">
+				
+				<br />Extends
+					<a href="../symbols/_global_.html#minplayer">minplayer</a>.<br />
+				
+			
+				The main osmplayer class.
+
+<p><strong>Usage:</strong>
+<pre><code>
+
+  // Create a media player.
+  var player = jQuery("#player").osmplayer({
+
+  });
+
+</code></pre>
+</p>
+				
+				
+					<br /><i>Defined in: </i> <a href="../symbols/src/src_osmplayer.js.html">osmplayer.js</a>.
+				
+			</p>
+
+<!-- ============================== constructor summary ==================== -->			
+			
+			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class osmplayer.">
+				<caption>Class Summary</caption>
+				<thead>
+					<tr>
+						<th scope="col">Constructor Attributes</th>
+						<th scope="col">Constructor Name and Description</th>
+					</tr>
+				</thead>
+				<tbody>
+					<tr>
+						<td class="attributes">&nbsp;</td>
+						<td class="nameDescription" >
+							<div class="fixedFont">
+								<b><a href="../symbols/osmplayer.html#constructor">osmplayer</a></b>(context, options)
+							</div>
+							<div class="description"></div>
+						</td>
+					</tr>
+				</tbody>
+			</table>
+			
+
+<!-- ============================== properties summary ===================== -->
+			
+				
+				
+				<table class="summaryTable" cellspacing="0" summary="A summary of the fields documented in the class osmplayer.">
+					<caption>Field Summary</caption>
+					<thead>
+						<tr>
+							<th scope="col">Field Attributes</th>
+							<th scope="col">Field Name and Description</th>
+						</tr>
+					</thead>
+					<tbody>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont">
+								<b><a href="../symbols/osmplayer.html#constructor">constructor</a></b>
+								</div>
+								<div class="description">Reset the constructor.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&lt;static&gt; &nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont">
+								osmplayer.<b><a href="../symbols/osmplayer.html#.parser">parser</a></b>
+								</div>
+								<div class="description">The parser object.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont">
+								<b><a href="../symbols/osmplayer.html#playQueue">playQueue</a></b>
+								</div>
+								<div class="description">The play queue and index.</div>
+							</td>
+						</tr>
+					
+					</tbody>
+				</table>
+				
+				
+				
+				<dl class="inheritsList">
+				
+				</dl>
+				
+			
+
+<!-- ============================== methods summary ======================== -->
+			
+				
+				
+				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class osmplayer.">
+					<caption>Method Summary</caption>
+					<thead>
+						<tr>
+							<th scope="col">Method Attributes</th>
+							<th scope="col">Method Name and Description</th>
+						</tr>
+					</thead>
+					<tbody>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/osmplayer.html#addToQueue">addToQueue</a></b>(file)
+								</div>
+								<div class="description">Adds a file to the play queue.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/osmplayer.html#construct">construct</a></b>()
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/osmplayer.html#create">create</a></b>(name, base, context)
+								</div>
+								<div class="description">Creates a new plugin within this context.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/osmplayer.html#fullScreenElement">fullScreenElement</a></b>()
+								</div>
+								<div class="description">Gets the full screen element.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&lt;static&gt; &nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont">osmplayer.<b><a href="../symbols/osmplayer.html#.getImage">getImage</a></b>(mediafiles, type, callback)
+								</div>
+								<div class="description">Returns an image provided image array.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/osmplayer.html#loadNode">loadNode</a></b>(node)
+								</div>
+								<div class="description">The load node function.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/osmplayer.html#playNext">playNext</a></b>()
+								</div>
+								<div class="description">Plays the next media file in the queue.</div>
+							</td>
+						</tr>
+					
+					</tbody>
+				</table>
+				
+				
+				
+				<dl class="inheritsList">
+				<dt>Methods borrowed from class <a href="../symbols/_global_.html#minplayer">minplayer</a>: </dt><dd><a href="../symbols/minplayer.html#addEvents">addEvents</a>, <a href="../symbols/minplayer.html#addKeyEvents">addKeyEvents</a>, <a href="../symbols/minplayer.html#bindTo">bindTo</a>, <a href="../symbols/minplayer.html#getFiles">getFiles</a>, <a href="../symbols/minplayer.html#load">load</a>, <a href="../symbols/minplayer.html#loadPlayer">loadPlayer</a>, <a href="../symbols/minplayer.html#resize">resize</a>, <a href="../symbols/minplayer.html#showError">showError</a></dd>
+				</dl>
+				
+			
+<!-- ============================== events summary ======================== -->
+			
+
+<!-- ============================== constructor details ==================== -->		
+			
+			<div class="details"><a name="constructor"> </a>
+				<div class="sectionTitle">
+					Class Detail
+				</div>
+				
+				<div class="fixedFont">
+						<b>osmplayer</b>(context, options)
+				</div>
+				
+				<div class="description">
+					
+					
+				</div>
+				
+				
+				
+				
+					
+						<dl class="detailList">
+						<dt class="heading">Parameters:</dt>
+						
+							<dt>
+								<span class="light fixedFont">{object}</span>  <b>context</b>
+								
+							</dt>
+								<dd>The jQuery context.</dd>
+						
+							<dt>
+								<span class="light fixedFont">{object}</span>  <b>options</b>
+								
+							</dt>
+								<dd>This components options.</dd>
+						
+						</dl>
+					
+					
+					
+					
+					
+					
+					
+
+			</div>
+			
+
+<!-- ============================== field details ========================== -->		
+			
+				<div class="sectionTitle">
+					Field Detail
+				</div>
+				
+					<a name="constructor"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>constructor</b>
+					
+					</div>
+					<div class="description">
+						Reset the constructor.
+						
+						
+					</div>
+					
+					
+
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name=".parser"> </a>
+					<div class="fixedFont">&lt;static&gt; 
+					
+					
+					<span class="light">osmplayer.</span><b>parser</b>
+					
+					</div>
+					<div class="description">
+						The parser object.
+						
+							<br />
+							<i>Defined in: </i> <a href="../symbols/src/src_osmplayer.parser.default.js.html">osmplayer.parser.default.js</a>.
+						
+						
+					</div>
+					
+					
+
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name="playQueue"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>playQueue</b>
+					
+					</div>
+					<div class="description">
+						The play queue and index.
+						
+						
+					</div>
+					
+					
+
+						
+						
+						
+						
+
+					
+				
+			
+
+<!-- ============================== method details ========================= -->		
+			
+				<div class="sectionTitle">
+					Method Detail
+				</div>
+				
+					<a name="addToQueue"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{object}</span>
+					<b>addToQueue</b>(file)
+					
+					</div>
+					<div class="description">
+						Adds a file to the play queue.
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<span class="light fixedFont">{object}</span> <b>file</b>
+									
+								</dt>
+								<dd>The file to add to the queue.</dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{object}</span> The file that was added to the queue.</dd>
+							
+							</dl>
+						
+						
+						
+
+					<hr />
+				
+					<a name="construct"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>construct</b>()
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd>minplayer.plugin.construct</dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name="create"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{object}</span>
+					<b>create</b>(name, base, context)
+					
+					</div>
+					<div class="description">
+						Creates a new plugin within this context.
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<span class="light fixedFont">{string}</span> <b>name</b>
+									
+								</dt>
+								<dd>The name of the plugin you wish to create.</dd>
+							
+								<dt>
+									<span class="light fixedFont">{object}</span> <b>base</b>
+									
+								</dt>
+								<dd>The base object for this plugin.</dd>
+							
+								<dt>
+									<span class="light fixedFont">{object}</span> <b>context</b>
+									
+								</dt>
+								<dd>The context which you would like to create.</dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{object}</span> The new plugin object.</dd>
+							
+							</dl>
+						
+						
+						
+
+					<hr />
+				
+					<a name="fullScreenElement"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{object}</span>
+					<b>fullScreenElement</b>()
+					
+					</div>
+					<div class="description">
+						Gets the full screen element.
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{object}</span> The element that will go into fullscreen.</dd>
+							
+							</dl>
+						
+						
+						
+
+					<hr />
+				
+					<a name=".getImage"> </a>
+					<div class="fixedFont">&lt;static&gt; 
+					
+					
+					<span class="light">osmplayer.</span><b>getImage</b>(mediafiles, type, callback)
+					
+					</div>
+					<div class="description">
+						Returns an image provided image array.
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<span class="light fixedFont">{object}</span> <b>mediafiles</b>
+									
+								</dt>
+								<dd>The mediafiles to search within.</dd>
+							
+								<dt>
+									<span class="light fixedFont">{string}</span> <b>type</b>
+									
+								</dt>
+								<dd>The type of image to look for.</dd>
+							
+								<dt>
+									<span class="light fixedFont">{function}</span> <b>callback</b>
+									
+								</dt>
+								<dd>Called when the image is retrieved.</dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name="loadNode"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>loadNode</b>(node)
+					
+					</div>
+					<div class="description">
+						The load node function.
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<span class="light fixedFont">{object}</span> <b>node</b>
+									
+								</dt>
+								<dd>A media node object.</dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name="playNext"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>playNext</b>()
+					
+					</div>
+					<div class="description">
+						Plays the next media file in the queue.
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+						
+						
+
+					
+				
+			
+			
+<!-- ============================== event details ========================= -->		
+			
+			
+			<hr />
+		</div>
+
+		
+<!-- ============================== footer ================================= -->
+		<div class="fineprint" style="clear:both">
+			
+			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Sun Aug 19 2012 12:11:28 GMT-0500 (CDT)
+		</div>
+	</body>
+</html>
diff --git a/public/admin/js/osmplayer/doc/symbols/osmplayer.pager.html b/public/admin/js/osmplayer/doc/symbols/osmplayer.pager.html
new file mode 100644
index 0000000000000000000000000000000000000000..51e37daedd882e81f36a60f7fdb01c62ad76a6d8
--- /dev/null
+++ b/public/admin/js/osmplayer/doc/symbols/osmplayer.pager.html
@@ -0,0 +1,483 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+	<head>
+		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+		<meta name="generator" content="JsDoc Toolkit" />
+		
+		<title>JsDoc Reference - osmplayer.pager</title>
+
+		<style type="text/css">
+			/* default.css */
+body
+{
+	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
+	width: 800px;
+}
+
+.header
+{
+	clear: both;
+	background-color: #ccc;
+	padding: 8px;
+}
+
+h1
+{
+	font-size: 150%;
+	font-weight: bold;
+	padding: 0;
+	margin: 1em 0 0 .3em;
+}
+
+hr
+{
+	border: none 0;
+	border-top: 1px solid #7F8FB1;
+	height: 1px;
+}
+
+pre.code
+{
+	display: block;
+	padding: 8px;
+	border: 1px dashed #ccc;
+}
+
+#index
+{
+	margin-top: 24px;
+	float: left;
+	width: 160px;
+	position: absolute;
+	left: 8px;
+	background-color: #F3F3F3;
+	padding: 8px;
+}
+
+#content
+{
+	margin-left: 190px;
+	width: 600px;
+}
+
+.classList
+{
+	list-style-type: none;
+	padding: 0;
+	margin: 0 0 0 8px;
+	font-family: arial, sans-serif;
+	font-size: 1em;
+	overflow: auto;
+}
+
+.classList li
+{
+	padding: 0;
+	margin: 0 0 8px 0;
+}
+
+.summaryTable { width: 100%; }
+
+h1.classTitle
+{
+	font-size:170%;
+	line-height:130%;
+}
+
+h2 { font-size: 110%; }
+caption, div.sectionTitle
+{
+	background-color: #7F8FB1;
+	color: #fff;
+	font-size:130%;
+	text-align: left;
+	padding: 2px 6px 2px 6px;
+	border: 1px #7F8FB1 solid;
+}
+
+div.sectionTitle { margin-bottom: 8px; }
+.summaryTable thead { display: none; }
+
+.summaryTable td
+{
+	vertical-align: top;
+	padding: 4px;
+	border-bottom: 1px #7F8FB1 solid;
+	border-right: 1px #7F8FB1 solid;
+}
+
+/*col#summaryAttributes {}*/
+.summaryTable td.attributes
+{
+	border-left: 1px #7F8FB1 solid;
+	width: 140px;
+	text-align: right;
+}
+
+td.attributes, .fixedFont
+{
+	line-height: 15px;
+	color: #002EBE;
+	font-family: "Courier New",Courier,monospace;
+	font-size: 13px;
+}
+
+.summaryTable td.nameDescription
+{
+	text-align: left;
+	font-size: 13px;
+	line-height: 15px;
+}
+
+.summaryTable td.nameDescription, .description
+{
+	line-height: 15px;
+	padding: 4px;
+	padding-left: 4px;
+}
+
+.summaryTable { margin-bottom: 8px; }
+
+ul.inheritsList
+{
+	list-style: square;
+	margin-left: 20px;
+	padding-left: 0;
+}
+
+.detailList {
+	margin-left: 20px; 
+	line-height: 15px;
+}
+.detailList dt { margin-left: 20px; }
+
+.detailList .heading
+{
+	font-weight: bold;
+	padding-bottom: 6px;
+	margin-left: 0;
+}
+
+.light, td.attributes, .light a:link, .light a:visited
+{
+	color: #777;
+	font-style: italic;
+}
+
+.fineprint
+{
+	text-align: right;
+	font-size: 10px;
+}
+		</style>
+	</head>
+
+	<body>
+<!-- ============================== header ================================= -->	
+		<!-- begin static/header.html -->
+		<div id="header">
+</div>
+		<!-- end static/header.html -->
+
+<!-- ============================== classes index ============================ -->
+		<div id="index">
+			<!-- begin publish.classesIndex -->
+			<div align="center"><a href="../index.html">Class Index</a>
+| <a href="../files.html">File Index</a></div>
+<hr />
+<h2>Classes</h2>
+<ul class="classList">
+	
+	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
+	
+	<li><a href="../symbols/jQuery.fn.minplayer.html">jQuery.fn.minplayer</a></li>
+	
+	<li><a href="../symbols/jQuery.fn.osmplayer.html">jQuery.fn.osmplayer</a></li>
+	
+	<li><a href="../symbols/minplayer.async.html">minplayer.async</a></li>
+	
+	<li><a href="../symbols/minplayer.compatibility.html">minplayer.compatibility</a></li>
+	
+	<li><a href="../symbols/minplayer.display.html">minplayer.display</a></li>
+	
+	<li><a href="../symbols/minplayer.file.html">minplayer.file</a></li>
+	
+	<li><a href="../symbols/minplayer.flags.html">minplayer.flags</a></li>
+	
+	<li><a href="../symbols/minplayer.image.html">minplayer.image</a></li>
+	
+	<li><a href="../symbols/minplayer.players.base.html">minplayer.players.base</a></li>
+	
+	<li><a href="../symbols/minplayer.players.flash.html">minplayer.players.flash</a></li>
+	
+	<li><a href="../symbols/minplayer.players.html5.html">minplayer.players.html5</a></li>
+	
+	<li><a href="../symbols/minplayer.players.minplayer.html">minplayer.players.minplayer</a></li>
+	
+	<li><a href="../symbols/minplayer.players.vimeo.html">minplayer.players.vimeo</a></li>
+	
+	<li><a href="../symbols/minplayer.players.youtube.html">minplayer.players.youtube</a></li>
+	
+	<li><a href="../symbols/minplayer.plugin.html">minplayer.plugin</a></li>
+	
+	<li><a href="../symbols/osmplayer.html">osmplayer</a></li>
+	
+	<li><a href="../symbols/osmplayer.pager.html">osmplayer.pager</a></li>
+	
+	<li><a href="../symbols/osmplayer.playlist.html">osmplayer.playlist</a></li>
+	
+	<li><a href="../symbols/osmplayer.teaser.html">osmplayer.teaser</a></li>
+	
+</ul>
+<hr />
+			<!-- end publish.classesIndex -->
+		</div>
+		
+		<div id="content">
+<!-- ============================== class title ============================ -->
+			<h1 class="classTitle">
+				
+				Class osmplayer.pager
+			</h1>
+
+<!-- ============================== class summary ========================== -->			
+			<p class="description">
+				
+				<br />Extends
+					<a href="../symbols/minplayer.display.html">minplayer.display</a>.<br />
+				
+			
+				This class provides pager functionality.
+				
+				
+					<br /><i>Defined in: </i> <a href="../symbols/src/src_osmplayer.pager.js.html">osmplayer.pager.js</a>.
+				
+			</p>
+
+<!-- ============================== constructor summary ==================== -->			
+			
+			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class osmplayer.pager.">
+				<caption>Class Summary</caption>
+				<thead>
+					<tr>
+						<th scope="col">Constructor Attributes</th>
+						<th scope="col">Constructor Name and Description</th>
+					</tr>
+				</thead>
+				<tbody>
+					<tr>
+						<td class="attributes">&nbsp;</td>
+						<td class="nameDescription" >
+							<div class="fixedFont">
+								<b><a href="../symbols/osmplayer.pager.html#constructor">osmplayer.pager</a></b>(context, options)
+							</div>
+							<div class="description"></div>
+						</td>
+					</tr>
+				</tbody>
+			</table>
+			
+
+<!-- ============================== properties summary ===================== -->
+			
+				
+				
+				<table class="summaryTable" cellspacing="0" summary="A summary of the fields documented in the class osmplayer.pager.">
+					<caption>Field Summary</caption>
+					<thead>
+						<tr>
+							<th scope="col">Field Attributes</th>
+							<th scope="col">Field Name and Description</th>
+						</tr>
+					</thead>
+					<tbody>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont">
+								<b><a href="../symbols/osmplayer.pager.html#constructor">constructor</a></b>
+								</div>
+								<div class="description">Reset the constructor.</div>
+							</td>
+						</tr>
+					
+					</tbody>
+				</table>
+				
+				
+				
+				<dl class="inheritsList">
+				<dt>Fields borrowed from class <a href="../symbols/minplayer.display.html">minplayer.display</a>: </dt><dd><a href="../symbols/minplayer.display.html#onResize">onResize</a></dd><dt>Fields borrowed from class <a href="../symbols/minplayer.plugin.html">minplayer.plugin</a>: </dt><dd><a href="../symbols/minplayer.plugin.html#active">active</a>, <a href="../symbols/minplayer.plugin.html#context">context</a>, <a href="../symbols/minplayer.plugin.html#lock">lock</a>, <a href="../symbols/minplayer.plugin.html#name">name</a>, <a href="../symbols/minplayer.plugin.html#options">options</a>, <a href="../symbols/minplayer.plugin.html#pluginReady">pluginReady</a>, <a href="../symbols/minplayer.plugin.html#queue">queue</a>, <a href="../symbols/minplayer.plugin.html#triggered">triggered</a></dd>
+				</dl>
+				
+			
+
+<!-- ============================== methods summary ======================== -->
+			
+				
+				
+				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class osmplayer.pager.">
+					<caption>Method Summary</caption>
+					<thead>
+						<tr>
+							<th scope="col">Method Attributes</th>
+							<th scope="col">Method Name and Description</th>
+						</tr>
+					</thead>
+					<tbody>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/osmplayer.pager.html#construct">construct</a></b>()
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+					</tbody>
+				</table>
+				
+				
+				
+				<dl class="inheritsList">
+				<dt>Methods borrowed from class <a href="../symbols/minplayer.display.html">minplayer.display</a>: </dt><dd><a href="../symbols/minplayer.display.html#fullscreen">fullscreen</a>, <a href="../symbols/minplayer.display.html#fullScreenElement">fullScreenElement</a>, <a href="../symbols/minplayer.display.html#getDisplay">getDisplay</a>, <a href="../symbols/minplayer.display.html#getElements">getElements</a>, <a href="../symbols/minplayer.display.html#getScaledRect">getScaledRect</a>, <a href="../symbols/minplayer.display.html#hide">hide</a>, <a href="../symbols/minplayer.display.html#isFullScreen">isFullScreen</a>, <a href="../symbols/minplayer.display.html#onFocus">onFocus</a>, <a href="../symbols/minplayer.display.html#toggleFullScreen">toggleFullScreen</a></dd><dt>Methods borrowed from class <a href="../symbols/minplayer.plugin.html">minplayer.plugin</a>: </dt><dd><a href="../symbols/minplayer.plugin.html#addPlugin">addPlugin</a>, <a href="../symbols/minplayer.plugin.html#bind">bind</a>, <a href="../symbols/minplayer.plugin.html#checkQueue">checkQueue</a>, <a href="../symbols/minplayer.plugin.html#create">create</a>, <a href="../symbols/minplayer.plugin.html#destroy">destroy</a>, <a href="../symbols/minplayer.plugin.html#get">get</a>, <a href="../symbols/minplayer.plugin.html#isValid">isValid</a>, <a href="../symbols/minplayer.plugin.html#poll">poll</a>, <a href="../symbols/minplayer.plugin.html#ready">ready</a>, <a href="../symbols/minplayer.plugin.html#trigger">trigger</a>, <a href="../symbols/minplayer.plugin.html#unbind">unbind</a></dd>
+				</dl>
+				
+			
+<!-- ============================== events summary ======================== -->
+			
+
+<!-- ============================== constructor details ==================== -->		
+			
+			<div class="details"><a name="constructor"> </a>
+				<div class="sectionTitle">
+					Class Detail
+				</div>
+				
+				<div class="fixedFont">
+						<b>osmplayer.pager</b>(context, options)
+				</div>
+				
+				<div class="description">
+					
+					
+				</div>
+				
+				
+				
+				
+					
+						<dl class="detailList">
+						<dt class="heading">Parameters:</dt>
+						
+							<dt>
+								<span class="light fixedFont">{object}</span>  <b>context</b>
+								
+							</dt>
+								<dd>The jQuery context.</dd>
+						
+							<dt>
+								<span class="light fixedFont">{object}</span>  <b>options</b>
+								
+							</dt>
+								<dd>This components options.</dd>
+						
+						</dl>
+					
+					
+					
+					
+					
+					
+					
+
+			</div>
+			
+
+<!-- ============================== field details ========================== -->		
+			
+				<div class="sectionTitle">
+					Field Detail
+				</div>
+				
+					<a name="constructor"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>constructor</b>
+					
+					</div>
+					<div class="description">
+						Reset the constructor.
+						
+						
+					</div>
+					
+					
+
+						
+						
+						
+						
+
+					
+				
+			
+
+<!-- ============================== method details ========================= -->		
+			
+				<div class="sectionTitle">
+					Method Detail
+				</div>
+				
+					<a name="construct"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>construct</b>()
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd><a href="../symbols/minplayer.plugin.html#construct">minplayer.plugin#construct</a></dd>
+							
+							</dl>
+						
+
+					
+				
+			
+			
+<!-- ============================== event details ========================= -->		
+			
+			
+			<hr />
+		</div>
+
+		
+<!-- ============================== footer ================================= -->
+		<div class="fineprint" style="clear:both">
+			
+			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Sun Aug 19 2012 12:11:28 GMT-0500 (CDT)
+		</div>
+	</body>
+</html>
diff --git a/public/admin/js/osmplayer/doc/symbols/osmplayer.playlist.html b/public/admin/js/osmplayer/doc/symbols/osmplayer.playlist.html
new file mode 100644
index 0000000000000000000000000000000000000000..e045860c3203658e8175321a576c5fce92e2e6aa
--- /dev/null
+++ b/public/admin/js/osmplayer/doc/symbols/osmplayer.playlist.html
@@ -0,0 +1,981 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+	<head>
+		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+		<meta name="generator" content="JsDoc Toolkit" />
+		
+		<title>JsDoc Reference - osmplayer.playlist</title>
+
+		<style type="text/css">
+			/* default.css */
+body
+{
+	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
+	width: 800px;
+}
+
+.header
+{
+	clear: both;
+	background-color: #ccc;
+	padding: 8px;
+}
+
+h1
+{
+	font-size: 150%;
+	font-weight: bold;
+	padding: 0;
+	margin: 1em 0 0 .3em;
+}
+
+hr
+{
+	border: none 0;
+	border-top: 1px solid #7F8FB1;
+	height: 1px;
+}
+
+pre.code
+{
+	display: block;
+	padding: 8px;
+	border: 1px dashed #ccc;
+}
+
+#index
+{
+	margin-top: 24px;
+	float: left;
+	width: 160px;
+	position: absolute;
+	left: 8px;
+	background-color: #F3F3F3;
+	padding: 8px;
+}
+
+#content
+{
+	margin-left: 190px;
+	width: 600px;
+}
+
+.classList
+{
+	list-style-type: none;
+	padding: 0;
+	margin: 0 0 0 8px;
+	font-family: arial, sans-serif;
+	font-size: 1em;
+	overflow: auto;
+}
+
+.classList li
+{
+	padding: 0;
+	margin: 0 0 8px 0;
+}
+
+.summaryTable { width: 100%; }
+
+h1.classTitle
+{
+	font-size:170%;
+	line-height:130%;
+}
+
+h2 { font-size: 110%; }
+caption, div.sectionTitle
+{
+	background-color: #7F8FB1;
+	color: #fff;
+	font-size:130%;
+	text-align: left;
+	padding: 2px 6px 2px 6px;
+	border: 1px #7F8FB1 solid;
+}
+
+div.sectionTitle { margin-bottom: 8px; }
+.summaryTable thead { display: none; }
+
+.summaryTable td
+{
+	vertical-align: top;
+	padding: 4px;
+	border-bottom: 1px #7F8FB1 solid;
+	border-right: 1px #7F8FB1 solid;
+}
+
+/*col#summaryAttributes {}*/
+.summaryTable td.attributes
+{
+	border-left: 1px #7F8FB1 solid;
+	width: 140px;
+	text-align: right;
+}
+
+td.attributes, .fixedFont
+{
+	line-height: 15px;
+	color: #002EBE;
+	font-family: "Courier New",Courier,monospace;
+	font-size: 13px;
+}
+
+.summaryTable td.nameDescription
+{
+	text-align: left;
+	font-size: 13px;
+	line-height: 15px;
+}
+
+.summaryTable td.nameDescription, .description
+{
+	line-height: 15px;
+	padding: 4px;
+	padding-left: 4px;
+}
+
+.summaryTable { margin-bottom: 8px; }
+
+ul.inheritsList
+{
+	list-style: square;
+	margin-left: 20px;
+	padding-left: 0;
+}
+
+.detailList {
+	margin-left: 20px; 
+	line-height: 15px;
+}
+.detailList dt { margin-left: 20px; }
+
+.detailList .heading
+{
+	font-weight: bold;
+	padding-bottom: 6px;
+	margin-left: 0;
+}
+
+.light, td.attributes, .light a:link, .light a:visited
+{
+	color: #777;
+	font-style: italic;
+}
+
+.fineprint
+{
+	text-align: right;
+	font-size: 10px;
+}
+		</style>
+	</head>
+
+	<body>
+<!-- ============================== header ================================= -->	
+		<!-- begin static/header.html -->
+		<div id="header">
+</div>
+		<!-- end static/header.html -->
+
+<!-- ============================== classes index ============================ -->
+		<div id="index">
+			<!-- begin publish.classesIndex -->
+			<div align="center"><a href="../index.html">Class Index</a>
+| <a href="../files.html">File Index</a></div>
+<hr />
+<h2>Classes</h2>
+<ul class="classList">
+	
+	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
+	
+	<li><a href="../symbols/jQuery.fn.minplayer.html">jQuery.fn.minplayer</a></li>
+	
+	<li><a href="../symbols/jQuery.fn.osmplayer.html">jQuery.fn.osmplayer</a></li>
+	
+	<li><a href="../symbols/minplayer.async.html">minplayer.async</a></li>
+	
+	<li><a href="../symbols/minplayer.compatibility.html">minplayer.compatibility</a></li>
+	
+	<li><a href="../symbols/minplayer.display.html">minplayer.display</a></li>
+	
+	<li><a href="../symbols/minplayer.file.html">minplayer.file</a></li>
+	
+	<li><a href="../symbols/minplayer.flags.html">minplayer.flags</a></li>
+	
+	<li><a href="../symbols/minplayer.image.html">minplayer.image</a></li>
+	
+	<li><a href="../symbols/minplayer.players.base.html">minplayer.players.base</a></li>
+	
+	<li><a href="../symbols/minplayer.players.flash.html">minplayer.players.flash</a></li>
+	
+	<li><a href="../symbols/minplayer.players.html5.html">minplayer.players.html5</a></li>
+	
+	<li><a href="../symbols/minplayer.players.minplayer.html">minplayer.players.minplayer</a></li>
+	
+	<li><a href="../symbols/minplayer.players.vimeo.html">minplayer.players.vimeo</a></li>
+	
+	<li><a href="../symbols/minplayer.players.youtube.html">minplayer.players.youtube</a></li>
+	
+	<li><a href="../symbols/minplayer.plugin.html">minplayer.plugin</a></li>
+	
+	<li><a href="../symbols/osmplayer.html">osmplayer</a></li>
+	
+	<li><a href="../symbols/osmplayer.pager.html">osmplayer.pager</a></li>
+	
+	<li><a href="../symbols/osmplayer.playlist.html">osmplayer.playlist</a></li>
+	
+	<li><a href="../symbols/osmplayer.teaser.html">osmplayer.teaser</a></li>
+	
+</ul>
+<hr />
+			<!-- end publish.classesIndex -->
+		</div>
+		
+		<div id="content">
+<!-- ============================== class title ============================ -->
+			<h1 class="classTitle">
+				
+				Class osmplayer.playlist
+			</h1>
+
+<!-- ============================== class summary ========================== -->			
+			<p class="description">
+				
+				<br />Extends
+					<a href="../symbols/minplayer.display.html">minplayer.display</a>.<br />
+				
+			
+				This class creates the playlist functionality for the minplayer.
+				
+				
+					<br /><i>Defined in: </i> <a href="../symbols/src/src_osmplayer.playlist.js.html">osmplayer.playlist.js</a>.
+				
+			</p>
+
+<!-- ============================== constructor summary ==================== -->			
+			
+			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class osmplayer.playlist.">
+				<caption>Class Summary</caption>
+				<thead>
+					<tr>
+						<th scope="col">Constructor Attributes</th>
+						<th scope="col">Constructor Name and Description</th>
+					</tr>
+				</thead>
+				<tbody>
+					<tr>
+						<td class="attributes">&nbsp;</td>
+						<td class="nameDescription" >
+							<div class="fixedFont">
+								<b><a href="../symbols/osmplayer.playlist.html#constructor">osmplayer.playlist</a></b>(context, options)
+							</div>
+							<div class="description"></div>
+						</td>
+					</tr>
+				</tbody>
+			</table>
+			
+
+<!-- ============================== properties summary ===================== -->
+			
+				
+				
+				<table class="summaryTable" cellspacing="0" summary="A summary of the fields documented in the class osmplayer.playlist.">
+					<caption>Field Summary</caption>
+					<thead>
+						<tr>
+							<th scope="col">Field Attributes</th>
+							<th scope="col">Field Name and Description</th>
+						</tr>
+					</thead>
+					<tbody>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont">
+								<b><a href="../symbols/osmplayer.playlist.html#constructor">constructor</a></b>
+								</div>
+								<div class="description">Reset the constructor.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont">
+								<b><a href="../symbols/osmplayer.playlist.html#nodes">nodes</a></b>
+								</div>
+								<div class="description">The nodes within this playlist.</div>
+							</td>
+						</tr>
+					
+					</tbody>
+				</table>
+				
+				
+				
+				<dl class="inheritsList">
+				<dt>Fields borrowed from class <a href="../symbols/minplayer.display.html">minplayer.display</a>: </dt><dd><a href="../symbols/minplayer.display.html#onResize">onResize</a></dd><dt>Fields borrowed from class <a href="../symbols/minplayer.plugin.html">minplayer.plugin</a>: </dt><dd><a href="../symbols/minplayer.plugin.html#active">active</a>, <a href="../symbols/minplayer.plugin.html#context">context</a>, <a href="../symbols/minplayer.plugin.html#lock">lock</a>, <a href="../symbols/minplayer.plugin.html#name">name</a>, <a href="../symbols/minplayer.plugin.html#options">options</a>, <a href="../symbols/minplayer.plugin.html#pluginReady">pluginReady</a>, <a href="../symbols/minplayer.plugin.html#queue">queue</a>, <a href="../symbols/minplayer.plugin.html#triggered">triggered</a></dd>
+				</dl>
+				
+			
+
+<!-- ============================== methods summary ======================== -->
+			
+				
+				
+				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class osmplayer.playlist.">
+					<caption>Method Summary</caption>
+					<thead>
+						<tr>
+							<th scope="col">Method Attributes</th>
+							<th scope="col">Method Name and Description</th>
+						</tr>
+					</thead>
+					<tbody>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/osmplayer.playlist.html#construct">construct</a></b>()
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/osmplayer.playlist.html#load">load</a></b>(page, loadIndex)
+								</div>
+								<div class="description">Loads a playlist.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/osmplayer.playlist.html#loadItem">loadItem</a></b>(index)
+								</div>
+								<div class="description">Loads a playlist node.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/osmplayer.playlist.html#next">next</a></b>()
+								</div>
+								<div class="description">Loads the next item.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/osmplayer.playlist.html#nextPage">nextPage</a></b>(loadIndex)
+								</div>
+								<div class="description">Loads the next page.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/osmplayer.playlist.html#prev">prev</a></b>()
+								</div>
+								<div class="description">Loads the previous item.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/osmplayer.playlist.html#prevPage">prevPage</a></b>(loadIndex)
+								</div>
+								<div class="description">Loads the previous page.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/osmplayer.playlist.html#refreshScroll">refreshScroll</a></b>()
+								</div>
+								<div class="description">Refresh the scrollbar.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/osmplayer.playlist.html#scrollTo">scrollTo</a></b>(pos, relative)
+								</div>
+								<div class="description">Wrapper around the scroll scrollTo method.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/osmplayer.playlist.html#set">set</a></b>(playlist, loadIndex)
+								</div>
+								<div class="description">Sets the playlist.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/osmplayer.playlist.html#setQueue">setQueue</a></b>()
+								</div>
+								<div class="description">Stores the current playlist state in the playqueue.</div>
+							</td>
+						</tr>
+					
+					</tbody>
+				</table>
+				
+				
+				
+				<dl class="inheritsList">
+				<dt>Methods borrowed from class <a href="../symbols/minplayer.display.html">minplayer.display</a>: </dt><dd><a href="../symbols/minplayer.display.html#fullscreen">fullscreen</a>, <a href="../symbols/minplayer.display.html#fullScreenElement">fullScreenElement</a>, <a href="../symbols/minplayer.display.html#getDisplay">getDisplay</a>, <a href="../symbols/minplayer.display.html#getElements">getElements</a>, <a href="../symbols/minplayer.display.html#getScaledRect">getScaledRect</a>, <a href="../symbols/minplayer.display.html#hide">hide</a>, <a href="../symbols/minplayer.display.html#isFullScreen">isFullScreen</a>, <a href="../symbols/minplayer.display.html#onFocus">onFocus</a>, <a href="../symbols/minplayer.display.html#toggleFullScreen">toggleFullScreen</a></dd><dt>Methods borrowed from class <a href="../symbols/minplayer.plugin.html">minplayer.plugin</a>: </dt><dd><a href="../symbols/minplayer.plugin.html#addPlugin">addPlugin</a>, <a href="../symbols/minplayer.plugin.html#bind">bind</a>, <a href="../symbols/minplayer.plugin.html#checkQueue">checkQueue</a>, <a href="../symbols/minplayer.plugin.html#create">create</a>, <a href="../symbols/minplayer.plugin.html#destroy">destroy</a>, <a href="../symbols/minplayer.plugin.html#get">get</a>, <a href="../symbols/minplayer.plugin.html#isValid">isValid</a>, <a href="../symbols/minplayer.plugin.html#poll">poll</a>, <a href="../symbols/minplayer.plugin.html#ready">ready</a>, <a href="../symbols/minplayer.plugin.html#trigger">trigger</a>, <a href="../symbols/minplayer.plugin.html#unbind">unbind</a></dd>
+				</dl>
+				
+			
+<!-- ============================== events summary ======================== -->
+			
+
+<!-- ============================== constructor details ==================== -->		
+			
+			<div class="details"><a name="constructor"> </a>
+				<div class="sectionTitle">
+					Class Detail
+				</div>
+				
+				<div class="fixedFont">
+						<b>osmplayer.playlist</b>(context, options)
+				</div>
+				
+				<div class="description">
+					
+					
+				</div>
+				
+				
+				
+				
+					
+						<dl class="detailList">
+						<dt class="heading">Parameters:</dt>
+						
+							<dt>
+								<span class="light fixedFont">{object}</span>  <b>context</b>
+								
+							</dt>
+								<dd>The jQuery context.</dd>
+						
+							<dt>
+								<span class="light fixedFont">{object}</span>  <b>options</b>
+								
+							</dt>
+								<dd>This components options.</dd>
+						
+						</dl>
+					
+					
+					
+					
+					
+					
+					
+
+			</div>
+			
+
+<!-- ============================== field details ========================== -->		
+			
+				<div class="sectionTitle">
+					Field Detail
+				</div>
+				
+					<a name="constructor"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>constructor</b>
+					
+					</div>
+					<div class="description">
+						Reset the constructor.
+						
+						
+					</div>
+					
+					
+
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name="nodes"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>nodes</b>
+					
+					</div>
+					<div class="description">
+						The nodes within this playlist.
+						
+						
+					</div>
+					
+					
+
+						
+						
+						
+						
+
+					
+				
+			
+
+<!-- ============================== method details ========================= -->		
+			
+				<div class="sectionTitle">
+					Method Detail
+				</div>
+				
+					<a name="construct"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>construct</b>()
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd><a href="../symbols/minplayer.plugin.html#construct">minplayer.plugin#construct</a></dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name="load"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{boolean}</span>
+					<b>load</b>(page, loadIndex)
+					
+					</div>
+					<div class="description">
+						Loads a playlist.
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<span class="light fixedFont">{integer}</span> <b>page</b>
+									
+								</dt>
+								<dd>The page to load.</dd>
+							
+								<dt>
+									<span class="light fixedFont">{integer}</span> <b>loadIndex</b>
+									
+								</dt>
+								<dd>The index of the item to load.</dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{boolean}</span> TRUE if loaded, FALSE if not.</dd>
+							
+							</dl>
+						
+						
+						
+
+					<hr />
+				
+					<a name="loadItem"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{boolean}</span>
+					<b>loadItem</b>(index)
+					
+					</div>
+					<div class="description">
+						Loads a playlist node.
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<span class="light fixedFont">{number}</span> <b>index</b>
+									
+								</dt>
+								<dd>The index of the item you would like to load.</dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{boolean}</span> TRUE if loaded, FALSE if not.</dd>
+							
+							</dl>
+						
+						
+						
+
+					<hr />
+				
+					<a name="next"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{boolean}</span>
+					<b>next</b>()
+					
+					</div>
+					<div class="description">
+						Loads the next item.
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{boolean}</span> TRUE if loaded, FALSE if not.</dd>
+							
+							</dl>
+						
+						
+						
+
+					<hr />
+				
+					<a name="nextPage"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{boolean}</span>
+					<b>nextPage</b>(loadIndex)
+					
+					</div>
+					<div class="description">
+						Loads the next page.
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<span class="light fixedFont">{integer}</span> <b>loadIndex</b>
+									
+								</dt>
+								<dd>The index of the item to load.</dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{boolean}</span> TRUE if loaded, FALSE if not.</dd>
+							
+							</dl>
+						
+						
+						
+
+					<hr />
+				
+					<a name="prev"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{boolean}</span>
+					<b>prev</b>()
+					
+					</div>
+					<div class="description">
+						Loads the previous item.
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{boolean}</span> TRUE if loaded, FALSE if not.</dd>
+							
+							</dl>
+						
+						
+						
+
+					<hr />
+				
+					<a name="prevPage"> </a>
+					<div class="fixedFont">
+					
+					<span class="light">{boolean}</span>
+					<b>prevPage</b>(loadIndex)
+					
+					</div>
+					<div class="description">
+						Loads the previous page.
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<span class="light fixedFont">{integer}</span> <b>loadIndex</b>
+									
+								</dt>
+								<dd>The index of the item to load.</dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							
+								<dd><span class="light fixedFont">{boolean}</span> TRUE if loaded, FALSE if not.</dd>
+							
+							</dl>
+						
+						
+						
+
+					<hr />
+				
+					<a name="refreshScroll"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>refreshScroll</b>()
+					
+					</div>
+					<div class="description">
+						Refresh the scrollbar.
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name="scrollTo"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>scrollTo</b>(pos, relative)
+					
+					</div>
+					<div class="description">
+						Wrapper around the scroll scrollTo method.
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<span class="light fixedFont">{number}</span> <b>pos</b>
+									
+								</dt>
+								<dd>The position you would like to set the list.</dd>
+							
+								<dt>
+									<span class="light fixedFont">{boolean}</span> <b>relative</b>
+									
+								</dt>
+								<dd>If this is a relative position change.</dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name="set"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>set</b>(playlist, loadIndex)
+					
+					</div>
+					<div class="description">
+						Sets the playlist.
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<span class="light fixedFont">{object}</span> <b>playlist</b>
+									
+								</dt>
+								<dd>The playlist object.</dd>
+							
+								<dt>
+									<span class="light fixedFont">{integer}</span> <b>loadIndex</b>
+									
+								</dt>
+								<dd>The index of the item to load.</dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name="setQueue"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>setQueue</b>()
+					
+					</div>
+					<div class="description">
+						Stores the current playlist state in the playqueue.
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+						
+						
+
+					
+				
+			
+			
+<!-- ============================== event details ========================= -->		
+			
+			
+			<hr />
+		</div>
+
+		
+<!-- ============================== footer ================================= -->
+		<div class="fineprint" style="clear:both">
+			
+			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Sun Aug 19 2012 12:11:28 GMT-0500 (CDT)
+		</div>
+	</body>
+</html>
diff --git a/public/admin/js/osmplayer/doc/symbols/osmplayer.scroll.html b/public/admin/js/osmplayer/doc/symbols/osmplayer.scroll.html
new file mode 100644
index 0000000000000000000000000000000000000000..7f018d42f10a277bbb52df4856580c746786a4eb
--- /dev/null
+++ b/public/admin/js/osmplayer/doc/symbols/osmplayer.scroll.html
@@ -0,0 +1,743 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+	<head>
+		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+		<meta name="generator" content="JsDoc Toolkit" />
+		
+		<title>JsDoc Reference - osmplayer.scroll</title>
+
+		<style type="text/css">
+			/* default.css */
+body
+{
+	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
+	width: 800px;
+}
+
+.header
+{
+	clear: both;
+	background-color: #ccc;
+	padding: 8px;
+}
+
+h1
+{
+	font-size: 150%;
+	font-weight: bold;
+	padding: 0;
+	margin: 1em 0 0 .3em;
+}
+
+hr
+{
+	border: none 0;
+	border-top: 1px solid #7F8FB1;
+	height: 1px;
+}
+
+pre.code
+{
+	display: block;
+	padding: 8px;
+	border: 1px dashed #ccc;
+}
+
+#index
+{
+	margin-top: 24px;
+	float: left;
+	width: 160px;
+	position: absolute;
+	left: 8px;
+	background-color: #F3F3F3;
+	padding: 8px;
+}
+
+#content
+{
+	margin-left: 190px;
+	width: 600px;
+}
+
+.classList
+{
+	list-style-type: none;
+	padding: 0;
+	margin: 0 0 0 8px;
+	font-family: arial, sans-serif;
+	font-size: 1em;
+	overflow: auto;
+}
+
+.classList li
+{
+	padding: 0;
+	margin: 0 0 8px 0;
+}
+
+.summaryTable { width: 100%; }
+
+h1.classTitle
+{
+	font-size:170%;
+	line-height:130%;
+}
+
+h2 { font-size: 110%; }
+caption, div.sectionTitle
+{
+	background-color: #7F8FB1;
+	color: #fff;
+	font-size:130%;
+	text-align: left;
+	padding: 2px 6px 2px 6px;
+	border: 1px #7F8FB1 solid;
+}
+
+div.sectionTitle { margin-bottom: 8px; }
+.summaryTable thead { display: none; }
+
+.summaryTable td
+{
+	vertical-align: top;
+	padding: 4px;
+	border-bottom: 1px #7F8FB1 solid;
+	border-right: 1px #7F8FB1 solid;
+}
+
+/*col#summaryAttributes {}*/
+.summaryTable td.attributes
+{
+	border-left: 1px #7F8FB1 solid;
+	width: 140px;
+	text-align: right;
+}
+
+td.attributes, .fixedFont
+{
+	line-height: 15px;
+	color: #002EBE;
+	font-family: "Courier New",Courier,monospace;
+	font-size: 13px;
+}
+
+.summaryTable td.nameDescription
+{
+	text-align: left;
+	font-size: 13px;
+	line-height: 15px;
+}
+
+.summaryTable td.nameDescription, .description
+{
+	line-height: 15px;
+	padding: 4px;
+	padding-left: 4px;
+}
+
+.summaryTable { margin-bottom: 8px; }
+
+ul.inheritsList
+{
+	list-style: square;
+	margin-left: 20px;
+	padding-left: 0;
+}
+
+.detailList {
+	margin-left: 20px; 
+	line-height: 15px;
+}
+.detailList dt { margin-left: 20px; }
+
+.detailList .heading
+{
+	font-weight: bold;
+	padding-bottom: 6px;
+	margin-left: 0;
+}
+
+.light, td.attributes, .light a:link, .light a:visited
+{
+	color: #777;
+	font-style: italic;
+}
+
+.fineprint
+{
+	text-align: right;
+	font-size: 10px;
+}
+		</style>
+	</head>
+
+	<body>
+<!-- ============================== header ================================= -->	
+		<!-- begin static/header.html -->
+		<div id="header">
+</div>
+		<!-- end static/header.html -->
+
+<!-- ============================== classes index ============================ -->
+		<div id="index">
+			<!-- begin publish.classesIndex -->
+			<div align="center"><a href="../index.html">Class Index</a>
+| <a href="../files.html">File Index</a></div>
+<hr />
+<h2>Classes</h2>
+<ul class="classList">
+	
+	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
+	
+	<li><a href="../symbols/jQuery.fn.minplayer.html">jQuery.fn.minplayer</a></li>
+	
+	<li><a href="../symbols/jQuery.fn.osmplayer.html">jQuery.fn.osmplayer</a></li>
+	
+	<li><a href="../symbols/minplayer.async.html">minplayer.async</a></li>
+	
+	<li><a href="../symbols/minplayer.compatibility.html">minplayer.compatibility</a></li>
+	
+	<li><a href="../symbols/minplayer.display.html">minplayer.display</a></li>
+	
+	<li><a href="../symbols/minplayer.file.html">minplayer.file</a></li>
+	
+	<li><a href="../symbols/minplayer.flags.html">minplayer.flags</a></li>
+	
+	<li><a href="../symbols/minplayer.image.html">minplayer.image</a></li>
+	
+	<li><a href="../symbols/minplayer.players.base.html">minplayer.players.base</a></li>
+	
+	<li><a href="../symbols/minplayer.players.flash.html">minplayer.players.flash</a></li>
+	
+	<li><a href="../symbols/minplayer.players.html5.html">minplayer.players.html5</a></li>
+	
+	<li><a href="../symbols/minplayer.players.minplayer.html">minplayer.players.minplayer</a></li>
+	
+	<li><a href="../symbols/minplayer.players.vimeo.html">minplayer.players.vimeo</a></li>
+	
+	<li><a href="../symbols/minplayer.players.youtube.html">minplayer.players.youtube</a></li>
+	
+	<li><a href="../symbols/minplayer.plugin.html">minplayer.plugin</a></li>
+	
+	<li><a href="../symbols/osmplayer.html">osmplayer</a></li>
+	
+	<li><a href="../symbols/osmplayer.pager.html">osmplayer.pager</a></li>
+	
+	<li><a href="../symbols/osmplayer.playlist.html">osmplayer.playlist</a></li>
+	
+	<li><a href="../symbols/osmplayer.scroll.html">osmplayer.scroll</a></li>
+	
+	<li><a href="../symbols/osmplayer.teaser.html">osmplayer.teaser</a></li>
+	
+</ul>
+<hr />
+			<!-- end publish.classesIndex -->
+		</div>
+		
+		<div id="content">
+<!-- ============================== class title ============================ -->
+			<h1 class="classTitle">
+				
+				Class osmplayer.scroll
+			</h1>
+
+<!-- ============================== class summary ========================== -->			
+			<p class="description">
+				
+				<br />Extends
+					<a href="../symbols/minplayer.display.html">minplayer.display</a>.<br />
+				
+			
+				This class provides the scroll functionality for the playlists.
+
+We can calculate how the scrollbar controls the playlist using the
+following diagram / equations.
+ ___ ____________
+ |  |            |\
+ |  |    list    | \
+ |  |            |y \
+ |  |            |   \
+ |  |____________|    \ _ _____
+ |  |            |\    | |    |
+ |  |            | \   | |    |
+ |  |            |  \  | |x   |
+ |  |            |   \ | |    |
+ |  |            |    \|_|_   |
+ |  |            |     | | |  |
+ l  |   window   |     | | h  w
+ |  |            |     |_|_|  |
+ |  |            |    /| |    |
+ |  |            |   / | |    |
+ |  |            |  / v| |    |
+ |  |            | /   | |    |
+ |  |____________|/    |_|____|
+ |  |            |    /
+ |  |            |   /
+ |  |            |  /
+ |  |            | /
+ |__|____________|/
+
+ l - The list height.
+ h - Handle Bar height.
+ w - Window height.
+ x - The distance from top of window to the top of the handle.
+ y - The disatnce from the top of the list to the top of the window.
+ v - The distance from bottom of window to the bottom of the handle.
+
+ jQuery UI provides "v".  We already know "l", "h", "w".  We can then
+ calculate the relationship between the scroll bar handle position to the
+ list position using the following equations.
+
+ x = (w - (v + h))
+ y = ((l - w)/(w - h)) * x
+
+  -- or --
+
+ y = ((l - w)/(w - h)) * (w - (v + h))
+
+ We can statically calculate the ((l - w)/(w - h)) as a ratio and use
+ that to speed up calculations as follows.
+
+ ratio = ((l - w)/(w - h));
+
+ So, our translation equations are as follows...
+
+   y = ratio * (w - (v + h))
+   v = w - (h + (y / ratio))
+				
+				
+					<br /><i>Defined in: </i> <a href="../symbols/src/src_osmplayer.scroll.js.html">osmplayer.scroll.js</a>.
+				
+			</p>
+
+<!-- ============================== constructor summary ==================== -->			
+			
+			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class osmplayer.scroll.">
+				<caption>Class Summary</caption>
+				<thead>
+					<tr>
+						<th scope="col">Constructor Attributes</th>
+						<th scope="col">Constructor Name and Description</th>
+					</tr>
+				</thead>
+				<tbody>
+					<tr>
+						<td class="attributes">&nbsp;</td>
+						<td class="nameDescription" >
+							<div class="fixedFont">
+								<b><a href="../symbols/osmplayer.scroll.html#constructor">osmplayer.scroll</a></b>(context, options)
+							</div>
+							<div class="description"></div>
+						</td>
+					</tr>
+				</tbody>
+			</table>
+			
+
+<!-- ============================== properties summary ===================== -->
+			
+				
+				
+				<table class="summaryTable" cellspacing="0" summary="A summary of the fields documented in the class osmplayer.scroll.">
+					<caption>Field Summary</caption>
+					<thead>
+						<tr>
+							<th scope="col">Field Attributes</th>
+							<th scope="col">Field Name and Description</th>
+						</tr>
+					</thead>
+					<tbody>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont">
+								<b><a href="../symbols/osmplayer.scroll.html#constructor">constructor</a></b>
+								</div>
+								<div class="description">Reset the constructor.</div>
+							</td>
+						</tr>
+					
+					</tbody>
+				</table>
+				
+				
+				
+				<dl class="inheritsList">
+				<dt>Fields borrowed from class <a href="../symbols/minplayer.plugin.html">minplayer.plugin</a>: </dt><dd><a href="../symbols/minplayer.plugin.html#context">context</a>, <a href="../symbols/minplayer.plugin.html#lock">lock</a>, <a href="../symbols/minplayer.plugin.html#name">name</a>, <a href="../symbols/minplayer.plugin.html#options">options</a>, <a href="../symbols/minplayer.plugin.html#pluginReady">pluginReady</a>, <a href="../symbols/minplayer.plugin.html#queue">queue</a>, <a href="../symbols/minplayer.plugin.html#triggered">triggered</a></dd>
+				</dl>
+				
+			
+
+<!-- ============================== methods summary ======================== -->
+			
+				
+				
+				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class osmplayer.scroll.">
+					<caption>Method Summary</caption>
+					<thead>
+						<tr>
+							<th scope="col">Method Attributes</th>
+							<th scope="col">Method Name and Description</th>
+						</tr>
+					</thead>
+					<tbody>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/osmplayer.scroll.html#construct">construct</a></b>()
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/osmplayer.scroll.html#getHandlePos">getHandlePos</a></b>(pos)
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/osmplayer.scroll.html#getMousePos">getMousePos</a></b>(event)
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/osmplayer.scroll.html#getPos">getPos</a></b>(handlePos)
+								</div>
+								<div class="description"></div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/osmplayer.scroll.html#onResize">onResize</a></b>()
+								</div>
+								<div class="description">Refresh all the variables that may change.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/osmplayer.scroll.html#refresh">refresh</a></b>()
+								</div>
+								<div class="description">Refreshes the scroll list.</div>
+							</td>
+						</tr>
+					
+					</tbody>
+				</table>
+				
+				
+				
+				<dl class="inheritsList">
+				<dt>Methods borrowed from class <a href="../symbols/minplayer.display.html">minplayer.display</a>: </dt><dd><a href="../symbols/minplayer.display.html#fullscreen">fullscreen</a>, <a href="../symbols/minplayer.display.html#fullScreenElement">fullScreenElement</a>, <a href="../symbols/minplayer.display.html#getDisplay">getDisplay</a>, <a href="../symbols/minplayer.display.html#getElements">getElements</a>, <a href="../symbols/minplayer.display.html#getScaledRect">getScaledRect</a>, <a href="../symbols/minplayer.display.html#isFullScreen">isFullScreen</a>, <a href="../symbols/minplayer.display.html#toggleFullScreen">toggleFullScreen</a></dd><dt>Methods borrowed from class <a href="../symbols/minplayer.plugin.html">minplayer.plugin</a>: </dt><dd><a href="../symbols/minplayer.plugin.html#addPlugin">addPlugin</a>, <a href="../symbols/minplayer.plugin.html#bind">bind</a>, <a href="../symbols/minplayer.plugin.html#checkQueue">checkQueue</a>, <a href="../symbols/minplayer.plugin.html#create">create</a>, <a href="../symbols/minplayer.plugin.html#destroy">destroy</a>, <a href="../symbols/minplayer.plugin.html#get">get</a>, <a href="../symbols/minplayer.plugin.html#isValid">isValid</a>, <a href="../symbols/minplayer.plugin.html#poll">poll</a>, <a href="../symbols/minplayer.plugin.html#ready">ready</a>, <a href="../symbols/minplayer.plugin.html#trigger">trigger</a>, <a href="../symbols/minplayer.plugin.html#unbind">unbind</a></dd>
+				</dl>
+				
+			
+<!-- ============================== events summary ======================== -->
+			
+
+<!-- ============================== constructor details ==================== -->		
+			
+			<div class="details"><a name="constructor"> </a>
+				<div class="sectionTitle">
+					Class Detail
+				</div>
+				
+				<div class="fixedFont">
+						<b>osmplayer.scroll</b>(context, options)
+				</div>
+				
+				<div class="description">
+					
+					
+				</div>
+				
+				
+				
+				
+					
+						<dl class="detailList">
+						<dt class="heading">Parameters:</dt>
+						
+							<dt>
+								<span class="light fixedFont">{object}</span>  <b>context</b>
+								
+							</dt>
+								<dd>The jQuery context.</dd>
+						
+							<dt>
+								<span class="light fixedFont">{object}</span>  <b>options</b>
+								
+							</dt>
+								<dd>This components options.</dd>
+						
+						</dl>
+					
+					
+					
+					
+					
+					
+					
+
+			</div>
+			
+
+<!-- ============================== field details ========================== -->		
+			
+				<div class="sectionTitle">
+					Field Detail
+				</div>
+				
+					<a name="constructor"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>constructor</b>
+					
+					</div>
+					<div class="description">
+						Reset the constructor.
+						
+						
+					</div>
+					
+					
+
+						
+						
+						
+						
+
+					
+				
+			
+
+<!-- ============================== method details ========================= -->		
+			
+				<div class="sectionTitle">
+					Method Detail
+				</div>
+				
+					<a name="construct"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>construct</b>()
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+						
+						
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							
+								<dd><a href="../symbols/minplayer.plugin.html#construct">minplayer.plugin#construct</a></dd>
+							
+							</dl>
+						
+
+					<hr />
+				
+					<a name="getHandlePos"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>getHandlePos</b>(pos)
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<b>pos</b>
+									
+								</dt>
+								<dd></dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name="getMousePos"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>getMousePos</b>(event)
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<b>event</b>
+									
+								</dt>
+								<dd></dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name="getPos"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>getPos</b>(handlePos)
+					
+					</div>
+					<div class="description">
+						
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<b>handlePos</b>
+									
+								</dt>
+								<dd></dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name="onResize"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>onResize</b>()
+					
+					</div>
+					<div class="description">
+						Refresh all the variables that may change.
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name="refresh"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>refresh</b>()
+					
+					</div>
+					<div class="description">
+						Refreshes the scroll list.
+						
+						
+					</div>
+					
+					
+					
+						
+						
+						
+						
+						
+						
+						
+
+					
+				
+			
+			
+<!-- ============================== event details ========================= -->		
+			
+			
+			<hr />
+		</div>
+
+		
+<!-- ============================== footer ================================= -->
+		<div class="fineprint" style="clear:both">
+			
+			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Mon Apr 09 2012 17:30:27 GMT-0700 (PDT)
+		</div>
+	</body>
+</html>
diff --git a/public/admin/js/osmplayer/doc/symbols/osmplayer.teaser.html b/public/admin/js/osmplayer/doc/symbols/osmplayer.teaser.html
new file mode 100644
index 0000000000000000000000000000000000000000..fda2521b295b5ccf2f30f16e196bf5809c1759ff
--- /dev/null
+++ b/public/admin/js/osmplayer/doc/symbols/osmplayer.teaser.html
@@ -0,0 +1,564 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+	<head>
+		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+		<meta name="generator" content="JsDoc Toolkit" />
+		
+		<title>JsDoc Reference - osmplayer.teaser</title>
+
+		<style type="text/css">
+			/* default.css */
+body
+{
+	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
+	width: 800px;
+}
+
+.header
+{
+	clear: both;
+	background-color: #ccc;
+	padding: 8px;
+}
+
+h1
+{
+	font-size: 150%;
+	font-weight: bold;
+	padding: 0;
+	margin: 1em 0 0 .3em;
+}
+
+hr
+{
+	border: none 0;
+	border-top: 1px solid #7F8FB1;
+	height: 1px;
+}
+
+pre.code
+{
+	display: block;
+	padding: 8px;
+	border: 1px dashed #ccc;
+}
+
+#index
+{
+	margin-top: 24px;
+	float: left;
+	width: 160px;
+	position: absolute;
+	left: 8px;
+	background-color: #F3F3F3;
+	padding: 8px;
+}
+
+#content
+{
+	margin-left: 190px;
+	width: 600px;
+}
+
+.classList
+{
+	list-style-type: none;
+	padding: 0;
+	margin: 0 0 0 8px;
+	font-family: arial, sans-serif;
+	font-size: 1em;
+	overflow: auto;
+}
+
+.classList li
+{
+	padding: 0;
+	margin: 0 0 8px 0;
+}
+
+.summaryTable { width: 100%; }
+
+h1.classTitle
+{
+	font-size:170%;
+	line-height:130%;
+}
+
+h2 { font-size: 110%; }
+caption, div.sectionTitle
+{
+	background-color: #7F8FB1;
+	color: #fff;
+	font-size:130%;
+	text-align: left;
+	padding: 2px 6px 2px 6px;
+	border: 1px #7F8FB1 solid;
+}
+
+div.sectionTitle { margin-bottom: 8px; }
+.summaryTable thead { display: none; }
+
+.summaryTable td
+{
+	vertical-align: top;
+	padding: 4px;
+	border-bottom: 1px #7F8FB1 solid;
+	border-right: 1px #7F8FB1 solid;
+}
+
+/*col#summaryAttributes {}*/
+.summaryTable td.attributes
+{
+	border-left: 1px #7F8FB1 solid;
+	width: 140px;
+	text-align: right;
+}
+
+td.attributes, .fixedFont
+{
+	line-height: 15px;
+	color: #002EBE;
+	font-family: "Courier New",Courier,monospace;
+	font-size: 13px;
+}
+
+.summaryTable td.nameDescription
+{
+	text-align: left;
+	font-size: 13px;
+	line-height: 15px;
+}
+
+.summaryTable td.nameDescription, .description
+{
+	line-height: 15px;
+	padding: 4px;
+	padding-left: 4px;
+}
+
+.summaryTable { margin-bottom: 8px; }
+
+ul.inheritsList
+{
+	list-style: square;
+	margin-left: 20px;
+	padding-left: 0;
+}
+
+.detailList {
+	margin-left: 20px; 
+	line-height: 15px;
+}
+.detailList dt { margin-left: 20px; }
+
+.detailList .heading
+{
+	font-weight: bold;
+	padding-bottom: 6px;
+	margin-left: 0;
+}
+
+.light, td.attributes, .light a:link, .light a:visited
+{
+	color: #777;
+	font-style: italic;
+}
+
+.fineprint
+{
+	text-align: right;
+	font-size: 10px;
+}
+		</style>
+	</head>
+
+	<body>
+<!-- ============================== header ================================= -->	
+		<!-- begin static/header.html -->
+		<div id="header">
+</div>
+		<!-- end static/header.html -->
+
+<!-- ============================== classes index ============================ -->
+		<div id="index">
+			<!-- begin publish.classesIndex -->
+			<div align="center"><a href="../index.html">Class Index</a>
+| <a href="../files.html">File Index</a></div>
+<hr />
+<h2>Classes</h2>
+<ul class="classList">
+	
+	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
+	
+	<li><a href="../symbols/jQuery.fn.minplayer.html">jQuery.fn.minplayer</a></li>
+	
+	<li><a href="../symbols/jQuery.fn.osmplayer.html">jQuery.fn.osmplayer</a></li>
+	
+	<li><a href="../symbols/minplayer.async.html">minplayer.async</a></li>
+	
+	<li><a href="../symbols/minplayer.compatibility.html">minplayer.compatibility</a></li>
+	
+	<li><a href="../symbols/minplayer.display.html">minplayer.display</a></li>
+	
+	<li><a href="../symbols/minplayer.file.html">minplayer.file</a></li>
+	
+	<li><a href="../symbols/minplayer.flags.html">minplayer.flags</a></li>
+	
+	<li><a href="../symbols/minplayer.image.html">minplayer.image</a></li>
+	
+	<li><a href="../symbols/minplayer.players.base.html">minplayer.players.base</a></li>
+	
+	<li><a href="../symbols/minplayer.players.flash.html">minplayer.players.flash</a></li>
+	
+	<li><a href="../symbols/minplayer.players.html5.html">minplayer.players.html5</a></li>
+	
+	<li><a href="../symbols/minplayer.players.minplayer.html">minplayer.players.minplayer</a></li>
+	
+	<li><a href="../symbols/minplayer.players.vimeo.html">minplayer.players.vimeo</a></li>
+	
+	<li><a href="../symbols/minplayer.players.youtube.html">minplayer.players.youtube</a></li>
+	
+	<li><a href="../symbols/minplayer.plugin.html">minplayer.plugin</a></li>
+	
+	<li><a href="../symbols/osmplayer.html">osmplayer</a></li>
+	
+	<li><a href="../symbols/osmplayer.pager.html">osmplayer.pager</a></li>
+	
+	<li><a href="../symbols/osmplayer.playlist.html">osmplayer.playlist</a></li>
+	
+	<li><a href="../symbols/osmplayer.teaser.html">osmplayer.teaser</a></li>
+	
+</ul>
+<hr />
+			<!-- end publish.classesIndex -->
+		</div>
+		
+		<div id="content">
+<!-- ============================== class title ============================ -->
+			<h1 class="classTitle">
+				
+				Class osmplayer.teaser
+			</h1>
+
+<!-- ============================== class summary ========================== -->			
+			<p class="description">
+				
+				<br />Extends
+					<a href="../symbols/minplayer.display.html">minplayer.display</a>.<br />
+				
+			
+				This class provides teaser functionality.
+				
+				
+					<br /><i>Defined in: </i> <a href="../symbols/src/src_osmplayer.teaser.js.html">osmplayer.teaser.js</a>.
+				
+			</p>
+
+<!-- ============================== constructor summary ==================== -->			
+			
+			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class osmplayer.teaser.">
+				<caption>Class Summary</caption>
+				<thead>
+					<tr>
+						<th scope="col">Constructor Attributes</th>
+						<th scope="col">Constructor Name and Description</th>
+					</tr>
+				</thead>
+				<tbody>
+					<tr>
+						<td class="attributes">&nbsp;</td>
+						<td class="nameDescription" >
+							<div class="fixedFont">
+								<b><a href="../symbols/osmplayer.teaser.html#constructor">osmplayer.teaser</a></b>(context, options)
+							</div>
+							<div class="description"></div>
+						</td>
+					</tr>
+				</tbody>
+			</table>
+			
+
+<!-- ============================== properties summary ===================== -->
+			
+				
+				
+				<table class="summaryTable" cellspacing="0" summary="A summary of the fields documented in the class osmplayer.teaser.">
+					<caption>Field Summary</caption>
+					<thead>
+						<tr>
+							<th scope="col">Field Attributes</th>
+							<th scope="col">Field Name and Description</th>
+						</tr>
+					</thead>
+					<tbody>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont">
+								<b><a href="../symbols/osmplayer.teaser.html#constructor">constructor</a></b>
+								</div>
+								<div class="description">Reset the constructor.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont">
+								<b><a href="../symbols/osmplayer.teaser.html#preview">preview</a></b>
+								</div>
+								<div class="description">The preview image.</div>
+							</td>
+						</tr>
+					
+					</tbody>
+				</table>
+				
+				
+				
+				<dl class="inheritsList">
+				<dt>Fields borrowed from class <a href="../symbols/minplayer.display.html">minplayer.display</a>: </dt><dd><a href="../symbols/minplayer.display.html#onResize">onResize</a></dd><dt>Fields borrowed from class <a href="../symbols/minplayer.plugin.html">minplayer.plugin</a>: </dt><dd><a href="../symbols/minplayer.plugin.html#active">active</a>, <a href="../symbols/minplayer.plugin.html#context">context</a>, <a href="../symbols/minplayer.plugin.html#lock">lock</a>, <a href="../symbols/minplayer.plugin.html#name">name</a>, <a href="../symbols/minplayer.plugin.html#options">options</a>, <a href="../symbols/minplayer.plugin.html#pluginReady">pluginReady</a>, <a href="../symbols/minplayer.plugin.html#queue">queue</a>, <a href="../symbols/minplayer.plugin.html#triggered">triggered</a></dd>
+				</dl>
+				
+			
+
+<!-- ============================== methods summary ======================== -->
+			
+				
+				
+				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class osmplayer.teaser.">
+					<caption>Method Summary</caption>
+					<thead>
+						<tr>
+							<th scope="col">Method Attributes</th>
+							<th scope="col">Method Name and Description</th>
+						</tr>
+					</thead>
+					<tbody>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/osmplayer.teaser.html#select">select</a></b>(selected)
+								</div>
+								<div class="description">Selects the teaser.</div>
+							</td>
+						</tr>
+					
+						<tr>
+							<td class="attributes">&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><b><a href="../symbols/osmplayer.teaser.html#setNode">setNode</a></b>(node)
+								</div>
+								<div class="description">Sets the node.</div>
+							</td>
+						</tr>
+					
+					</tbody>
+				</table>
+				
+				
+				
+				<dl class="inheritsList">
+				<dt>Methods borrowed from class <a href="../symbols/minplayer.display.html">minplayer.display</a>: </dt><dd><a href="../symbols/minplayer.display.html#construct">construct</a>, <a href="../symbols/minplayer.display.html#fullscreen">fullscreen</a>, <a href="../symbols/minplayer.display.html#fullScreenElement">fullScreenElement</a>, <a href="../symbols/minplayer.display.html#getDisplay">getDisplay</a>, <a href="../symbols/minplayer.display.html#getElements">getElements</a>, <a href="../symbols/minplayer.display.html#getScaledRect">getScaledRect</a>, <a href="../symbols/minplayer.display.html#hide">hide</a>, <a href="../symbols/minplayer.display.html#isFullScreen">isFullScreen</a>, <a href="../symbols/minplayer.display.html#onFocus">onFocus</a>, <a href="../symbols/minplayer.display.html#toggleFullScreen">toggleFullScreen</a></dd><dt>Methods borrowed from class <a href="../symbols/minplayer.plugin.html">minplayer.plugin</a>: </dt><dd><a href="../symbols/minplayer.plugin.html#addPlugin">addPlugin</a>, <a href="../symbols/minplayer.plugin.html#bind">bind</a>, <a href="../symbols/minplayer.plugin.html#checkQueue">checkQueue</a>, <a href="../symbols/minplayer.plugin.html#create">create</a>, <a href="../symbols/minplayer.plugin.html#destroy">destroy</a>, <a href="../symbols/minplayer.plugin.html#get">get</a>, <a href="../symbols/minplayer.plugin.html#isValid">isValid</a>, <a href="../symbols/minplayer.plugin.html#poll">poll</a>, <a href="../symbols/minplayer.plugin.html#ready">ready</a>, <a href="../symbols/minplayer.plugin.html#trigger">trigger</a>, <a href="../symbols/minplayer.plugin.html#unbind">unbind</a></dd>
+				</dl>
+				
+			
+<!-- ============================== events summary ======================== -->
+			
+
+<!-- ============================== constructor details ==================== -->		
+			
+			<div class="details"><a name="constructor"> </a>
+				<div class="sectionTitle">
+					Class Detail
+				</div>
+				
+				<div class="fixedFont">
+						<b>osmplayer.teaser</b>(context, options)
+				</div>
+				
+				<div class="description">
+					
+					
+				</div>
+				
+				
+				
+				
+					
+						<dl class="detailList">
+						<dt class="heading">Parameters:</dt>
+						
+							<dt>
+								<span class="light fixedFont">{object}</span>  <b>context</b>
+								
+							</dt>
+								<dd>The jQuery context.</dd>
+						
+							<dt>
+								<span class="light fixedFont">{object}</span>  <b>options</b>
+								
+							</dt>
+								<dd>This components options.</dd>
+						
+						</dl>
+					
+					
+					
+					
+					
+					
+					
+
+			</div>
+			
+
+<!-- ============================== field details ========================== -->		
+			
+				<div class="sectionTitle">
+					Field Detail
+				</div>
+				
+					<a name="constructor"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>constructor</b>
+					
+					</div>
+					<div class="description">
+						Reset the constructor.
+						
+						
+					</div>
+					
+					
+
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name="preview"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>preview</b>
+					
+					</div>
+					<div class="description">
+						The preview image.
+						
+						
+					</div>
+					
+					
+
+						
+						
+						
+						
+
+					
+				
+			
+
+<!-- ============================== method details ========================= -->		
+			
+				<div class="sectionTitle">
+					Method Detail
+				</div>
+				
+					<a name="select"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>select</b>(selected)
+					
+					</div>
+					<div class="description">
+						Selects the teaser.
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<span class="light fixedFont">{boolean}</span> <b>selected</b>
+									
+								</dt>
+								<dd>TRUE if selected, FALSE otherwise.</dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+						
+						
+
+					<hr />
+				
+					<a name="setNode"> </a>
+					<div class="fixedFont">
+					
+					
+					<b>setNode</b>(node)
+					
+					</div>
+					<div class="description">
+						Sets the node.
+						
+						
+					</div>
+					
+					
+					
+						
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+							
+								<dt>
+									<span class="light fixedFont">{object}</span> <b>node</b>
+									
+								</dt>
+								<dd>The node object to set.</dd>
+							
+							</dl>
+						
+						
+						
+						
+						
+						
+						
+
+					
+				
+			
+			
+<!-- ============================== event details ========================= -->		
+			
+			
+			<hr />
+		</div>
+
+		
+<!-- ============================== footer ================================= -->
+		<div class="fineprint" style="clear:both">
+			
+			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Sun Aug 19 2012 12:11:28 GMT-0500 (CDT)
+		</div>
+	</body>
+</html>
diff --git a/public/admin/js/osmplayer/doc/symbols/src/minplayer_src_minplayer.async.js.html b/public/admin/js/osmplayer/doc/symbols/src/minplayer_src_minplayer.async.js.html
new file mode 100644
index 0000000000000000000000000000000000000000..dc698720b2d93d149b5fd3765ff4d0711931b364
--- /dev/null
+++ b/public/admin/js/osmplayer/doc/symbols/src/minplayer_src_minplayer.async.js.html
@@ -0,0 +1,69 @@
+<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
+	.KEYW {color: #933;}
+	.COMM {color: #bbb; font-style: italic;}
+	.NUMB {color: #393;}
+	.STRN {color: #393;}
+	.REGX {color: #339;}
+	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
+	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/** The minplayer namespace. */</span><span class="WHIT">
+<span class='line'>  2</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">minplayer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">minplayer</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>  3</span> 
+<span class='line'>  4</span> </span><span class="COMM">/**
+<span class='line'>  5</span>  * @constructor
+<span class='line'>  6</span>  * @class This class keeps track of asynchronous get requests for certain
+<span class='line'>  7</span>  * variables within the player.
+<span class='line'>  8</span>  */</span><span class="WHIT">
+<span class='line'>  9</span> </span><span class="NAME">minplayer.async</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 10</span> 
+<span class='line'> 11</span> </span><span class="WHIT">  </span><span class="COMM">/** The final value of this asynchronous variable. */</span><span class="WHIT">
+<span class='line'> 12</span> </span><span class="WHIT">  </span><span class="NAME">this.value</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 13</span> 
+<span class='line'> 14</span> </span><span class="WHIT">  </span><span class="COMM">/** The queue of callbacks to call when this value is determined. */</span><span class="WHIT">
+<span class='line'> 15</span> </span><span class="WHIT">  </span><span class="NAME">this.queue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 16</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 17</span> 
+<span class='line'> 18</span> </span><span class="COMM">/**
+<span class='line'> 19</span>  * Retrieve the value of this variable.
+<span class='line'> 20</span>  *
+<span class='line'> 21</span>  * @param {function} callback The function to call when the value is determined.
+<span class='line'> 22</span>  * @param {function} pollValue The poll function to try and get the value every
+<span class='line'> 23</span>  * 1 second if the value is not set.
+<span class='line'> 24</span>  */</span><span class="WHIT">
+<span class='line'> 25</span> </span><span class="NAME">minplayer.async.prototype.get</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">callback</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pollValue</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 26</span> 
+<span class='line'> 27</span> </span><span class="WHIT">  </span><span class="COMM">// If the value is set, then immediately call the callback, otherwise, just</span><span class="WHIT">
+<span class='line'> 28</span> </span><span class="WHIT">  </span><span class="COMM">// add it to the queue when the variable is set.</span><span class="WHIT">
+<span class='line'> 29</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.value</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 30</span> </span><span class="WHIT">    </span><span class="NAME">callback</span><span class="PUNC">(</span><span class="NAME">this.value</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 31</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 32</span> </span><span class="WHIT">  </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 33</span> 
+<span class='line'> 34</span> </span><span class="WHIT">    </span><span class="COMM">// Add this callback to the queue.</span><span class="WHIT">
+<span class='line'> 35</span> </span><span class="WHIT">    </span><span class="NAME">this.queue.push</span><span class="PUNC">(</span><span class="NAME">callback</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 36</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 37</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 38</span> 
+<span class='line'> 39</span> </span><span class="COMM">/**
+<span class='line'> 40</span>  * Sets the value of an asynchronous value.
+<span class='line'> 41</span>  *
+<span class='line'> 42</span>  * @param {void} val The value to set.
+<span class='line'> 43</span>  */</span><span class="WHIT">
+<span class='line'> 44</span> </span><span class="NAME">minplayer.async.prototype.set</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">val</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 45</span> 
+<span class='line'> 46</span> </span><span class="WHIT">  </span><span class="COMM">// Set the value.</span><span class="WHIT">
+<span class='line'> 47</span> </span><span class="WHIT">  </span><span class="NAME">this.value</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">val</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 48</span> 
+<span class='line'> 49</span> </span><span class="WHIT">  </span><span class="COMM">// Get the callback queue length.</span><span class="WHIT">
+<span class='line'> 50</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.queue.length</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 51</span> 
+<span class='line'> 52</span> </span><span class="WHIT">  </span><span class="COMM">// Iterate through all the callbacks and call them.</span><span class="WHIT">
+<span class='line'> 53</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 54</span> </span><span class="WHIT">    </span><span class="KEYW">while</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">--</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 55</span> </span><span class="WHIT">      </span><span class="NAME">this.queue</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">(</span><span class="NAME">val</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 56</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 57</span> 
+<span class='line'> 58</span> </span><span class="WHIT">    </span><span class="COMM">// Reset the queue.</span><span class="WHIT">
+<span class='line'> 59</span> </span><span class="WHIT">    </span><span class="NAME">this.queue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 60</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 61</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 62</span> </span></pre></body></html>
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/doc/symbols/src/minplayer_src_minplayer.compatibility.js.html b/public/admin/js/osmplayer/doc/symbols/src/minplayer_src_minplayer.compatibility.js.html
new file mode 100644
index 0000000000000000000000000000000000000000..c07f5e74165e8d44ffc2333b2c16c1fafd8c161b
--- /dev/null
+++ b/public/admin/js/osmplayer/doc/symbols/src/minplayer_src_minplayer.compatibility.js.html
@@ -0,0 +1,124 @@
+<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
+	.KEYW {color: #933;}
+	.COMM {color: #bbb; font-style: italic;}
+	.NUMB {color: #393;}
+	.STRN {color: #393;}
+	.REGX {color: #339;}
+	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
+	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/** The minplayer namespace. */</span><span class="WHIT">
+<span class='line'>  2</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">minplayer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">minplayer</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>  3</span> 
+<span class='line'>  4</span> </span><span class="COMM">// Private function to check a single element's play type.</span><span class="WHIT">
+<span class='line'>  5</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">checkPlayType</span><span class="PUNC">(</span><span class="NAME">elem</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">playType</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>  6</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">elem.canPlayType</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'function'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>  7</span> </span><span class="WHIT">    </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">playType</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'object'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>  8</span> </span><span class="WHIT">      </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">playType.length</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>  9</span> </span><span class="WHIT">      </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">mimetype</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 10</span> </span><span class="WHIT">      </span><span class="KEYW">while</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">--</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 11</span> </span><span class="WHIT">        </span><span class="NAME">mimetype</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">checkPlayType</span><span class="PUNC">(</span><span class="NAME">elem</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">playType</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 12</span> </span><span class="WHIT">        </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="PUNC">!</span><span class="NAME">mimetype</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 13</span> </span><span class="WHIT">          </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 14</span> </span><span class="WHIT">        </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 15</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 16</span> </span><span class="WHIT">      </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">mimetype</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 17</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 18</span> </span><span class="WHIT">    </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 19</span> </span><span class="WHIT">      </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">canPlay</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">elem.canPlayType</span><span class="PUNC">(</span><span class="NAME">playType</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 20</span> </span><span class="WHIT">      </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="STRN">'no'</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="NAME">canPlay</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="STRN">''</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="NAME">canPlay</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 21</span> </span><span class="WHIT">        </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">playType</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 22</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 23</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 24</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 25</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 26</span> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 27</span> 
+<span class='line'> 28</span> </span><span class="COMM">/**
+<span class='line'> 29</span>  * @constructor
+<span class='line'> 30</span>  * @class This class is used to define the types of media that can be played
+<span class='line'> 31</span>  * within the browser.
+<span class='line'> 32</span>  * &lt;p>
+<span class='line'> 33</span>  * &lt;strong>Usage:&lt;/strong>
+<span class='line'> 34</span>  * &lt;pre>&lt;code>
+<span class='line'> 35</span>  *   var playTypes = new minplayer.compatibility();
+<span class='line'> 36</span>  *
+<span class='line'> 37</span>  *   if (playTypes.videoOGG) {
+<span class='line'> 38</span>  *     console.log("This browser can play OGG video");
+<span class='line'> 39</span>  *   }
+<span class='line'> 40</span>  *
+<span class='line'> 41</span>  *   if (playTypes.videoH264) {
+<span class='line'> 42</span>  *     console.log("This browser can play H264 video");
+<span class='line'> 43</span>  *   }
+<span class='line'> 44</span>  *
+<span class='line'> 45</span>  *   if (playTypes.videoWEBM) {
+<span class='line'> 46</span>  *     console.log("This browser can play WebM video");
+<span class='line'> 47</span>  *   }
+<span class='line'> 48</span>  *
+<span class='line'> 49</span>  *   if (playTypes.audioOGG) {
+<span class='line'> 50</span>  *     console.log("This browser can play OGG audio");
+<span class='line'> 51</span>  *   }
+<span class='line'> 52</span>  *
+<span class='line'> 53</span>  *   if (playTypes.audioMP3) {
+<span class='line'> 54</span>  *     console.log("This browser can play MP3 audio");
+<span class='line'> 55</span>  *   }
+<span class='line'> 56</span>  *
+<span class='line'> 57</span>  *   if (playTypes.audioMP4) {
+<span class='line'> 58</span>  *     console.log("This browser can play MP4 audio");
+<span class='line'> 59</span>  *   }
+<span class='line'> 60</span>  * &lt;/code>&lt;/pre>
+<span class='line'> 61</span>  */</span><span class="WHIT">
+<span class='line'> 62</span> </span><span class="NAME">minplayer.compatibility</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 63</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">elem</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 64</span> 
+<span class='line'> 65</span> </span><span class="WHIT">  </span><span class="COMM">// Create a video element.</span><span class="WHIT">
+<span class='line'> 66</span> </span><span class="WHIT">  </span><span class="NAME">elem</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">document.createElement</span><span class="PUNC">(</span><span class="STRN">'video'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 67</span> 
+<span class='line'> 68</span> </span><span class="WHIT">  </span><span class="COMM">/** Can play OGG video */</span><span class="WHIT">
+<span class='line'> 69</span> </span><span class="WHIT">  </span><span class="NAME">this.videoOGG</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">checkPlayType</span><span class="PUNC">(</span><span class="NAME">elem</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'video/ogg'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 70</span> 
+<span class='line'> 71</span> </span><span class="WHIT">  </span><span class="COMM">/** Can play H264 video */</span><span class="WHIT">
+<span class='line'> 72</span> </span><span class="WHIT">  </span><span class="NAME">this.videoH264</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">checkPlayType</span><span class="PUNC">(</span><span class="NAME">elem</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="WHIT">
+<span class='line'> 73</span> </span><span class="WHIT">    </span><span class="STRN">'video/mp4'</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 74</span> </span><span class="WHIT">    </span><span class="STRN">'video/h264'</span><span class="WHIT">
+<span class='line'> 75</span> </span><span class="WHIT">  </span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 76</span> 
+<span class='line'> 77</span> </span><span class="WHIT">  </span><span class="COMM">/** Can play WEBM video */</span><span class="WHIT">
+<span class='line'> 78</span> </span><span class="WHIT">  </span><span class="NAME">this.videoWEBM</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">checkPlayType</span><span class="PUNC">(</span><span class="NAME">elem</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="WHIT">
+<span class='line'> 79</span> </span><span class="WHIT">    </span><span class="STRN">'video/x-webm'</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 80</span> </span><span class="WHIT">    </span><span class="STRN">'video/webm'</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 81</span> </span><span class="WHIT">    </span><span class="STRN">'application/octet-stream'</span><span class="WHIT">
+<span class='line'> 82</span> </span><span class="WHIT">  </span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 83</span> 
+<span class='line'> 84</span> </span><span class="WHIT">  </span><span class="COMM">// Create an audio element.</span><span class="WHIT">
+<span class='line'> 85</span> </span><span class="WHIT">  </span><span class="NAME">elem</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">document.createElement</span><span class="PUNC">(</span><span class="STRN">'audio'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 86</span> 
+<span class='line'> 87</span> </span><span class="WHIT">  </span><span class="COMM">/** Can play audio OGG */</span><span class="WHIT">
+<span class='line'> 88</span> </span><span class="WHIT">  </span><span class="NAME">this.audioOGG</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">checkPlayType</span><span class="PUNC">(</span><span class="NAME">elem</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'audio/ogg'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 89</span> 
+<span class='line'> 90</span> </span><span class="WHIT">  </span><span class="COMM">/** Can play audio MP3 */</span><span class="WHIT">
+<span class='line'> 91</span> </span><span class="WHIT">  </span><span class="NAME">this.audioMP3</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">checkPlayType</span><span class="PUNC">(</span><span class="NAME">elem</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'audio/mpeg'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 92</span> 
+<span class='line'> 93</span> </span><span class="WHIT">  </span><span class="COMM">/** Can play audio MP4 */</span><span class="WHIT">
+<span class='line'> 94</span> </span><span class="WHIT">  </span><span class="NAME">this.audioMP4</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">checkPlayType</span><span class="PUNC">(</span><span class="NAME">elem</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'audio/mp4'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 95</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 96</span> 
+<span class='line'> 97</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">minplayer.playTypes</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 98</span> 
+<span class='line'> 99</span> </span><span class="WHIT">  </span><span class="COMM">/** The compatible playtypes for this browser. */</span><span class="WHIT">
+<span class='line'>100</span> </span><span class="WHIT">  </span><span class="NAME">minplayer.playTypes</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">minplayer.compatibility</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>101</span> 
+<span class='line'>102</span> </span><span class="WHIT">  </span><span class="COMM">/** See if we are an android device. */</span><span class="WHIT">
+<span class='line'>103</span> </span><span class="WHIT">  </span><span class="NAME">minplayer.isAndroid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="REGX">/android/gi</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">test</span><span class="PUNC">(</span><span class="NAME">navigator.appVersion</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>104</span> 
+<span class='line'>105</span> </span><span class="WHIT">  </span><span class="COMM">/** See if we are an iOS device. */</span><span class="WHIT">
+<span class='line'>106</span> </span><span class="WHIT">  </span><span class="NAME">minplayer.isIDevice</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="REGX">/iphone|ipad/gi</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">test</span><span class="PUNC">(</span><span class="NAME">navigator.appVersion</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>107</span> 
+<span class='line'>108</span> </span><span class="WHIT">  </span><span class="COMM">/** See if we are a playbook device. */</span><span class="WHIT">
+<span class='line'>109</span> </span><span class="WHIT">  </span><span class="NAME">minplayer.isPlaybook</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="REGX">/playbook/gi</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">test</span><span class="PUNC">(</span><span class="NAME">navigator.appVersion</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>110</span> 
+<span class='line'>111</span> </span><span class="WHIT">  </span><span class="COMM">/** See if we are a touchpad device. */</span><span class="WHIT">
+<span class='line'>112</span> </span><span class="WHIT">  </span><span class="NAME">minplayer.isTouchPad</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="REGX">/hp-tablet/gi</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">test</span><span class="PUNC">(</span><span class="NAME">navigator.appVersion</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>113</span> 
+<span class='line'>114</span> </span><span class="WHIT">  </span><span class="COMM">/** Determine if we have a touchscreen. */</span><span class="WHIT">
+<span class='line'>115</span> </span><span class="WHIT">  </span><span class="NAME">minplayer.hasTouch</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'ontouchstart'</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">window</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">minplayer.isTouchPad</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>116</span> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>117</span> </span></pre></body></html>
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/doc/symbols/src/minplayer_src_minplayer.controller.js.html b/public/admin/js/osmplayer/doc/symbols/src/minplayer_src_minplayer.controller.js.html
new file mode 100644
index 0000000000000000000000000000000000000000..f2b3c82980954a78b3ee1911e93fa16b2a861e80
--- /dev/null
+++ b/public/admin/js/osmplayer/doc/symbols/src/minplayer_src_minplayer.controller.js.html
@@ -0,0 +1,355 @@
+<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
+	.KEYW {color: #933;}
+	.COMM {color: #bbb; font-style: italic;}
+	.NUMB {color: #393;}
+	.STRN {color: #393;}
+	.REGX {color: #339;}
+	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
+	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/** The minplayer namespace. */</span><span class="WHIT">
+<span class='line'>  2</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">minplayer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">minplayer</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>  3</span> 
+<span class='line'>  4</span> </span><span class="COMM">/**
+<span class='line'>  5</span>  * @constructor
+<span class='line'>  6</span>  * @extends minplayer.display
+<span class='line'>  7</span>  * @class This is the base minplayer controller.  Other controllers can derive
+<span class='line'>  8</span>  * from the base and either build on top of it or simply define the elements
+<span class='line'>  9</span>  * that this base controller uses.
+<span class='line'> 10</span>  *
+<span class='line'> 11</span>  * @param {object} context The jQuery context.
+<span class='line'> 12</span>  * @param {object} options This components options.
+<span class='line'> 13</span>  */</span><span class="WHIT">
+<span class='line'> 14</span> </span><span class="NAME">minplayer.controller</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">context</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 15</span> 
+<span class='line'> 16</span> </span><span class="WHIT">  </span><span class="COMM">// Derive from display</span><span class="WHIT">
+<span class='line'> 17</span> </span><span class="WHIT">  </span><span class="NAME">minplayer.display.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'controller'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">context</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 18</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 19</span> 
+<span class='line'> 20</span> </span><span class="COMM">/** Derive from minplayer.display. */</span><span class="WHIT">
+<span class='line'> 21</span> </span><span class="NAME">minplayer.controller.prototype</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">minplayer.display</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 22</span> 
+<span class='line'> 23</span> </span><span class="COMM">/** Reset the constructor. */</span><span class="WHIT">
+<span class='line'> 24</span> </span><span class="NAME">minplayer.controller.prototype.constructor</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">minplayer.controller</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 25</span> 
+<span class='line'> 26</span> </span><span class="COMM">/**
+<span class='line'> 27</span>  * A static function that will format a time value into a string time format.
+<span class='line'> 28</span>  *
+<span class='line'> 29</span>  * @param {integer} time An integer value of time.
+<span class='line'> 30</span>  * @return {string} A string representation of the time.
+<span class='line'> 31</span>  */</span><span class="WHIT">
+<span class='line'> 32</span> </span><span class="NAME">minplayer.formatTime</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">time</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 33</span> </span><span class="WHIT">  </span><span class="NAME">time</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">time</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 34</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">seconds</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">minutes</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">hour</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">timeString</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 35</span> 
+<span class='line'> 36</span> </span><span class="WHIT">  </span><span class="NAME">hour</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Math.floor</span><span class="PUNC">(</span><span class="NAME">time</span><span class="WHIT"> </span><span class="PUNC">/</span><span class="WHIT"> </span><span class="NUMB">3600</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 37</span> </span><span class="WHIT">  </span><span class="NAME">time</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">hour</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NUMB">3600</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 38</span> </span><span class="WHIT">  </span><span class="NAME">minutes</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Math.floor</span><span class="PUNC">(</span><span class="NAME">time</span><span class="WHIT"> </span><span class="PUNC">/</span><span class="WHIT"> </span><span class="NUMB">60</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 39</span> </span><span class="WHIT">  </span><span class="NAME">time</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">minutes</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NUMB">60</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 40</span> </span><span class="WHIT">  </span><span class="NAME">seconds</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Math.floor</span><span class="PUNC">(</span><span class="NAME">time</span><span class="WHIT"> </span><span class="PUNC">%</span><span class="WHIT"> </span><span class="NUMB">60</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 41</span> 
+<span class='line'> 42</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">hour</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 43</span> </span><span class="WHIT">    </span><span class="NAME">timeString</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">String</span><span class="PUNC">(</span><span class="NAME">hour</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 44</span> </span><span class="WHIT">    </span><span class="NAME">timeString</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">':'</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 45</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 46</span> 
+<span class='line'> 47</span> </span><span class="WHIT">  </span><span class="NAME">timeString</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">minutes</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">10</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">String</span><span class="PUNC">(</span><span class="NAME">minutes</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="STRN">'0'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">String</span><span class="PUNC">(</span><span class="NAME">minutes</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 48</span> </span><span class="WHIT">  </span><span class="NAME">timeString</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">':'</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 49</span> </span><span class="WHIT">  </span><span class="NAME">timeString</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">seconds</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">10</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">String</span><span class="PUNC">(</span><span class="NAME">seconds</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="STRN">'0'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">String</span><span class="PUNC">(</span><span class="NAME">seconds</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 50</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="NAME">time</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">timeString</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">units</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 51</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 52</span> 
+<span class='line'> 53</span> </span><span class="COMM">/**
+<span class='line'> 54</span>  * @see minplayer.display#getElements
+<span class='line'> 55</span>  * @return {object} The elements defined by this display.
+<span class='line'> 56</span>  */</span><span class="WHIT">
+<span class='line'> 57</span> </span><span class="NAME">minplayer.controller.prototype.getElements</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 58</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">elements</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">minplayer.display.prototype.getElements.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 59</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">jQuery.extend</span><span class="PUNC">(</span><span class="NAME">elements</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 60</span> </span><span class="WHIT">    </span><span class="NAME">play</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 61</span> </span><span class="WHIT">    </span><span class="NAME">pause</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 62</span> </span><span class="WHIT">    </span><span class="NAME">fullscreen</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 63</span> </span><span class="WHIT">    </span><span class="NAME">seek</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 64</span> </span><span class="WHIT">    </span><span class="NAME">progress</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 65</span> </span><span class="WHIT">    </span><span class="NAME">volume</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 66</span> </span><span class="WHIT">    </span><span class="NAME">timer</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="WHIT">
+<span class='line'> 67</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 68</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 69</span> 
+<span class='line'> 70</span> </span><span class="COMM">/**
+<span class='line'> 71</span>  * @see minplayer.plugin#construct
+<span class='line'> 72</span>  */</span><span class="WHIT">
+<span class='line'> 73</span> </span><span class="NAME">minplayer.controller.prototype.construct</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 74</span> 
+<span class='line'> 75</span> </span><span class="WHIT">  </span><span class="COMM">// Call the minplayer plugin constructor.</span><span class="WHIT">
+<span class='line'> 76</span> </span><span class="WHIT">  </span><span class="NAME">minplayer.display.prototype.construct.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 77</span> 
+<span class='line'> 78</span> </span><span class="WHIT">  </span><span class="COMM">// Set the plugin name within the options.</span><span class="WHIT">
+<span class='line'> 79</span> </span><span class="WHIT">  </span><span class="NAME">this.options.pluginName</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'controller'</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 80</span> 
+<span class='line'> 81</span> </span><span class="WHIT">  </span><span class="COMM">// Keep track of if we are dragging...</span><span class="WHIT">
+<span class='line'> 82</span> </span><span class="WHIT">  </span><span class="NAME">this.dragging</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 83</span> 
+<span class='line'> 84</span> </span><span class="WHIT">  </span><span class="COMM">// Keep track of the current volume.</span><span class="WHIT">
+<span class='line'> 85</span> </span><span class="WHIT">  </span><span class="NAME">this.vol</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 86</span> 
+<span class='line'> 87</span> </span><span class="WHIT">  </span><span class="COMM">// If they have a seek bar.</span><span class="WHIT">
+<span class='line'> 88</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.elements.seek</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 89</span> 
+<span class='line'> 90</span> </span><span class="WHIT">    </span><span class="COMM">// Create the seek bar slider control.</span><span class="WHIT">
+<span class='line'> 91</span> </span><span class="WHIT">    </span><span class="NAME">this.seekBar</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.elements.seek.slider</span><span class="PUNC">(</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 92</span> </span><span class="WHIT">      </span><span class="NAME">range</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'min'</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 93</span> </span><span class="WHIT">      </span><span class="NAME">create</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">event</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ui</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 94</span> </span><span class="WHIT">        </span><span class="NAME">jQuery</span><span class="PUNC">(</span><span class="STRN">'.ui-slider-range'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">event.target</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">addClass</span><span class="PUNC">(</span><span class="STRN">'ui-state-active'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 95</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 96</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 97</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 98</span> 
+<span class='line'> 99</span> </span><span class="WHIT">  </span><span class="COMM">// If they have a volume bar.</span><span class="WHIT">
+<span class='line'>100</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.elements.volume</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>101</span> 
+<span class='line'>102</span> </span><span class="WHIT">    </span><span class="COMM">// Create the volume bar slider control.</span><span class="WHIT">
+<span class='line'>103</span> </span><span class="WHIT">    </span><span class="NAME">this.volumeBar</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.elements.volume.slider</span><span class="PUNC">(</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>104</span> </span><span class="WHIT">      </span><span class="NAME">range</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'min'</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>105</span> </span><span class="WHIT">      </span><span class="NAME">orientation</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'vertical'</span><span class="WHIT">
+<span class='line'>106</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>107</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>108</span> 
+<span class='line'>109</span> </span><span class="WHIT">  </span><span class="COMM">// Get the player plugin.</span><span class="WHIT">
+<span class='line'>110</span> </span><span class="WHIT">  </span><span class="NAME">this.get</span><span class="PUNC">(</span><span class="STRN">'player'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">player</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>111</span> 
+<span class='line'>112</span> </span><span class="WHIT">    </span><span class="COMM">// If they have a fullscreen button.</span><span class="WHIT">
+<span class='line'>113</span> </span><span class="WHIT">    </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.elements.fullscreen</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>114</span> 
+<span class='line'>115</span> </span><span class="WHIT">      </span><span class="COMM">// Bind to the click event.</span><span class="WHIT">
+<span class='line'>116</span> </span><span class="WHIT">      </span><span class="NAME">minplayer.click</span><span class="PUNC">(</span><span class="NAME">this.elements.fullscreen.unbind</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>117</span> </span><span class="WHIT">        </span><span class="NAME">player.toggleFullScreen</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>118</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">css</span><span class="PUNC">(</span><span class="PUNC">{</span><span class="STRN">'pointer'</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'hand'</span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>119</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>120</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>121</span> 
+<span class='line'>122</span> </span><span class="WHIT">  </span><span class="COMM">// Get the media plugin.</span><span class="WHIT">
+<span class='line'>123</span> </span><span class="WHIT">  </span><span class="NAME">this.get</span><span class="PUNC">(</span><span class="STRN">'media'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">media</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>124</span> 
+<span class='line'>125</span> </span><span class="WHIT">    </span><span class="COMM">// Only bind if this player does not have its own play loader.</span><span class="WHIT">
+<span class='line'>126</span> </span><span class="WHIT">    </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">media.hasController</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>127</span> 
+<span class='line'>128</span> </span><span class="WHIT">      </span><span class="COMM">// If they have a pause button</span><span class="WHIT">
+<span class='line'>129</span> </span><span class="WHIT">      </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.elements.pause</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>130</span> 
+<span class='line'>131</span> </span><span class="WHIT">        </span><span class="COMM">// Bind to the click on this button.</span><span class="WHIT">
+<span class='line'>132</span> </span><span class="WHIT">        </span><span class="NAME">minplayer.click</span><span class="PUNC">(</span><span class="NAME">this.elements.pause.unbind</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">controller</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>133</span> </span><span class="WHIT">          </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">event</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>134</span> </span><span class="WHIT">            </span><span class="NAME">event.preventDefault</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>135</span> </span><span class="WHIT">            </span><span class="NAME">controller.playPause</span><span class="PUNC">(</span><span class="KEYW">false</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">media</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>136</span> </span><span class="WHIT">          </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>137</span> </span><span class="WHIT">        </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>138</span> 
+<span class='line'>139</span> </span><span class="WHIT">        </span><span class="COMM">// Bind to the pause event of the media.</span><span class="WHIT">
+<span class='line'>140</span> </span><span class="WHIT">        </span><span class="NAME">media.bind</span><span class="PUNC">(</span><span class="STRN">'pause'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">controller</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>141</span> </span><span class="WHIT">          </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">event</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>142</span> </span><span class="WHIT">            </span><span class="NAME">controller.setPlayPause</span><span class="PUNC">(</span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>143</span> </span><span class="WHIT">          </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>144</span> </span><span class="WHIT">        </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>145</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>146</span> 
+<span class='line'>147</span> </span><span class="WHIT">      </span><span class="COMM">// If they have a play button</span><span class="WHIT">
+<span class='line'>148</span> </span><span class="WHIT">      </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.elements.play</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>149</span> 
+<span class='line'>150</span> </span><span class="WHIT">        </span><span class="COMM">// Bind to the click on this button.</span><span class="WHIT">
+<span class='line'>151</span> </span><span class="WHIT">        </span><span class="NAME">minplayer.click</span><span class="PUNC">(</span><span class="NAME">this.elements.play.unbind</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">controller</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>152</span> </span><span class="WHIT">          </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">event</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>153</span> </span><span class="WHIT">            </span><span class="NAME">event.preventDefault</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>154</span> </span><span class="WHIT">            </span><span class="NAME">controller.playPause</span><span class="PUNC">(</span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">media</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>155</span> </span><span class="WHIT">          </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>156</span> </span><span class="WHIT">        </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>157</span> 
+<span class='line'>158</span> </span><span class="WHIT">        </span><span class="COMM">// Bind to the play event of the media.</span><span class="WHIT">
+<span class='line'>159</span> </span><span class="WHIT">        </span><span class="NAME">media.bind</span><span class="PUNC">(</span><span class="STRN">'playing'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">controller</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>160</span> </span><span class="WHIT">          </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">event</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>161</span> </span><span class="WHIT">            </span><span class="NAME">controller.setPlayPause</span><span class="PUNC">(</span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>162</span> </span><span class="WHIT">          </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>163</span> </span><span class="WHIT">        </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>164</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>165</span> 
+<span class='line'>166</span> </span><span class="WHIT">      </span><span class="COMM">// If they have a duration, then trigger on duration change.</span><span class="WHIT">
+<span class='line'>167</span> </span><span class="WHIT">      </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.elements.duration</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>168</span> 
+<span class='line'>169</span> </span><span class="WHIT">        </span><span class="COMM">// Bind to the duration change event.</span><span class="WHIT">
+<span class='line'>170</span> </span><span class="WHIT">        </span><span class="NAME">media.bind</span><span class="PUNC">(</span><span class="STRN">'durationchange'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">controller</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>171</span> </span><span class="WHIT">          </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">event</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>172</span> </span><span class="WHIT">            </span><span class="NAME">controller.setTimeString</span><span class="PUNC">(</span><span class="STRN">'duration'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data.duration</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>173</span> </span><span class="WHIT">          </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>174</span> </span><span class="WHIT">        </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>175</span> 
+<span class='line'>176</span> </span><span class="WHIT">        </span><span class="COMM">// Set the timestring to the duration.</span><span class="WHIT">
+<span class='line'>177</span> </span><span class="WHIT">        </span><span class="NAME">media.getDuration</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">controller</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>178</span> </span><span class="WHIT">          </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">duration</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>179</span> </span><span class="WHIT">            </span><span class="NAME">controller.setTimeString</span><span class="PUNC">(</span><span class="STRN">'duration'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">duration</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>180</span> </span><span class="WHIT">          </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>181</span> </span><span class="WHIT">        </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>182</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>183</span> 
+<span class='line'>184</span> </span><span class="WHIT">      </span><span class="COMM">// If they have a progress element.</span><span class="WHIT">
+<span class='line'>185</span> </span><span class="WHIT">      </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.elements.progress</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>186</span> 
+<span class='line'>187</span> </span><span class="WHIT">        </span><span class="COMM">// Bind to the progress event.</span><span class="WHIT">
+<span class='line'>188</span> </span><span class="WHIT">        </span><span class="NAME">media.bind</span><span class="PUNC">(</span><span class="STRN">'progress'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">controller</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>189</span> </span><span class="WHIT">          </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">event</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>190</span> </span><span class="WHIT">            </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">percent</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">data.total</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">data.loaded</span><span class="WHIT"> </span><span class="PUNC">/</span><span class="WHIT"> </span><span class="NAME">data.total</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NUMB">100</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>191</span> </span><span class="WHIT">            </span><span class="NAME">controller.elements.progress.width</span><span class="PUNC">(</span><span class="NAME">percent</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'%'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>192</span> </span><span class="WHIT">          </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>193</span> </span><span class="WHIT">        </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>194</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>195</span> 
+<span class='line'>196</span> </span><span class="WHIT">      </span><span class="COMM">// If they have a seek bar or timer, bind to the timeupdate.</span><span class="WHIT">
+<span class='line'>197</span> </span><span class="WHIT">      </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.seekBar</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">this.elements.timer</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>198</span> 
+<span class='line'>199</span> </span><span class="WHIT">        </span><span class="COMM">// Bind to the time update event.</span><span class="WHIT">
+<span class='line'>200</span> </span><span class="WHIT">        </span><span class="NAME">media.bind</span><span class="PUNC">(</span><span class="STRN">'timeupdate'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">controller</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>201</span> </span><span class="WHIT">          </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">event</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>202</span> </span><span class="WHIT">            </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">controller.dragging</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>203</span> </span><span class="WHIT">              </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">value</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>204</span> </span><span class="WHIT">              </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">data.duration</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>205</span> </span><span class="WHIT">                </span><span class="NAME">value</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">data.currentTime</span><span class="WHIT"> </span><span class="PUNC">/</span><span class="WHIT"> </span><span class="NAME">data.duration</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NUMB">100</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>206</span> </span><span class="WHIT">              </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>207</span> 
+<span class='line'>208</span> </span><span class="WHIT">              </span><span class="COMM">// Update the seek bar if it exists.</span><span class="WHIT">
+<span class='line'>209</span> </span><span class="WHIT">              </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">controller.seekBar</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>210</span> </span><span class="WHIT">                </span><span class="NAME">controller.seekBar.slider</span><span class="PUNC">(</span><span class="STRN">'option'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'value'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">value</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>211</span> </span><span class="WHIT">              </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>212</span> 
+<span class='line'>213</span> </span><span class="WHIT">              </span><span class="NAME">controller.setTimeString</span><span class="PUNC">(</span><span class="STRN">'timer'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data.currentTime</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>214</span> </span><span class="WHIT">            </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>215</span> </span><span class="WHIT">          </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>216</span> </span><span class="WHIT">        </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>217</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>218</span> 
+<span class='line'>219</span> </span><span class="WHIT">      </span><span class="COMM">// If they have a seekBar element.</span><span class="WHIT">
+<span class='line'>220</span> </span><span class="WHIT">      </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.seekBar</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>221</span> 
+<span class='line'>222</span> </span><span class="WHIT">        </span><span class="COMM">// Register the events for the control bar to control the media.</span><span class="WHIT">
+<span class='line'>223</span> </span><span class="WHIT">        </span><span class="NAME">this.seekBar.slider</span><span class="PUNC">(</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>224</span> </span><span class="WHIT">          </span><span class="NAME">start</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">controller</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>225</span> </span><span class="WHIT">            </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">event</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ui</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>226</span> </span><span class="WHIT">              </span><span class="NAME">controller.dragging</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>227</span> </span><span class="WHIT">            </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>228</span> </span><span class="WHIT">          </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>229</span> </span><span class="WHIT">          </span><span class="NAME">stop</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">controller</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>230</span> </span><span class="WHIT">            </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">event</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ui</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>231</span> </span><span class="WHIT">              </span><span class="NAME">controller.dragging</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>232</span> </span><span class="WHIT">              </span><span class="NAME">media.getDuration</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">duration</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>233</span> </span><span class="WHIT">                </span><span class="NAME">media.seek</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">ui.value</span><span class="WHIT"> </span><span class="PUNC">/</span><span class="WHIT"> </span><span class="NUMB">100</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NAME">duration</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>234</span> </span><span class="WHIT">              </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>235</span> </span><span class="WHIT">            </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>236</span> </span><span class="WHIT">          </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>237</span> </span><span class="WHIT">          </span><span class="NAME">slide</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">controller</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>238</span> </span><span class="WHIT">            </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">event</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ui</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>239</span> </span><span class="WHIT">              </span><span class="NAME">media.getDuration</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">duration</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>240</span> </span><span class="WHIT">                </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">time</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ui.value</span><span class="WHIT"> </span><span class="PUNC">/</span><span class="WHIT"> </span><span class="NUMB">100</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NAME">duration</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>241</span> </span><span class="WHIT">                </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">controller.dragging</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>242</span> </span><span class="WHIT">                  </span><span class="NAME">media.seek</span><span class="PUNC">(</span><span class="NAME">time</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>243</span> </span><span class="WHIT">                </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>244</span> </span><span class="WHIT">                </span><span class="NAME">controller.setTimeString</span><span class="PUNC">(</span><span class="STRN">'timer'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">time</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>245</span> </span><span class="WHIT">              </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>246</span> </span><span class="WHIT">            </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>247</span> </span><span class="WHIT">          </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="WHIT">
+<span class='line'>248</span> </span><span class="WHIT">        </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>249</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>250</span> 
+<span class='line'>251</span> </span><span class="WHIT">      </span><span class="COMM">// Setup the mute button.</span><span class="WHIT">
+<span class='line'>252</span> </span><span class="WHIT">      </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.elements.mute</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>253</span> </span><span class="WHIT">        </span><span class="NAME">minplayer.click</span><span class="PUNC">(</span><span class="NAME">this.elements.mute</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">controller</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>254</span> </span><span class="WHIT">          </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">event</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>255</span> </span><span class="WHIT">            </span><span class="NAME">event.preventDefault</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>256</span> </span><span class="WHIT">            </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">value</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">controller.volumeBar.slider</span><span class="PUNC">(</span><span class="STRN">'option'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'value'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>257</span> </span><span class="WHIT">            </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">value</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>258</span> </span><span class="WHIT">              </span><span class="NAME">controller.vol</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">value</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>259</span> </span><span class="WHIT">              </span><span class="NAME">controller.volumeBar.slider</span><span class="PUNC">(</span><span class="STRN">'option'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'value'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>260</span> </span><span class="WHIT">              </span><span class="NAME">media.setVolume</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>261</span> </span><span class="WHIT">            </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>262</span> </span><span class="WHIT">            </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>263</span> </span><span class="WHIT">              </span><span class="NAME">controller.volumeBar.slider</span><span class="PUNC">(</span><span class="STRN">'option'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'value'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">controller.vol</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>264</span> </span><span class="WHIT">              </span><span class="NAME">media.setVolume</span><span class="PUNC">(</span><span class="NAME">controller.vol</span><span class="WHIT"> </span><span class="PUNC">/</span><span class="WHIT"> </span><span class="NUMB">100</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>265</span> </span><span class="WHIT">            </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>266</span> </span><span class="WHIT">          </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>267</span> </span><span class="WHIT">        </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>268</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>269</span> 
+<span class='line'>270</span> </span><span class="WHIT">      </span><span class="COMM">// Setup the volume bar.</span><span class="WHIT">
+<span class='line'>271</span> </span><span class="WHIT">      </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.volumeBar</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>272</span> 
+<span class='line'>273</span> </span><span class="WHIT">        </span><span class="COMM">// Create the slider.</span><span class="WHIT">
+<span class='line'>274</span> </span><span class="WHIT">        </span><span class="NAME">this.volumeBar.slider</span><span class="PUNC">(</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>275</span> </span><span class="WHIT">          </span><span class="NAME">slide</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">event</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ui</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>276</span> </span><span class="WHIT">            </span><span class="NAME">media.setVolume</span><span class="PUNC">(</span><span class="NAME">ui.value</span><span class="WHIT"> </span><span class="PUNC">/</span><span class="WHIT"> </span><span class="NUMB">100</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>277</span> </span><span class="WHIT">          </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>278</span> </span><span class="WHIT">        </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>279</span> 
+<span class='line'>280</span> </span><span class="WHIT">        </span><span class="NAME">media.bind</span><span class="PUNC">(</span><span class="STRN">'volumeupdate'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">controller</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>281</span> </span><span class="WHIT">          </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">event</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">vol</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>282</span> </span><span class="WHIT">            </span><span class="NAME">controller.volumeBar.slider</span><span class="PUNC">(</span><span class="STRN">'option'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'value'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">vol</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NUMB">100</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>283</span> </span><span class="WHIT">          </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>284</span> </span><span class="WHIT">        </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>285</span> 
+<span class='line'>286</span> </span><span class="WHIT">        </span><span class="COMM">// Set the volume to match that of the player.</span><span class="WHIT">
+<span class='line'>287</span> </span><span class="WHIT">        </span><span class="NAME">media.getVolume</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">controller</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>288</span> </span><span class="WHIT">          </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">vol</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>289</span> </span><span class="WHIT">            </span><span class="NAME">controller.volumeBar.slider</span><span class="PUNC">(</span><span class="STRN">'option'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'value'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">vol</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NUMB">100</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>290</span> </span><span class="WHIT">          </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>291</span> </span><span class="WHIT">        </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>292</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>293</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>294</span> </span><span class="WHIT">    </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>295</span> 
+<span class='line'>296</span> </span><span class="WHIT">      </span><span class="COMM">// Hide this controller.</span><span class="WHIT">
+<span class='line'>297</span> </span><span class="WHIT">      </span><span class="NAME">this.hide</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>298</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>299</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>300</span> 
+<span class='line'>301</span> </span><span class="WHIT">  </span><span class="COMM">// We are now ready.</span><span class="WHIT">
+<span class='line'>302</span> </span><span class="WHIT">  </span><span class="NAME">this.ready</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>303</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>304</span> 
+<span class='line'>305</span> </span><span class="COMM">/**
+<span class='line'>306</span>  * Sets the play and pause state of the control bar.
+<span class='line'>307</span>  *
+<span class='line'>308</span>  * @param {boolean} state TRUE - Show Play, FALSE - Show Pause.
+<span class='line'>309</span>  */</span><span class="WHIT">
+<span class='line'>310</span> </span><span class="NAME">minplayer.controller.prototype.setPlayPause</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">state</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>311</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">css</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>312</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.elements.play</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>313</span> </span><span class="WHIT">    </span><span class="NAME">css</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">state</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="STRN">'inherit'</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'none'</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>314</span> </span><span class="WHIT">    </span><span class="NAME">this.elements.play.css</span><span class="PUNC">(</span><span class="STRN">'display'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">css</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>315</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>316</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.elements.pause</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>317</span> </span><span class="WHIT">    </span><span class="NAME">css</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">state</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="STRN">'none'</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'inherit'</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>318</span> </span><span class="WHIT">    </span><span class="NAME">this.elements.pause.css</span><span class="PUNC">(</span><span class="STRN">'display'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">css</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>319</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>320</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>321</span> 
+<span class='line'>322</span> </span><span class="COMM">/**
+<span class='line'>323</span>  * Plays or pauses the media.
+<span class='line'>324</span>  *
+<span class='line'>325</span>  * @param {bool} state true => play, false => pause.
+<span class='line'>326</span>  * @param {object} media The media player object.
+<span class='line'>327</span>  */</span><span class="WHIT">
+<span class='line'>328</span> </span><span class="NAME">minplayer.controller.prototype.playPause</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">state</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">media</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>329</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">type</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">state</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="STRN">'play'</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'pause'</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>330</span> </span><span class="WHIT">  </span><span class="NAME">this.display.trigger</span><span class="PUNC">(</span><span class="NAME">type</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>331</span> </span><span class="WHIT">  </span><span class="NAME">this.setPlayPause</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">state</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>332</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">media</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>333</span> </span><span class="WHIT">    </span><span class="NAME">media</span><span class="PUNC">[</span><span class="NAME">type</span><span class="PUNC">]</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>334</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>335</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>336</span> 
+<span class='line'>337</span> </span><span class="COMM">/**
+<span class='line'>338</span>  * Sets the time string on the control bar.
+<span class='line'>339</span>  *
+<span class='line'>340</span>  * @param {string} element The name of the element to set.
+<span class='line'>341</span>  * @param {number} time The total time amount to set.
+<span class='line'>342</span>  */</span><span class="WHIT">
+<span class='line'>343</span> </span><span class="NAME">minplayer.controller.prototype.setTimeString</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">element</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">time</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>344</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.elements</span><span class="PUNC">[</span><span class="NAME">element</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>345</span> </span><span class="WHIT">    </span><span class="NAME">this.elements</span><span class="PUNC">[</span><span class="NAME">element</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">text</span><span class="PUNC">(</span><span class="NAME">minplayer.formatTime</span><span class="PUNC">(</span><span class="NAME">time</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">time</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>346</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>347</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>348</span> </span></pre></body></html>
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/doc/symbols/src/minplayer_src_minplayer.display.js.html b/public/admin/js/osmplayer/doc/symbols/src/minplayer_src_minplayer.display.js.html
new file mode 100644
index 0000000000000000000000000000000000000000..7ac9da37e29c9cb4ba39f42f42de9753e7ae6bb4
--- /dev/null
+++ b/public/admin/js/osmplayer/doc/symbols/src/minplayer_src_minplayer.display.js.html
@@ -0,0 +1,400 @@
+<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
+	.KEYW {color: #933;}
+	.COMM {color: #bbb; font-style: italic;}
+	.NUMB {color: #393;}
+	.STRN {color: #393;}
+	.REGX {color: #339;}
+	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
+	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/** The minplayer namespace. */</span><span class="WHIT">
+<span class='line'>  2</span> </span><span class="NAME">minplayer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">minplayer</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>  3</span> 
+<span class='line'>  4</span> </span><span class="COMM">/**
+<span class='line'>  5</span>  * @constructor
+<span class='line'>  6</span>  * @extends minplayer.plugin
+<span class='line'>  7</span>  * @class Base class used to provide the display and options for any component
+<span class='line'>  8</span>  * deriving from this class.  Components who derive are expected to provide
+<span class='line'>  9</span>  * the elements that they define by implementing the getElements method.
+<span class='line'> 10</span>  *
+<span class='line'> 11</span>  * @param {string} name The name of this plugin.
+<span class='line'> 12</span>  * @param {object} context The jQuery context this component resides.
+<span class='line'> 13</span>  * @param {object} options The options for this component.
+<span class='line'> 14</span>  * @param {object} queue The event queue to pass events around.
+<span class='line'> 15</span>  */</span><span class="WHIT">
+<span class='line'> 16</span> </span><span class="NAME">minplayer.display</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">name</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">context</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">queue</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 17</span> 
+<span class='line'> 18</span> </span><span class="WHIT">  </span><span class="COMM">// Derive from plugin</span><span class="WHIT">
+<span class='line'> 19</span> </span><span class="WHIT">  </span><span class="NAME">minplayer.plugin.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">name</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">context</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">queue</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 20</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 21</span> 
+<span class='line'> 22</span> </span><span class="COMM">/** Derive from minplayer.plugin. */</span><span class="WHIT">
+<span class='line'> 23</span> </span><span class="NAME">minplayer.display.prototype</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">minplayer.plugin</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 24</span> 
+<span class='line'> 25</span> </span><span class="COMM">/** Reset the constructor. */</span><span class="WHIT">
+<span class='line'> 26</span> </span><span class="NAME">minplayer.display.prototype.constructor</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">minplayer.display</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 27</span> 
+<span class='line'> 28</span> </span><span class="COMM">/**
+<span class='line'> 29</span>  * Returns the display for this component.
+<span class='line'> 30</span>  *
+<span class='line'> 31</span>  * @return {object} The jQuery context for this display.
+<span class='line'> 32</span>  */</span><span class="WHIT">
+<span class='line'> 33</span> </span><span class="NAME">minplayer.display.prototype.getDisplay</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 34</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.context</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 35</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 36</span> 
+<span class='line'> 37</span> </span><span class="COMM">/**
+<span class='line'> 38</span>  * @see minplayer.plugin.construct
+<span class='line'> 39</span>  */</span><span class="WHIT">
+<span class='line'> 40</span> </span><span class="NAME">minplayer.display.prototype.construct</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 41</span> 
+<span class='line'> 42</span> </span><span class="WHIT">  </span><span class="COMM">// Set the display.</span><span class="WHIT">
+<span class='line'> 43</span> </span><span class="WHIT">  </span><span class="NAME">this.display</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getDisplay</span><span class="PUNC">(</span><span class="NAME">this.context</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.options</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 44</span> 
+<span class='line'> 45</span> </span><span class="WHIT">  </span><span class="COMM">// Call the plugin constructor.</span><span class="WHIT">
+<span class='line'> 46</span> </span><span class="WHIT">  </span><span class="NAME">minplayer.plugin.prototype.construct.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 47</span> 
+<span class='line'> 48</span> </span><span class="WHIT">  </span><span class="COMM">// Set the plugin name within the options.</span><span class="WHIT">
+<span class='line'> 49</span> </span><span class="WHIT">  </span><span class="NAME">this.options.pluginName</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'display'</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 50</span> 
+<span class='line'> 51</span> </span><span class="WHIT">  </span><span class="COMM">// Get the display elements.</span><span class="WHIT">
+<span class='line'> 52</span> </span><span class="WHIT">  </span><span class="NAME">this.elements</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getElements</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 53</span> 
+<span class='line'> 54</span> </span><span class="WHIT">  </span><span class="COMM">// Only do this if they allow resize for this display.</span><span class="WHIT">
+<span class='line'> 55</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.onResize</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 56</span> 
+<span class='line'> 57</span> </span><span class="WHIT">    </span><span class="COMM">// Set the resize timeout and this pointer.</span><span class="WHIT">
+<span class='line'> 58</span> </span><span class="WHIT">    </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">resizeTimeout</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 59</span> 
+<span class='line'> 60</span> </span><span class="WHIT">    </span><span class="COMM">// Add a handler to trigger a resize event.</span><span class="WHIT">
+<span class='line'> 61</span> </span><span class="WHIT">    </span><span class="NAME">jQuery</span><span class="PUNC">(</span><span class="NAME">window</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">resize</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">display</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 62</span> </span><span class="WHIT">      </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 63</span> </span><span class="WHIT">        </span><span class="NAME">clearTimeout</span><span class="PUNC">(</span><span class="NAME">resizeTimeout</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 64</span> </span><span class="WHIT">        </span><span class="NAME">resizeTimeout</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">setTimeout</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 65</span> </span><span class="WHIT">          </span><span class="NAME">display.onResize</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 66</span> </span><span class="WHIT">        </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">200</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 67</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 68</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 69</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 70</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 71</span> 
+<span class='line'> 72</span> </span><span class="COMM">/**
+<span class='line'> 73</span>  * Called when the window resizes.
+<span class='line'> 74</span>  */</span><span class="WHIT">
+<span class='line'> 75</span> </span><span class="NAME">minplayer.display.prototype.onResize</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 76</span> 
+<span class='line'> 77</span> </span><span class="COMM">/**
+<span class='line'> 78</span>  * Wrapper around hide that will always not show.
+<span class='line'> 79</span>  *
+<span class='line'> 80</span>  * @param {object} element The element you wish to hide.
+<span class='line'> 81</span>  */</span><span class="WHIT">
+<span class='line'> 82</span> </span><span class="NAME">minplayer.display.prototype.hide</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">element</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 83</span> </span><span class="WHIT">  </span><span class="NAME">element</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">element</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">this.display</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 84</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">element</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 85</span> </span><span class="WHIT">    </span><span class="NAME">element.forceHide</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 86</span> </span><span class="WHIT">    </span><span class="NAME">element.unbind</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">hide</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 87</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 88</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 89</span> 
+<span class='line'> 90</span> </span><span class="COMM">/**
+<span class='line'> 91</span>  * Gets the full screen element.
+<span class='line'> 92</span>  *
+<span class='line'> 93</span>  * @return {object} The display to be used for full screen support.
+<span class='line'> 94</span>  */</span><span class="WHIT">
+<span class='line'> 95</span> </span><span class="NAME">minplayer.display.prototype.fullScreenElement</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 96</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.display</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 97</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 98</span> 
+<span class='line'> 99</span> </span><span class="COMM">/**
+<span class='line'>100</span>  * Fix for the click function in jQuery to be cross platform.
+<span class='line'>101</span>  *
+<span class='line'>102</span>  * @param {object} element The element that will be clicked.
+<span class='line'>103</span>  * @param {function} fn Called when the element is clicked.
+<span class='line'>104</span>  * @return {object} The element that is to be clicked.
+<span class='line'>105</span>  */</span><span class="WHIT">
+<span class='line'>106</span> </span><span class="NAME">minplayer.click</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">element</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">fn</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>107</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">flag</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>108</span> </span><span class="WHIT">  </span><span class="NAME">element</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">jQuery</span><span class="PUNC">(</span><span class="NAME">element</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>109</span> </span><span class="WHIT">  </span><span class="NAME">element.bind</span><span class="PUNC">(</span><span class="STRN">'touchstart click'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">event</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>110</span> </span><span class="WHIT">    </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">flag</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>111</span> </span><span class="WHIT">      </span><span class="NAME">flag</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>112</span> </span><span class="WHIT">      </span><span class="NAME">setTimeout</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>113</span> </span><span class="WHIT">        </span><span class="NAME">flag</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>114</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">100</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>115</span> </span><span class="WHIT">      </span><span class="NAME">fn.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">event</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>116</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>117</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>118</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">element</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>119</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>120</span> 
+<span class='line'>121</span> </span><span class="COMM">/**
+<span class='line'>122</span>  * Determines if the player is in focus or not.
+<span class='line'>123</span>  *
+<span class='line'>124</span>  * @param {boolean} focus If the player is in focus.
+<span class='line'>125</span>  */</span><span class="WHIT">
+<span class='line'>126</span> </span><span class="NAME">minplayer.display.prototype.onFocus</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">focus</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>127</span> </span><span class="WHIT">  </span><span class="NAME">this.hasFocus</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.focus</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">focus</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>128</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>129</span> 
+<span class='line'>130</span> </span><span class="COMM">/** Keep track of all the show hide elements. */</span><span class="WHIT">
+<span class='line'>131</span> </span><span class="NAME">minplayer.showHideElements</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>132</span> 
+<span class='line'>133</span> </span><span class="COMM">/**
+<span class='line'>134</span>  * Show all the show hide elements.
+<span class='line'>135</span>  */</span><span class="WHIT">
+<span class='line'>136</span> </span><span class="NAME">minplayer.showAll</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>137</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">minplayer.showHideElements.length</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>138</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">obj</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>139</span> </span><span class="WHIT">  </span><span class="KEYW">while</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">--</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>140</span> </span><span class="WHIT">    </span><span class="NAME">obj</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">minplayer.showHideElements</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>141</span> </span><span class="WHIT">    </span><span class="NAME">minplayer.showThenHide</span><span class="PUNC">(</span><span class="NAME">obj.element</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">obj.timeout</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">obj.callback</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>142</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>143</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>144</span> 
+<span class='line'>145</span> </span><span class="COMM">/**
+<span class='line'>146</span>  * Stops the whole show then hide from happening.
+<span class='line'>147</span>  *
+<span class='line'>148</span>  * @param {object} element The element you want the showThenHide to stop.
+<span class='line'>149</span>  */</span><span class="WHIT">
+<span class='line'>150</span> </span><span class="NAME">minplayer.stopShowThenHide</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">element</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>151</span> </span><span class="WHIT">  </span><span class="NAME">element</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">jQuery</span><span class="PUNC">(</span><span class="NAME">element</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>152</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">element.showTimer</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>153</span> </span><span class="WHIT">    </span><span class="NAME">clearTimeout</span><span class="PUNC">(</span><span class="NAME">element.showTimer</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>154</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>155</span> </span><span class="WHIT">  </span><span class="NAME">element.stopShowThenHide</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>156</span> </span><span class="WHIT">  </span><span class="NAME">element.shown</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>157</span> </span><span class="WHIT">  </span><span class="NAME">element.show</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>158</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>159</span> 
+<span class='line'>160</span> </span><span class="COMM">/**
+<span class='line'>161</span>  * Called if you would like for your display item to show then hide.
+<span class='line'>162</span>  *
+<span class='line'>163</span>  * @param {object} element The element you would like to hide or show.
+<span class='line'>164</span>  * @param {number} timeout The timeout to hide and show.
+<span class='line'>165</span>  * @param {function} callback Called when something happens.
+<span class='line'>166</span>  */</span><span class="WHIT">
+<span class='line'>167</span> </span><span class="NAME">minplayer.showThenHide</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">element</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">timeout</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">callback</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>168</span> 
+<span class='line'>169</span> </span><span class="WHIT">  </span><span class="COMM">// If no element exists, then just return.</span><span class="WHIT">
+<span class='line'>170</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">element</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>171</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>172</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>173</span> 
+<span class='line'>174</span> </span><span class="WHIT">  </span><span class="COMM">// Ensure we have a timeout.</span><span class="WHIT">
+<span class='line'>175</span> </span><span class="WHIT">  </span><span class="NAME">timeout</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">timeout</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NUMB">5000</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>176</span> 
+<span class='line'>177</span> </span><span class="WHIT">  </span><span class="COMM">// If this has not yet been configured.</span><span class="WHIT">
+<span class='line'>178</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">element.showTimer</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>179</span> </span><span class="WHIT">    </span><span class="NAME">element.shown</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>180</span> </span><span class="WHIT">    </span><span class="NAME">element.stopShowThenHide</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>181</span> 
+<span class='line'>182</span> </span><span class="WHIT">    </span><span class="COMM">// Add this to our showHideElements.</span><span class="WHIT">
+<span class='line'>183</span> </span><span class="WHIT">    </span><span class="NAME">minplayer.showHideElements.push</span><span class="PUNC">(</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>184</span> </span><span class="WHIT">      </span><span class="NAME">element</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">element</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>185</span> </span><span class="WHIT">      </span><span class="NAME">timeout</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">timeout</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>186</span> </span><span class="WHIT">      </span><span class="NAME">callback</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">callback</span><span class="WHIT">
+<span class='line'>187</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>188</span> 
+<span class='line'>189</span> </span><span class="WHIT">    </span><span class="COMM">// Bind to a click event.</span><span class="WHIT">
+<span class='line'>190</span> </span><span class="WHIT">    </span><span class="NAME">minplayer.click</span><span class="PUNC">(</span><span class="NAME">document</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>191</span> </span><span class="WHIT">      </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">element.stopShowThenHide</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>192</span> </span><span class="WHIT">        </span><span class="NAME">minplayer.showThenHide</span><span class="PUNC">(</span><span class="NAME">element</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">timeout</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">callback</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>193</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>194</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>195</span> 
+<span class='line'>196</span> </span><span class="WHIT">    </span><span class="COMM">// Bind to the mousemove event.</span><span class="WHIT">
+<span class='line'>197</span> </span><span class="WHIT">    </span><span class="NAME">jQuery</span><span class="PUNC">(</span><span class="NAME">document</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="STRN">'mousemove'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>198</span> </span><span class="WHIT">      </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">element.stopShowThenHide</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>199</span> </span><span class="WHIT">        </span><span class="NAME">minplayer.showThenHide</span><span class="PUNC">(</span><span class="NAME">element</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">timeout</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">callback</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>200</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>201</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>202</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>203</span> 
+<span class='line'>204</span> </span><span class="WHIT">  </span><span class="COMM">// Clear the timeout, and then setup the show then hide functionality.</span><span class="WHIT">
+<span class='line'>205</span> </span><span class="WHIT">  </span><span class="NAME">clearTimeout</span><span class="PUNC">(</span><span class="NAME">element.showTimer</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>206</span> 
+<span class='line'>207</span> </span><span class="WHIT">  </span><span class="COMM">// Show the display.</span><span class="WHIT">
+<span class='line'>208</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">element.shown</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">element.forceHide</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>209</span> </span><span class="WHIT">    </span><span class="NAME">element.shown</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>210</span> </span><span class="WHIT">    </span><span class="NAME">element.show</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>211</span> </span><span class="WHIT">    </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">callback</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>212</span> </span><span class="WHIT">      </span><span class="NAME">callback</span><span class="PUNC">(</span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>213</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>214</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>215</span> 
+<span class='line'>216</span> </span><span class="WHIT">  </span><span class="COMM">// Set a timer to hide it after the timeout.</span><span class="WHIT">
+<span class='line'>217</span> </span><span class="WHIT">  </span><span class="NAME">element.showTimer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">setTimeout</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>218</span> </span><span class="WHIT">    </span><span class="NAME">element.hide</span><span class="PUNC">(</span><span class="STRN">'slow'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>219</span> </span><span class="WHIT">      </span><span class="NAME">element.shown</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>220</span> </span><span class="WHIT">      </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">callback</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>221</span> </span><span class="WHIT">        </span><span class="NAME">callback</span><span class="PUNC">(</span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>222</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>223</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>224</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">timeout</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>225</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>226</span> 
+<span class='line'>227</span> </span><span class="COMM">/**
+<span class='line'>228</span>  * Make this display element go fullscreen.
+<span class='line'>229</span>  *
+<span class='line'>230</span>  * @param {boolean} full Tell the player to go into fullscreen or not.
+<span class='line'>231</span>  */</span><span class="WHIT">
+<span class='line'>232</span> </span><span class="NAME">minplayer.display.prototype.fullscreen</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">full</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>233</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">isFull</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.isFullScreen</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>234</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">element</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.fullScreenElement</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>235</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">isFull</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">full</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>236</span> </span><span class="WHIT">    </span><span class="NAME">element.removeClass</span><span class="PUNC">(</span><span class="STRN">'fullscreen'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>237</span> </span><span class="WHIT">    </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">screenfull</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>238</span> </span><span class="WHIT">      </span><span class="NAME">screenfull.exit</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>239</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>240</span> </span><span class="WHIT">    </span><span class="NAME">this.trigger</span><span class="PUNC">(</span><span class="STRN">'fullscreen'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>241</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>242</span> </span><span class="WHIT">  </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">isFull</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">full</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>243</span> </span><span class="WHIT">    </span><span class="NAME">element.addClass</span><span class="PUNC">(</span><span class="STRN">'fullscreen'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>244</span> </span><span class="WHIT">    </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">screenfull</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>245</span> </span><span class="WHIT">      </span><span class="NAME">screenfull.request</span><span class="PUNC">(</span><span class="NAME">element</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>246</span> </span><span class="WHIT">      </span><span class="NAME">screenfull.onchange</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">display</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>247</span> </span><span class="WHIT">        </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>248</span> </span><span class="WHIT">          </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">screenfull.isFullscreen</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>249</span> </span><span class="WHIT">            </span><span class="NAME">display.fullscreen</span><span class="PUNC">(</span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>250</span> </span><span class="WHIT">          </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>251</span> </span><span class="WHIT">        </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>252</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>253</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>254</span> </span><span class="WHIT">    </span><span class="NAME">this.trigger</span><span class="PUNC">(</span><span class="STRN">'fullscreen'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>255</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>256</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>257</span> 
+<span class='line'>258</span> </span><span class="COMM">/**
+<span class='line'>259</span>  * Toggle fullscreen.
+<span class='line'>260</span>  */</span><span class="WHIT">
+<span class='line'>261</span> </span><span class="NAME">minplayer.display.prototype.toggleFullScreen</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>262</span> </span><span class="WHIT">  </span><span class="NAME">this.fullscreen</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.isFullScreen</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>263</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>264</span> 
+<span class='line'>265</span> </span><span class="COMM">/**
+<span class='line'>266</span>  * Checks to see if we are in fullscreen mode.
+<span class='line'>267</span>  *
+<span class='line'>268</span>  * @return {boolean} TRUE - fullscreen, FALSE - otherwise.
+<span class='line'>269</span>  */</span><span class="WHIT">
+<span class='line'>270</span> </span><span class="NAME">minplayer.display.prototype.isFullScreen</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>271</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.fullScreenElement</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">hasClass</span><span class="PUNC">(</span><span class="STRN">'fullscreen'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>272</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>273</span> 
+<span class='line'>274</span> </span><span class="COMM">/**
+<span class='line'>275</span>  * Returns a scaled rectangle provided a ratio and the container rect.
+<span class='line'>276</span>  *
+<span class='line'>277</span>  * @param {number} ratio The width/height ratio of what is being scaled.
+<span class='line'>278</span>  * @param {object} rect The bounding rectangle for scaling.
+<span class='line'>279</span>  * @return {object} The Rectangle object of the scaled rectangle.
+<span class='line'>280</span>  */</span><span class="WHIT">
+<span class='line'>281</span> </span><span class="NAME">minplayer.display.prototype.getScaledRect</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">ratio</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">rect</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>282</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">scaledRect</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>283</span> </span><span class="WHIT">  </span><span class="NAME">scaledRect.x</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">rect.x</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">rect.x</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>284</span> </span><span class="WHIT">  </span><span class="NAME">scaledRect.y</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">rect.y</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">rect.y</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>285</span> </span><span class="WHIT">  </span><span class="NAME">scaledRect.width</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">rect.width</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">rect.width</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>286</span> </span><span class="WHIT">  </span><span class="NAME">scaledRect.height</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">rect.height</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">rect.height</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>287</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ratio</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>288</span> </span><span class="WHIT">    </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">rect.width</span><span class="WHIT"> </span><span class="PUNC">/</span><span class="WHIT"> </span><span class="NAME">rect.height</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NAME">ratio</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>289</span> </span><span class="WHIT">      </span><span class="NAME">scaledRect.height</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">rect.height</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>290</span> </span><span class="WHIT">      </span><span class="NAME">scaledRect.width</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Math.floor</span><span class="PUNC">(</span><span class="NAME">rect.height</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NAME">ratio</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>291</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>292</span> </span><span class="WHIT">    </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>293</span> </span><span class="WHIT">      </span><span class="NAME">scaledRect.height</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Math.floor</span><span class="PUNC">(</span><span class="NAME">rect.width</span><span class="WHIT"> </span><span class="PUNC">/</span><span class="WHIT"> </span><span class="NAME">ratio</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>294</span> </span><span class="WHIT">      </span><span class="NAME">scaledRect.width</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">rect.width</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>295</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>296</span> </span><span class="WHIT">    </span><span class="NAME">scaledRect.x</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Math.floor</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">rect.width</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">scaledRect.width</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">/</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>297</span> </span><span class="WHIT">    </span><span class="NAME">scaledRect.y</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Math.floor</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">rect.height</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">scaledRect.height</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">/</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>298</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>299</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">scaledRect</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>300</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>301</span> 
+<span class='line'>302</span> </span><span class="COMM">/**
+<span class='line'>303</span>  * Returns all the jQuery elements that this component uses.
+<span class='line'>304</span>  *
+<span class='line'>305</span>  * @return {object} An object which defines all the jQuery elements that
+<span class='line'>306</span>  * this component uses.
+<span class='line'>307</span>  */</span><span class="WHIT">
+<span class='line'>308</span> </span><span class="NAME">minplayer.display.prototype.getElements</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>309</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>310</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>311</span> 
+<span class='line'>312</span> </span><span class="COMM">/**
+<span class='line'>313</span>  * From https://github.com/sindresorhus/screenfull.js
+<span class='line'>314</span>  */</span><span class="WHIT">
+<span class='line'>315</span> </span><span class="COMM">/*global Element:true*/</span><span class="WHIT">
+<span class='line'>316</span> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">window</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">document</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>317</span> </span><span class="WHIT">  </span><span class="STRN">'use strict'</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>318</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">methods</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>319</span> </span><span class="WHIT">    </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">methodMap</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="WHIT">
+<span class='line'>320</span> </span><span class="WHIT">      </span><span class="PUNC">[</span><span class="WHIT">
+<span class='line'>321</span> </span><span class="WHIT">        </span><span class="STRN">'requestFullscreen'</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>322</span> </span><span class="WHIT">        </span><span class="STRN">'exitFullscreen'</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>323</span> </span><span class="WHIT">        </span><span class="STRN">'fullscreenchange'</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>324</span> </span><span class="WHIT">        </span><span class="STRN">'fullscreen'</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>325</span> </span><span class="WHIT">        </span><span class="STRN">'fullscreenElement'</span><span class="WHIT">
+<span class='line'>326</span> </span><span class="WHIT">      </span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>327</span> </span><span class="WHIT">      </span><span class="PUNC">[</span><span class="WHIT">
+<span class='line'>328</span> </span><span class="WHIT">        </span><span class="STRN">'webkitRequestFullScreen'</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>329</span> </span><span class="WHIT">        </span><span class="STRN">'webkitCancelFullScreen'</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>330</span> </span><span class="WHIT">        </span><span class="STRN">'webkitfullscreenchange'</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>331</span> </span><span class="WHIT">        </span><span class="STRN">'webkitIsFullScreen'</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>332</span> </span><span class="WHIT">        </span><span class="STRN">'webkitCurrentFullScreenElement'</span><span class="WHIT">
+<span class='line'>333</span> </span><span class="WHIT">      </span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>334</span> </span><span class="WHIT">      </span><span class="PUNC">[</span><span class="WHIT">
+<span class='line'>335</span> </span><span class="WHIT">        </span><span class="STRN">'mozRequestFullScreen'</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>336</span> </span><span class="WHIT">        </span><span class="STRN">'mozCancelFullScreen'</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>337</span> </span><span class="WHIT">        </span><span class="STRN">'mozfullscreenchange'</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>338</span> </span><span class="WHIT">        </span><span class="STRN">'mozFullScreen'</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>339</span> </span><span class="WHIT">        </span><span class="STRN">'mozFullScreenElement'</span><span class="WHIT">
+<span class='line'>340</span> </span><span class="WHIT">      </span><span class="PUNC">]</span><span class="WHIT">
+<span class='line'>341</span> </span><span class="WHIT">    </span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>342</span> </span><span class="WHIT">    </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">l</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">methodMap.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">l</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>343</span> </span><span class="WHIT">      </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">methodMap.hasOwnProperty</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>344</span> </span><span class="WHIT">        </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">val</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">methodMap</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>345</span> </span><span class="WHIT">        </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">val</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">document</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>346</span> </span><span class="WHIT">          </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">val</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>347</span> </span><span class="WHIT">        </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>348</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>349</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>350</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>351</span> 
+<span class='line'>352</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">methods</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>353</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">window.screenfull</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>354</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>355</span> 
+<span class='line'>356</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">keyboardAllowed</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'ALLOW_KEYBOARD_INPUT'</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">Element</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>357</span> 
+<span class='line'>358</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">screenfull</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>359</span> </span><span class="WHIT">    </span><span class="NAME">init</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>360</span> </span><span class="WHIT">      </span><span class="NAME">document.addEventListener</span><span class="PUNC">(</span><span class="NAME">methods</span><span class="PUNC">[</span><span class="NUMB">2</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>361</span> </span><span class="WHIT">        </span><span class="NAME">screenfull.isFullscreen</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">document</span><span class="PUNC">[</span><span class="NAME">methods</span><span class="PUNC">[</span><span class="NUMB">3</span><span class="PUNC">]</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>362</span> </span><span class="WHIT">        </span><span class="NAME">screenfull.element</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">document</span><span class="PUNC">[</span><span class="NAME">methods</span><span class="PUNC">[</span><span class="NUMB">4</span><span class="PUNC">]</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>363</span> </span><span class="WHIT">        </span><span class="NAME">screenfull.onchange</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>364</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>365</span> </span><span class="WHIT">      </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>366</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>367</span> </span><span class="WHIT">    </span><span class="NAME">isFullscreen</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">document</span><span class="PUNC">[</span><span class="NAME">methods</span><span class="PUNC">[</span><span class="NUMB">3</span><span class="PUNC">]</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>368</span> </span><span class="WHIT">    </span><span class="NAME">element</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">document</span><span class="PUNC">[</span><span class="NAME">methods</span><span class="PUNC">[</span><span class="NUMB">4</span><span class="PUNC">]</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>369</span> </span><span class="WHIT">    </span><span class="NAME">request</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">elem</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>370</span> </span><span class="WHIT">      </span><span class="NAME">elem</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">elem</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">document.documentElement</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>371</span> </span><span class="WHIT">      </span><span class="NAME">elem</span><span class="PUNC">[</span><span class="NAME">methods</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">]</span><span class="PUNC">(</span><span class="NAME">keyboardAllowed</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">Element.ALLOW_KEYBOARD_INPUT</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>372</span> </span><span class="WHIT">      </span><span class="COMM">// Work around Safari 5.1 bug: reports support for keyboard in fullscreen</span><span class="WHIT">
+<span class='line'>373</span> </span><span class="WHIT">      </span><span class="COMM">// even though it doesn't.</span><span class="WHIT">
+<span class='line'>374</span> </span><span class="WHIT">      </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">document.isFullscreen</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>375</span> </span><span class="WHIT">        </span><span class="NAME">elem</span><span class="PUNC">[</span><span class="NAME">methods</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">]</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>376</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>377</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>378</span> </span><span class="WHIT">    </span><span class="NAME">exit</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>379</span> </span><span class="WHIT">      </span><span class="NAME">document</span><span class="PUNC">[</span><span class="NAME">methods</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">]</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>380</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>381</span> </span><span class="WHIT">    </span><span class="NAME">toggle</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">elem</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>382</span> </span><span class="WHIT">      </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.isFullscreen</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>383</span> </span><span class="WHIT">        </span><span class="NAME">this.exit</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>384</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>385</span> </span><span class="WHIT">        </span><span class="NAME">this.request</span><span class="PUNC">(</span><span class="NAME">elem</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>386</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>387</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>388</span> </span><span class="WHIT">    </span><span class="NAME">onchange</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>389</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>390</span> 
+<span class='line'>391</span> </span><span class="WHIT">  </span><span class="NAME">window.screenfull</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">screenfull.init</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>392</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="NAME">window</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">document</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>393</span> </span></pre></body></html>
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/doc/symbols/src/minplayer_src_minplayer.file.js.html b/public/admin/js/osmplayer/doc/symbols/src/minplayer_src_minplayer.file.js.html
new file mode 100644
index 0000000000000000000000000000000000000000..88ce7f1d77293583f29d64c75f3abaabbbea9bb2
--- /dev/null
+++ b/public/admin/js/osmplayer/doc/symbols/src/minplayer_src_minplayer.file.js.html
@@ -0,0 +1,186 @@
+<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
+	.KEYW {color: #933;}
+	.COMM {color: #bbb; font-style: italic;}
+	.NUMB {color: #393;}
+	.STRN {color: #393;}
+	.REGX {color: #339;}
+	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
+	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/** The minplayer namespace. */</span><span class="WHIT">
+<span class='line'>  2</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">minplayer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">minplayer</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>  3</span> 
+<span class='line'>  4</span> </span><span class="COMM">/**
+<span class='line'>  5</span>  * @constructor
+<span class='line'>  6</span>  * @class A wrapper class used to provide all the data necessary to control an
+<span class='line'>  7</span>  * individual file within this media player.
+<span class='line'>  8</span>  *
+<span class='line'>  9</span>  * @param {object} file A media file object with minimal required information.
+<span class='line'> 10</span>  */</span><span class="WHIT">
+<span class='line'> 11</span> </span><span class="NAME">minplayer.file</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">file</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 12</span> 
+<span class='line'> 13</span> </span><span class="WHIT">  </span><span class="COMM">// If there isn't a file provided, then just return null.</span><span class="WHIT">
+<span class='line'> 14</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">file</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 15</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 16</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 17</span> 
+<span class='line'> 18</span> </span><span class="WHIT">  </span><span class="NAME">file</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">file</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'string'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="NAME">path</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">file</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">file</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 19</span> 
+<span class='line'> 20</span> </span><span class="WHIT">  </span><span class="COMM">// If we already are a minplayer file, then just return this file.</span><span class="WHIT">
+<span class='line'> 21</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">file.hasOwnProperty</span><span class="PUNC">(</span><span class="STRN">'isMinPlayerFile'</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 22</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">file</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 23</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 24</span> 
+<span class='line'> 25</span> </span><span class="WHIT">  </span><span class="NAME">this.isMinPlayerFile</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 26</span> </span><span class="WHIT">  </span><span class="NAME">this.duration</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">file.duration</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 27</span> </span><span class="WHIT">  </span><span class="NAME">this.bytesTotal</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">file.bytesTotal</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 28</span> </span><span class="WHIT">  </span><span class="NAME">this.quality</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">file.quality</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 29</span> </span><span class="WHIT">  </span><span class="NAME">this.stream</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">file.stream</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 30</span> </span><span class="WHIT">  </span><span class="NAME">this.path</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">file.path</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 31</span> </span><span class="WHIT">  </span><span class="NAME">this.codecs</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">file.codecs</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 32</span> 
+<span class='line'> 33</span> </span><span class="WHIT">  </span><span class="COMM">// These should be provided, but just in case...</span><span class="WHIT">
+<span class='line'> 34</span> </span><span class="WHIT">  </span><span class="NAME">this.extension</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">file.extension</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">this.getFileExtension</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 35</span> </span><span class="WHIT">  </span><span class="NAME">this.mimetype</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">file.mimetype</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">file.filemime</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">this.getMimeType</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 36</span> </span><span class="WHIT">  </span><span class="NAME">this.type</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">file.type</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">this.getType</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 37</span> 
+<span class='line'> 38</span> </span><span class="WHIT">  </span><span class="COMM">// Fail safe to try and guess the mimetype and media type.</span><span class="WHIT">
+<span class='line'> 39</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.type</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 40</span> </span><span class="WHIT">    </span><span class="NAME">this.mimetype</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getMimeType</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 41</span> </span><span class="WHIT">    </span><span class="NAME">this.type</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getType</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 42</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 43</span> 
+<span class='line'> 44</span> </span><span class="WHIT">  </span><span class="COMM">// Get the player.</span><span class="WHIT">
+<span class='line'> 45</span> </span><span class="WHIT">  </span><span class="NAME">this.player</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">minplayer.player</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">file.player</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">this.getBestPlayer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 46</span> </span><span class="WHIT">  </span><span class="NAME">this.priority</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">file.priority</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">this.getPriority</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 47</span> </span><span class="WHIT">  </span><span class="NAME">this.id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">file.id</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">this.getId</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 48</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.path</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 49</span> </span><span class="WHIT">    </span><span class="NAME">this.path</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.id</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 50</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 51</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 52</span> 
+<span class='line'> 53</span> </span><span class="COMM">/** Used to force the player for all media. */</span><span class="WHIT">
+<span class='line'> 54</span> </span><span class="NAME">minplayer.player</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 55</span> 
+<span class='line'> 56</span> </span><span class="COMM">/**
+<span class='line'> 57</span>  * Returns the best player for the job.
+<span class='line'> 58</span>  *
+<span class='line'> 59</span>  * @return {string} The best player to play the media file.
+<span class='line'> 60</span>  */</span><span class="WHIT">
+<span class='line'> 61</span> </span><span class="NAME">minplayer.file.prototype.getBestPlayer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 62</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bestplayer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">bestpriority</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 63</span> </span><span class="WHIT">  </span><span class="NAME">jQuery.each</span><span class="PUNC">(</span><span class="NAME">minplayer.players</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">file</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 64</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">name</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">player</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 65</span> </span><span class="WHIT">      </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">priority</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">player.getPriority</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 66</span> </span><span class="WHIT">      </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">player.canPlay</span><span class="PUNC">(</span><span class="NAME">file</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">priority</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NAME">bestpriority</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 67</span> </span><span class="WHIT">        </span><span class="NAME">bestplayer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">name</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 68</span> </span><span class="WHIT">        </span><span class="NAME">bestpriority</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">priority</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 69</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 70</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 71</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 72</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">bestplayer</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 73</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 74</span> 
+<span class='line'> 75</span> </span><span class="COMM">/**
+<span class='line'> 76</span>  * The priority of this file is determined by the priority of the best
+<span class='line'> 77</span>  * player multiplied by the priority of the mimetype.
+<span class='line'> 78</span>  *
+<span class='line'> 79</span>  * @return {integer} The priority of the media file.
+<span class='line'> 80</span>  */</span><span class="WHIT">
+<span class='line'> 81</span> </span><span class="NAME">minplayer.file.prototype.getPriority</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 82</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">priority</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 83</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.player</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 84</span> </span><span class="WHIT">    </span><span class="NAME">priority</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">minplayer.players</span><span class="PUNC">[</span><span class="NAME">this.player</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">getPriority</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 85</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 86</span> </span><span class="WHIT">  </span><span class="KEYW">switch</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.mimetype</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 87</span> </span><span class="WHIT">    </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">'video/x-webm'</span><span class="PUNC">:</span><span class="WHIT">
+<span class='line'> 88</span> </span><span class="WHIT">    </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">'video/webm'</span><span class="PUNC">:</span><span class="WHIT">
+<span class='line'> 89</span> </span><span class="WHIT">    </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">'application/octet-stream'</span><span class="PUNC">:</span><span class="WHIT">
+<span class='line'> 90</span> </span><span class="WHIT">      </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">priority</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NUMB">10</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 91</span> </span><span class="WHIT">    </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">'video/mp4'</span><span class="PUNC">:</span><span class="WHIT">
+<span class='line'> 92</span> </span><span class="WHIT">    </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">'audio/mp4'</span><span class="PUNC">:</span><span class="WHIT">
+<span class='line'> 93</span> </span><span class="WHIT">    </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">'audio/mpeg'</span><span class="PUNC">:</span><span class="WHIT">
+<span class='line'> 94</span> </span><span class="WHIT">      </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">priority</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NUMB">9</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 95</span> </span><span class="WHIT">    </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">'video/ogg'</span><span class="PUNC">:</span><span class="WHIT">
+<span class='line'> 96</span> </span><span class="WHIT">    </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">'audio/ogg'</span><span class="PUNC">:</span><span class="WHIT">
+<span class='line'> 97</span> </span><span class="WHIT">    </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">'video/quicktime'</span><span class="PUNC">:</span><span class="WHIT">
+<span class='line'> 98</span> </span><span class="WHIT">      </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">priority</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 99</span> </span><span class="WHIT">    </span><span class="KEYW">default</span><span class="PUNC">:</span><span class="WHIT">
+<span class='line'>100</span> </span><span class="WHIT">      </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">priority</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NUMB">5</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>101</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>102</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>103</span> 
+<span class='line'>104</span> </span><span class="COMM">/**
+<span class='line'>105</span>  * Returns the file extension of the file path.
+<span class='line'>106</span>  *
+<span class='line'>107</span>  * @return {string} The file extension.
+<span class='line'>108</span>  */</span><span class="WHIT">
+<span class='line'>109</span> </span><span class="NAME">minplayer.file.prototype.getFileExtension</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>110</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.path.substring</span><span class="PUNC">(</span><span class="NAME">this.path.lastIndexOf</span><span class="PUNC">(</span><span class="STRN">'.'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toLowerCase</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>111</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>112</span> 
+<span class='line'>113</span> </span><span class="COMM">/**
+<span class='line'>114</span>  * Returns the proper mimetype based off of the extension.
+<span class='line'>115</span>  *
+<span class='line'>116</span>  * @return {string} The mimetype of the file based off of extension.
+<span class='line'>117</span>  */</span><span class="WHIT">
+<span class='line'>118</span> </span><span class="NAME">minplayer.file.prototype.getMimeType</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>119</span> </span><span class="WHIT">  </span><span class="KEYW">switch</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.extension</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>120</span> </span><span class="WHIT">    </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">'mp4'</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">'m4v'</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">'flv'</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">'f4v'</span><span class="PUNC">:</span><span class="WHIT">
+<span class='line'>121</span> </span><span class="WHIT">      </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="STRN">'video/mp4'</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>122</span> </span><span class="WHIT">    </span><span class="KEYW">case</span><span class="STRN">'webm'</span><span class="PUNC">:</span><span class="WHIT">
+<span class='line'>123</span> </span><span class="WHIT">      </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="STRN">'video/webm'</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>124</span> </span><span class="WHIT">    </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">'ogg'</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">'ogv'</span><span class="PUNC">:</span><span class="WHIT">
+<span class='line'>125</span> </span><span class="WHIT">      </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="STRN">'video/ogg'</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>126</span> </span><span class="WHIT">    </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">'3g2'</span><span class="PUNC">:</span><span class="WHIT">
+<span class='line'>127</span> </span><span class="WHIT">      </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="STRN">'video/3gpp2'</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>128</span> </span><span class="WHIT">    </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">'3gpp'</span><span class="PUNC">:</span><span class="WHIT">
+<span class='line'>129</span> </span><span class="WHIT">    </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">'3gp'</span><span class="PUNC">:</span><span class="WHIT">
+<span class='line'>130</span> </span><span class="WHIT">      </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="STRN">'video/3gpp'</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>131</span> </span><span class="WHIT">    </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">'mov'</span><span class="PUNC">:</span><span class="WHIT">
+<span class='line'>132</span> </span><span class="WHIT">      </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="STRN">'video/quicktime'</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>133</span> </span><span class="WHIT">    </span><span class="KEYW">case</span><span class="STRN">'swf'</span><span class="PUNC">:</span><span class="WHIT">
+<span class='line'>134</span> </span><span class="WHIT">      </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="STRN">'application/x-shockwave-flash'</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>135</span> </span><span class="WHIT">    </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">'oga'</span><span class="PUNC">:</span><span class="WHIT">
+<span class='line'>136</span> </span><span class="WHIT">      </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="STRN">'audio/ogg'</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>137</span> </span><span class="WHIT">    </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">'mp3'</span><span class="PUNC">:</span><span class="WHIT">
+<span class='line'>138</span> </span><span class="WHIT">      </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="STRN">'audio/mpeg'</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>139</span> </span><span class="WHIT">    </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">'m4a'</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">'f4a'</span><span class="PUNC">:</span><span class="WHIT">
+<span class='line'>140</span> </span><span class="WHIT">      </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="STRN">'audio/mp4'</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>141</span> </span><span class="WHIT">    </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">'aac'</span><span class="PUNC">:</span><span class="WHIT">
+<span class='line'>142</span> </span><span class="WHIT">      </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="STRN">'audio/aac'</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>143</span> </span><span class="WHIT">    </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">'wav'</span><span class="PUNC">:</span><span class="WHIT">
+<span class='line'>144</span> </span><span class="WHIT">      </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="STRN">'audio/vnd.wave'</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>145</span> </span><span class="WHIT">    </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">'wma'</span><span class="PUNC">:</span><span class="WHIT">
+<span class='line'>146</span> </span><span class="WHIT">      </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="STRN">'audio/x-ms-wma'</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>147</span> </span><span class="WHIT">    </span><span class="KEYW">default</span><span class="PUNC">:</span><span class="WHIT">
+<span class='line'>148</span> </span><span class="WHIT">      </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="STRN">'unknown'</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>149</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>150</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>151</span> 
+<span class='line'>152</span> </span><span class="COMM">/**
+<span class='line'>153</span>  * The type of media this is: video or audio.
+<span class='line'>154</span>  *
+<span class='line'>155</span>  * @return {string} "video" or "audio" based on what the type of media this
+<span class='line'>156</span>  * is.
+<span class='line'>157</span>  */</span><span class="WHIT">
+<span class='line'>158</span> </span><span class="NAME">minplayer.file.prototype.getType</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>159</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">type</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.mimetype.match</span><span class="PUNC">(</span><span class="REGX">/([^\/]+)(\/)/</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>160</span> </span><span class="WHIT">  </span><span class="NAME">type</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">type</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">type.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">type</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>161</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">type</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">'video'</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">this.mimetype</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">'application/octet-stream'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>162</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="STRN">'video'</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>163</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>164</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">type</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">'audio'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>165</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="STRN">'audio'</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>166</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>167</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>168</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>169</span> 
+<span class='line'>170</span> </span><span class="COMM">/**
+<span class='line'>171</span>  * Returns the ID for this media file.
+<span class='line'>172</span>  *
+<span class='line'>173</span>  * @return {string} The id for this media file which is provided by the player.
+<span class='line'>174</span>  */</span><span class="WHIT">
+<span class='line'>175</span> </span><span class="NAME">minplayer.file.prototype.getId</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>176</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">player</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">minplayer.players</span><span class="PUNC">[</span><span class="NAME">this.player</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>177</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">player</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">player.getMediaId</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">player.getMediaId</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>178</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>179</span> </span></pre></body></html>
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/doc/symbols/src/minplayer_src_minplayer.flags.js.html b/public/admin/js/osmplayer/doc/symbols/src/minplayer_src_minplayer.flags.js.html
new file mode 100644
index 0000000000000000000000000000000000000000..22c13e3a948857f08a7507b8b2e28c0cec4019cf
--- /dev/null
+++ b/public/admin/js/osmplayer/doc/symbols/src/minplayer_src_minplayer.flags.js.html
@@ -0,0 +1,79 @@
+<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
+	.KEYW {color: #933;}
+	.COMM {color: #bbb; font-style: italic;}
+	.NUMB {color: #393;}
+	.STRN {color: #393;}
+	.REGX {color: #339;}
+	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
+	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/** The minplayer namespace. */</span><span class="WHIT">
+<span class='line'>  2</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">minplayer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">minplayer</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>  3</span> 
+<span class='line'>  4</span> </span><span class="COMM">/**
+<span class='line'>  5</span>  * @constructor
+<span class='line'>  6</span>  * @class This is a class used to keep track of flag states
+<span class='line'>  7</span>  * which is used to control the busy cursor, big play button, among other
+<span class='line'>  8</span>  * items in which multiple components can have an interest in hiding or
+<span class='line'>  9</span>  * showing a single element on the screen.
+<span class='line'> 10</span>  *
+<span class='line'> 11</span>  * &lt;p>
+<span class='line'> 12</span>  * &lt;strong>Usage:&lt;/strong>
+<span class='line'> 13</span>  * &lt;pre>&lt;code>
+<span class='line'> 14</span>  *   // Declare a flags variable.
+<span class='line'> 15</span>  *   var flags = new minplayer.flags();
+<span class='line'> 16</span>  *
+<span class='line'> 17</span>  *   // Set the flag based on two components interested in the flag.
+<span class='line'> 18</span>  *   flags.setFlag("component1", true);
+<span class='line'> 19</span>  *   flags.setFlag("component2", true);
+<span class='line'> 20</span>  *
+<span class='line'> 21</span>  *   // Print out the value of the flags. ( Prints 3 )
+<span class='line'> 22</span>  *   console.log(flags.flags);
+<span class='line'> 23</span>  *
+<span class='line'> 24</span>  *   // Now unset a single components flag.
+<span class='line'> 25</span>  *   flags.setFlag("component1", false);
+<span class='line'> 26</span>  *
+<span class='line'> 27</span>  *   // Print out the value of the flags.
+<span class='line'> 28</span>  *   console.log(flags.flags);
+<span class='line'> 29</span>  *
+<span class='line'> 30</span>  *   // Unset the other components flag.
+<span class='line'> 31</span>  *   flags.setFlag("component2", false);
+<span class='line'> 32</span>  *
+<span class='line'> 33</span>  *   // Print out the value of the flags.
+<span class='line'> 34</span>  *   console.log(flags.flags);
+<span class='line'> 35</span>  * &lt;/code>&lt;/pre>
+<span class='line'> 36</span>  * &lt;/p>
+<span class='line'> 37</span>  */</span><span class="WHIT">
+<span class='line'> 38</span> </span><span class="NAME">minplayer.flags</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 39</span> 
+<span class='line'> 40</span> </span><span class="WHIT">  </span><span class="COMM">/** The flag. */</span><span class="WHIT">
+<span class='line'> 41</span> </span><span class="WHIT">  </span><span class="NAME">this.flag</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 42</span> 
+<span class='line'> 43</span> </span><span class="WHIT">  </span><span class="COMM">/** Id map to reference id with the flag index. */</span><span class="WHIT">
+<span class='line'> 44</span> </span><span class="WHIT">  </span><span class="NAME">this.ids</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 45</span> 
+<span class='line'> 46</span> </span><span class="WHIT">  </span><span class="COMM">/** The number of flags. */</span><span class="WHIT">
+<span class='line'> 47</span> </span><span class="WHIT">  </span><span class="NAME">this.numFlags</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 48</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 49</span> 
+<span class='line'> 50</span> </span><span class="COMM">/**
+<span class='line'> 51</span>  * Sets a flag based on boolean logic operators.
+<span class='line'> 52</span>  *
+<span class='line'> 53</span>  * @param {string} id The id of the controller interested in this flag.
+<span class='line'> 54</span>  * @param {boolean} value The value of this flag ( true or false ).
+<span class='line'> 55</span>  */</span><span class="WHIT">
+<span class='line'> 56</span> </span><span class="NAME">minplayer.flags.prototype.setFlag</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">value</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 57</span> 
+<span class='line'> 58</span> </span><span class="WHIT">  </span><span class="COMM">// Define this id if it isn't present.</span><span class="WHIT">
+<span class='line'> 59</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.ids.hasOwnProperty</span><span class="PUNC">(</span><span class="NAME">id</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 60</span> </span><span class="WHIT">    </span><span class="NAME">this.ids</span><span class="PUNC">[</span><span class="NAME">id</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.numFlags</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 61</span> </span><span class="WHIT">    </span><span class="NAME">this.numFlags</span><span class="PUNC">++</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 62</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 63</span> 
+<span class='line'> 64</span> </span><span class="WHIT">  </span><span class="COMM">// Use binary operations to keep track of the flag state</span><span class="WHIT">
+<span class='line'> 65</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">value</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 66</span> </span><span class="WHIT">    </span><span class="NAME">this.flag</span><span class="WHIT"> </span><span class="PUNC">|</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NUMB">1</span><span class="WHIT"> </span><span class="PUNC">&lt;&lt;</span><span class="WHIT"> </span><span class="NAME">this.ids</span><span class="PUNC">[</span><span class="NAME">id</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 67</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 68</span> </span><span class="WHIT">  </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 69</span> </span><span class="WHIT">    </span><span class="NAME">this.flag</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">~</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="WHIT"> </span><span class="PUNC">&lt;&lt;</span><span class="WHIT"> </span><span class="NAME">this.ids</span><span class="PUNC">[</span><span class="NAME">id</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 70</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 71</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 72</span> </span></pre></body></html>
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/doc/symbols/src/minplayer_src_minplayer.image.js.html b/public/admin/js/osmplayer/doc/symbols/src/minplayer_src_minplayer.image.js.html
new file mode 100644
index 0000000000000000000000000000000000000000..6a61eea9f96f3a53ed39c139910c3e62f22ee5fe
--- /dev/null
+++ b/public/admin/js/osmplayer/doc/symbols/src/minplayer_src_minplayer.image.js.html
@@ -0,0 +1,153 @@
+<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
+	.KEYW {color: #933;}
+	.COMM {color: #bbb; font-style: italic;}
+	.NUMB {color: #393;}
+	.STRN {color: #393;}
+	.REGX {color: #339;}
+	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
+	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/** The minplayer namespace. */</span><span class="WHIT">
+<span class='line'>  2</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">minplayer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">minplayer</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>  3</span> 
+<span class='line'>  4</span> </span><span class="COMM">/**
+<span class='line'>  5</span>  * @constructor
+<span class='line'>  6</span>  * @class A class to easily handle images.
+<span class='line'>  7</span>  * @param {object} context The jQuery context.
+<span class='line'>  8</span>  * @param {object} options This components options.
+<span class='line'>  9</span>  */</span><span class="WHIT">
+<span class='line'> 10</span> </span><span class="NAME">minplayer.image</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">context</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 11</span> 
+<span class='line'> 12</span> </span><span class="WHIT">  </span><span class="COMM">// Determine if the image is loaded.</span><span class="WHIT">
+<span class='line'> 13</span> </span><span class="WHIT">  </span><span class="NAME">this.loaded</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 14</span> 
+<span class='line'> 15</span> </span><span class="WHIT">  </span><span class="COMM">// The image loader.</span><span class="WHIT">
+<span class='line'> 16</span> </span><span class="WHIT">  </span><span class="NAME">this.loader</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 17</span> 
+<span class='line'> 18</span> </span><span class="WHIT">  </span><span class="COMM">// The ratio of the image.</span><span class="WHIT">
+<span class='line'> 19</span> </span><span class="WHIT">  </span><span class="NAME">this.ratio</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 20</span> 
+<span class='line'> 21</span> </span><span class="WHIT">  </span><span class="COMM">// The image element.</span><span class="WHIT">
+<span class='line'> 22</span> </span><span class="WHIT">  </span><span class="NAME">this.img</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 23</span> 
+<span class='line'> 24</span> </span><span class="WHIT">  </span><span class="COMM">// Derive from display</span><span class="WHIT">
+<span class='line'> 25</span> </span><span class="WHIT">  </span><span class="NAME">minplayer.display.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'image'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">context</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 26</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 27</span> 
+<span class='line'> 28</span> </span><span class="COMM">/** Derive from minplayer.display. */</span><span class="WHIT">
+<span class='line'> 29</span> </span><span class="NAME">minplayer.image.prototype</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">minplayer.display</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 30</span> 
+<span class='line'> 31</span> </span><span class="COMM">/** Reset the constructor. */</span><span class="WHIT">
+<span class='line'> 32</span> </span><span class="NAME">minplayer.image.prototype.constructor</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">minplayer.image</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 33</span> 
+<span class='line'> 34</span> </span><span class="COMM">/**
+<span class='line'> 35</span>  * @see minplayer.plugin.construct
+<span class='line'> 36</span>  */</span><span class="WHIT">
+<span class='line'> 37</span> </span><span class="NAME">minplayer.image.prototype.construct</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 38</span> 
+<span class='line'> 39</span> </span><span class="WHIT">  </span><span class="COMM">// Call the media display constructor.</span><span class="WHIT">
+<span class='line'> 40</span> </span><span class="WHIT">  </span><span class="NAME">minplayer.display.prototype.construct.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 41</span> 
+<span class='line'> 42</span> </span><span class="WHIT">  </span><span class="COMM">// Set the plugin name within the options.</span><span class="WHIT">
+<span class='line'> 43</span> </span><span class="WHIT">  </span><span class="NAME">this.options.pluginName</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'image'</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 44</span> 
+<span class='line'> 45</span> </span><span class="WHIT">  </span><span class="COMM">// Set the container to not show any overflow...</span><span class="WHIT">
+<span class='line'> 46</span> </span><span class="WHIT">  </span><span class="NAME">this.display.css</span><span class="PUNC">(</span><span class="STRN">'overflow'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'hidden'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 47</span> 
+<span class='line'> 48</span> </span><span class="WHIT">  </span><span class="COMM">/** The loader for the image. */</span><span class="WHIT">
+<span class='line'> 49</span> </span><span class="WHIT">  </span><span class="NAME">this.loader</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Image</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 50</span> 
+<span class='line'> 51</span> </span><span class="WHIT">  </span><span class="COMM">/** Register for when the image is loaded within the loader. */</span><span class="WHIT">
+<span class='line'> 52</span> </span><span class="WHIT">  </span><span class="NAME">this.loader.onload</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">image</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 53</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 54</span> </span><span class="WHIT">      </span><span class="NAME">image.loaded</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 55</span> </span><span class="WHIT">      </span><span class="NAME">image.ratio</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">image.loader.width</span><span class="WHIT"> </span><span class="PUNC">/</span><span class="WHIT"> </span><span class="NAME">image.loader.height</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 56</span> </span><span class="WHIT">      </span><span class="NAME">image.resize</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 57</span> </span><span class="WHIT">      </span><span class="NAME">image.trigger</span><span class="PUNC">(</span><span class="STRN">'loaded'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 58</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 59</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 60</span> 
+<span class='line'> 61</span> </span><span class="WHIT">  </span><span class="COMM">// We are now ready.</span><span class="WHIT">
+<span class='line'> 62</span> </span><span class="WHIT">  </span><span class="NAME">this.ready</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 63</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 64</span> 
+<span class='line'> 65</span> </span><span class="COMM">/**
+<span class='line'> 66</span>  * Loads an image.
+<span class='line'> 67</span>  *
+<span class='line'> 68</span>  * @param {string} src The source of the image to load.
+<span class='line'> 69</span>  */</span><span class="WHIT">
+<span class='line'> 70</span> </span><span class="NAME">minplayer.image.prototype.load</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">src</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 71</span> 
+<span class='line'> 72</span> </span><span class="WHIT">  </span><span class="COMM">// First clear the previous image.</span><span class="WHIT">
+<span class='line'> 73</span> </span><span class="WHIT">  </span><span class="NAME">this.clear</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 74</span> 
+<span class='line'> 75</span> </span><span class="WHIT">    </span><span class="COMM">// Create the new image, and append to the display.</span><span class="WHIT">
+<span class='line'> 76</span> </span><span class="WHIT">    </span><span class="NAME">this.display.empty</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 77</span> </span><span class="WHIT">    </span><span class="NAME">this.img</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">jQuery</span><span class="PUNC">(</span><span class="NAME">document.createElement</span><span class="PUNC">(</span><span class="STRN">'img'</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="PUNC">{</span><span class="NAME">src</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">hide</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 78</span> </span><span class="WHIT">    </span><span class="NAME">this.display.append</span><span class="PUNC">(</span><span class="NAME">this.img</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 79</span> </span><span class="WHIT">    </span><span class="NAME">this.loader.src</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">src</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 80</span> </span><span class="WHIT">    </span><span class="NAME">this.img.attr</span><span class="PUNC">(</span><span class="STRN">'src'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">src</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 81</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 82</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 83</span> 
+<span class='line'> 84</span> </span><span class="COMM">/**
+<span class='line'> 85</span>  * Clears an image.
+<span class='line'> 86</span>  *
+<span class='line'> 87</span>  * @param {function} callback Called when the image is done clearing.
+<span class='line'> 88</span>  */</span><span class="WHIT">
+<span class='line'> 89</span> </span><span class="NAME">minplayer.image.prototype.clear</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">callback</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 90</span> </span><span class="WHIT">  </span><span class="NAME">this.loaded</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 91</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.img</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 92</span> </span><span class="WHIT">    </span><span class="NAME">this.img.fadeOut</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">image</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 93</span> </span><span class="WHIT">      </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 94</span> </span><span class="WHIT">        </span><span class="NAME">image.img.attr</span><span class="PUNC">(</span><span class="STRN">'src'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 95</span> </span><span class="WHIT">        </span><span class="NAME">image.loader.src</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 96</span> </span><span class="WHIT">        </span><span class="NAME">jQuery</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">remove</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 97</span> </span><span class="WHIT">        </span><span class="NAME">callback.call</span><span class="PUNC">(</span><span class="NAME">image</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 98</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 99</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>100</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>101</span> </span><span class="WHIT">  </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>102</span> </span><span class="WHIT">    </span><span class="NAME">callback.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>103</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>104</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>105</span> 
+<span class='line'>106</span> </span><span class="COMM">/**
+<span class='line'>107</span>  * Resize the image provided a width and height or nothing.
+<span class='line'>108</span>  *
+<span class='line'>109</span>  * @param {integer} width (optional) The width of the container.
+<span class='line'>110</span>  * @param {integer} height (optional) The height of the container.
+<span class='line'>111</span>  */</span><span class="WHIT">
+<span class='line'>112</span> </span><span class="NAME">minplayer.image.prototype.resize</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">width</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">height</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>113</span> </span><span class="WHIT">  </span><span class="NAME">width</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">width</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">this.display.parent</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">width</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>114</span> </span><span class="WHIT">  </span><span class="NAME">height</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">height</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">this.display.parent</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">height</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>115</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">width</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">height</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">this.loaded</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>116</span> 
+<span class='line'>117</span> </span><span class="WHIT">    </span><span class="COMM">// Get the scaled rectangle.</span><span class="WHIT">
+<span class='line'>118</span> </span><span class="WHIT">    </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">rect</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getScaledRect</span><span class="PUNC">(</span><span class="NAME">this.ratio</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>119</span> </span><span class="WHIT">      </span><span class="NAME">width</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">width</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>120</span> </span><span class="WHIT">      </span><span class="NAME">height</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">height</span><span class="WHIT">
+<span class='line'>121</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>122</span> 
+<span class='line'>123</span> </span><span class="WHIT">    </span><span class="COMM">// Now set this image to the new size.</span><span class="WHIT">
+<span class='line'>124</span> </span><span class="WHIT">    </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.img</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>125</span> </span><span class="WHIT">      </span><span class="NAME">this.img.attr</span><span class="PUNC">(</span><span class="STRN">'src'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.loader.src</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">css</span><span class="PUNC">(</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>126</span> </span><span class="WHIT">        </span><span class="NAME">marginLeft</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">rect.x</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>127</span> </span><span class="WHIT">        </span><span class="NAME">marginTop</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">rect.y</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>128</span> </span><span class="WHIT">        </span><span class="NAME">width</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">rect.width</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>129</span> </span><span class="WHIT">        </span><span class="NAME">height</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">rect.height</span><span class="WHIT">
+<span class='line'>130</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>131</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>132</span> 
+<span class='line'>133</span> </span><span class="WHIT">    </span><span class="COMM">// Show the container.</span><span class="WHIT">
+<span class='line'>134</span> </span><span class="WHIT">    </span><span class="NAME">this.img.fadeIn</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>135</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>136</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>137</span> 
+<span class='line'>138</span> </span><span class="COMM">/**
+<span class='line'>139</span>  * @see minplayer.display#onResize
+<span class='line'>140</span>  */</span><span class="WHIT">
+<span class='line'>141</span> </span><span class="NAME">minplayer.image.prototype.onResize</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>142</span> 
+<span class='line'>143</span> </span><span class="WHIT">  </span><span class="COMM">// Resize the image to fit.</span><span class="WHIT">
+<span class='line'>144</span> </span><span class="WHIT">  </span><span class="NAME">this.resize</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>145</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>146</span> </span></pre></body></html>
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/doc/symbols/src/minplayer_src_minplayer.js.html b/public/admin/js/osmplayer/doc/symbols/src/minplayer_src_minplayer.js.html
new file mode 100644
index 0000000000000000000000000000000000000000..5fb5577dcd665f821b8c4a775f580c2c7648c0f9
--- /dev/null
+++ b/public/admin/js/osmplayer/doc/symbols/src/minplayer_src_minplayer.js.html
@@ -0,0 +1,425 @@
+<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
+	.KEYW {color: #933;}
+	.COMM {color: #bbb; font-style: italic;}
+	.NUMB {color: #393;}
+	.STRN {color: #393;}
+	.REGX {color: #339;}
+	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
+	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">// Add a way to instanciate using jQuery prototype.</span><span class="WHIT">
+<span class='line'>  2</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">jQuery.fn.minplayer</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>  3</span> 
+<span class='line'>  4</span> </span><span class="WHIT">  </span><span class="COMM">/**
+<span class='line'>  5</span>    * @constructor
+<span class='line'>  6</span>    *
+<span class='line'>  7</span>    * Define a jQuery minplayer prototype.
+<span class='line'>  8</span>    *
+<span class='line'>  9</span>    * @param {object} options The options for this jQuery prototype.
+<span class='line'> 10</span>    * @return {Array} jQuery object.
+<span class='line'> 11</span>    */</span><span class="WHIT">
+<span class='line'> 12</span> </span><span class="WHIT">  </span><span class="NAME">jQuery.fn.minplayer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">options</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 13</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">jQuery</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">each</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 14</span> </span><span class="WHIT">      </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 15</span> </span><span class="WHIT">      </span><span class="NAME">options.id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">options.id</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">jQuery</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">'id'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">Math.random</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 16</span> </span><span class="WHIT">      </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">minplayer.plugins</span><span class="PUNC">[</span><span class="NAME">options.id</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 17</span> </span><span class="WHIT">        </span><span class="NAME">options.template</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">options.template</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="STRN">'default'</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 18</span> </span><span class="WHIT">        </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">minplayer</span><span class="PUNC">[</span><span class="NAME">options.template</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 19</span> </span><span class="WHIT">          </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">minplayer</span><span class="PUNC">[</span><span class="NAME">options.template</span><span class="PUNC">]</span><span class="PUNC">(</span><span class="NAME">jQuery</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 20</span> </span><span class="WHIT">        </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 21</span> </span><span class="WHIT">        </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 22</span> </span><span class="WHIT">          </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">minplayer</span><span class="PUNC">(</span><span class="NAME">jQuery</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 23</span> </span><span class="WHIT">        </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 24</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 25</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 26</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 27</span> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 28</span> 
+<span class='line'> 29</span> </span><span class="COMM">/**
+<span class='line'> 30</span>  * @constructor
+<span class='line'> 31</span>  * @extends minplayer.display
+<span class='line'> 32</span>  * @class The core media player class which governs the media player
+<span class='line'> 33</span>  * functionality.
+<span class='line'> 34</span>  *
+<span class='line'> 35</span>  * &lt;p>&lt;strong>Usage:&lt;/strong>
+<span class='line'> 36</span>  * &lt;pre>&lt;code>
+<span class='line'> 37</span>  *
+<span class='line'> 38</span>  *   // Create a media player.
+<span class='line'> 39</span>  *   var player = jQuery("#player").minplayer({
+<span class='line'> 40</span>  *
+<span class='line'> 41</span>  *   });
+<span class='line'> 42</span>  *
+<span class='line'> 43</span>  * &lt;/code>&lt;/pre>
+<span class='line'> 44</span>  * &lt;/p>
+<span class='line'> 45</span>  *
+<span class='line'> 46</span>  * @param {object} context The jQuery context.
+<span class='line'> 47</span>  * @param {object} options This components options.
+<span class='line'> 48</span>  */</span><span class="WHIT">
+<span class='line'> 49</span> </span><span class="NAME">minplayer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">jQuery.extend</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">context</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 50</span> 
+<span class='line'> 51</span> </span><span class="WHIT">  </span><span class="COMM">// Derive from display</span><span class="WHIT">
+<span class='line'> 52</span> </span><span class="WHIT">  </span><span class="NAME">minplayer.display.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'player'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">context</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 53</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">minplayer</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 54</span> 
+<span class='line'> 55</span> </span><span class="COMM">/** Derive from minplayer.display. */</span><span class="WHIT">
+<span class='line'> 56</span> </span><span class="NAME">minplayer.prototype</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">minplayer.display</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 57</span> 
+<span class='line'> 58</span> </span><span class="COMM">/** Reset the constructor. */</span><span class="WHIT">
+<span class='line'> 59</span> </span><span class="NAME">minplayer.prototype.constructor</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">minplayer</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 60</span> 
+<span class='line'> 61</span> </span><span class="COMM">/**
+<span class='line'> 62</span>  * @see minplayer.plugin.construct
+<span class='line'> 63</span>  */</span><span class="WHIT">
+<span class='line'> 64</span> </span><span class="NAME">minplayer.prototype.construct</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 65</span> 
+<span class='line'> 66</span> </span><span class="WHIT">  </span><span class="COMM">// Allow them to provide arguments based off of the DOM attributes.</span><span class="WHIT">
+<span class='line'> 67</span> </span><span class="WHIT">  </span><span class="NAME">jQuery.each</span><span class="PUNC">(</span><span class="NAME">this.context</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">attributes</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">player</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 68</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">index</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">attr</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 69</span> </span><span class="WHIT">      </span><span class="NAME">player.options</span><span class="PUNC">[</span><span class="NAME">attr.name</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">player.options</span><span class="PUNC">[</span><span class="NAME">attr.name</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">attr.value</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 70</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 71</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 72</span> 
+<span class='line'> 73</span> </span><span class="WHIT">  </span><span class="COMM">// Make sure we provide default options...</span><span class="WHIT">
+<span class='line'> 74</span> </span><span class="WHIT">  </span><span class="NAME">this.options</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">jQuery.extend</span><span class="PUNC">(</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 75</span> </span><span class="WHIT">    </span><span class="NAME">id</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'player'</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 76</span> </span><span class="WHIT">    </span><span class="NAME">build</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 77</span> </span><span class="WHIT">    </span><span class="NAME">wmode</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'transparent'</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 78</span> </span><span class="WHIT">    </span><span class="NAME">preload</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 79</span> </span><span class="WHIT">    </span><span class="NAME">autoplay</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 80</span> </span><span class="WHIT">    </span><span class="NAME">autoload</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 81</span> </span><span class="WHIT">    </span><span class="NAME">loop</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 82</span> </span><span class="WHIT">    </span><span class="NAME">width</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'100%'</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 83</span> </span><span class="WHIT">    </span><span class="NAME">height</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'350px'</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 84</span> </span><span class="WHIT">    </span><span class="NAME">debug</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 85</span> </span><span class="WHIT">    </span><span class="NAME">volume</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">80</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 86</span> </span><span class="WHIT">    </span><span class="NAME">files</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 87</span> </span><span class="WHIT">    </span><span class="NAME">file</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 88</span> </span><span class="WHIT">    </span><span class="NAME">preview</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 89</span> </span><span class="WHIT">    </span><span class="NAME">attributes</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 90</span> </span><span class="WHIT">    </span><span class="NAME">logo</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 91</span> </span><span class="WHIT">    </span><span class="NAME">link</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 92</span> </span><span class="WHIT">    </span><span class="NAME">width</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'100%'</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 93</span> </span><span class="WHIT">    </span><span class="NAME">height</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'100%'</span><span class="WHIT">
+<span class='line'> 94</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.options</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 95</span> 
+<span class='line'> 96</span> </span><span class="WHIT">  </span><span class="COMM">// Call the minplayer display constructor.</span><span class="WHIT">
+<span class='line'> 97</span> </span><span class="WHIT">  </span><span class="NAME">minplayer.display.prototype.construct.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 98</span> 
+<span class='line'> 99</span> </span><span class="WHIT">  </span><span class="COMM">// Set the plugin name within the options.</span><span class="WHIT">
+<span class='line'>100</span> </span><span class="WHIT">  </span><span class="NAME">this.options.pluginName</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'player'</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>101</span> 
+<span class='line'>102</span> </span><span class="WHIT">  </span><span class="COMM">/** The controller for this player. */</span><span class="WHIT">
+<span class='line'>103</span> </span><span class="WHIT">  </span><span class="NAME">this.controller</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.create</span><span class="PUNC">(</span><span class="STRN">'controller'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>104</span> 
+<span class='line'>105</span> </span><span class="WHIT">  </span><span class="COMM">/** The play loader for this player. */</span><span class="WHIT">
+<span class='line'>106</span> </span><span class="WHIT">  </span><span class="NAME">this.playLoader</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.create</span><span class="PUNC">(</span><span class="STRN">'playLoader'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>107</span> 
+<span class='line'>108</span> </span><span class="WHIT">  </span><span class="COMM">// Set the focus of the element based on if they click in or outside of it.</span><span class="WHIT">
+<span class='line'>109</span> </span><span class="WHIT">  </span><span class="NAME">minplayer.click</span><span class="PUNC">(</span><span class="NAME">document</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">player</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>110</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">event</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>111</span> </span><span class="WHIT">      </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">target</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">jQuery</span><span class="PUNC">(</span><span class="NAME">event.target</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>112</span> </span><span class="WHIT">      </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">focus</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="PUNC">(</span><span class="NAME">target.closest</span><span class="PUNC">(</span><span class="STRN">'#'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">player.options.id</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">length</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>113</span> </span><span class="WHIT">      </span><span class="NAME">minplayer.get.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">player.options.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">plugin</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>114</span> </span><span class="WHIT">        </span><span class="NAME">plugin.onFocus</span><span class="PUNC">(</span><span class="NAME">focus</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>115</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>116</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>117</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>118</span> 
+<span class='line'>119</span> </span><span class="WHIT">  </span><span class="COMM">/** Add the logo for the player. */</span><span class="WHIT">
+<span class='line'>120</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.options.logo</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">this.elements.logo</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>121</span> 
+<span class='line'>122</span> </span><span class="WHIT">    </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">code</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>123</span> </span><span class="WHIT">    </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.options.link</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>124</span> </span><span class="WHIT">      </span><span class="NAME">code</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'&lt;a target="_blank" href="'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.options.link</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'">'</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>125</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>126</span> </span><span class="WHIT">    </span><span class="NAME">code</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'&lt;img src="'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.options.logo</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'" >'</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>127</span> </span><span class="WHIT">    </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.options.link</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>128</span> </span><span class="WHIT">      </span><span class="NAME">code</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'&lt;/a>'</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>129</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>130</span> </span><span class="WHIT">    </span><span class="NAME">this.logo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.elements.logo.append</span><span class="PUNC">(</span><span class="NAME">code</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>131</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>132</span> 
+<span class='line'>133</span> </span><span class="WHIT">  </span><span class="COMM">/** Variable to store the current media player. */</span><span class="WHIT">
+<span class='line'>134</span> </span><span class="WHIT">  </span><span class="NAME">this.currentPlayer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'html5'</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>135</span> 
+<span class='line'>136</span> </span><span class="WHIT">  </span><span class="COMM">// Add key events to the window.</span><span class="WHIT">
+<span class='line'>137</span> </span><span class="WHIT">  </span><span class="NAME">this.addKeyEvents</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>138</span> 
+<span class='line'>139</span> </span><span class="WHIT">  </span><span class="COMM">// Called to add events.</span><span class="WHIT">
+<span class='line'>140</span> </span><span class="WHIT">  </span><span class="NAME">this.addEvents</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>141</span> 
+<span class='line'>142</span> </span><span class="WHIT">  </span><span class="COMM">// Now load these files.</span><span class="WHIT">
+<span class='line'>143</span> </span><span class="WHIT">  </span><span class="NAME">this.load</span><span class="PUNC">(</span><span class="NAME">this.getFiles</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>144</span> 
+<span class='line'>145</span> </span><span class="WHIT">  </span><span class="COMM">// The player is ready.</span><span class="WHIT">
+<span class='line'>146</span> </span><span class="WHIT">  </span><span class="NAME">this.ready</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>147</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>148</span> 
+<span class='line'>149</span> </span><span class="COMM">/**
+<span class='line'>150</span>  * Called when an error occurs.
+<span class='line'>151</span>  *
+<span class='line'>152</span>  * @param {object} plugin The plugin you wish to bind to.
+<span class='line'>153</span>  */</span><span class="WHIT">
+<span class='line'>154</span> </span><span class="NAME">minplayer.prototype.bindTo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">plugin</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>155</span> </span><span class="WHIT">  </span><span class="NAME">plugin.bind</span><span class="PUNC">(</span><span class="STRN">'error'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">player</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>156</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">event</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>157</span> </span><span class="WHIT">      </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">player.currentPlayer</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">'html5'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>158</span> </span><span class="WHIT">        </span><span class="NAME">minplayer.player</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'minplayer'</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>159</span> </span><span class="WHIT">        </span><span class="NAME">player.options.file.player</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'minplayer'</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>160</span> </span><span class="WHIT">        </span><span class="NAME">player.loadPlayer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>161</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>162</span> </span><span class="WHIT">      </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>163</span> </span><span class="WHIT">        </span><span class="NAME">player.showError</span><span class="PUNC">(</span><span class="NAME">data</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>164</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>165</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>166</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>167</span> 
+<span class='line'>168</span> </span><span class="WHIT">  </span><span class="COMM">// Bind to the fullscreen event.</span><span class="WHIT">
+<span class='line'>169</span> </span><span class="WHIT">  </span><span class="NAME">plugin.bind</span><span class="PUNC">(</span><span class="STRN">'fullscreen'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">player</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>170</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">event</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>171</span> </span><span class="WHIT">      </span><span class="NAME">player.resize</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>172</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>173</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>174</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>175</span> 
+<span class='line'>176</span> </span><span class="COMM">/**
+<span class='line'>177</span>  * We need to bind to events we are interested in.
+<span class='line'>178</span>  */</span><span class="WHIT">
+<span class='line'>179</span> </span><span class="NAME">minplayer.prototype.addEvents</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>180</span> </span><span class="WHIT">  </span><span class="NAME">minplayer.get.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.options.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">player</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>181</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">plugin</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>182</span> </span><span class="WHIT">      </span><span class="NAME">player.bindTo</span><span class="PUNC">(</span><span class="NAME">plugin</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>183</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>184</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>185</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>186</span> 
+<span class='line'>187</span> </span><span class="COMM">/**
+<span class='line'>188</span>  * Sets an error on the player.
+<span class='line'>189</span>  *
+<span class='line'>190</span>  * @param {string} error The error to display on the player.
+<span class='line'>191</span>  */</span><span class="WHIT">
+<span class='line'>192</span> </span><span class="NAME">minplayer.prototype.showError</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">error</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>193</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">error</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="STRN">'object'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>194</span> </span><span class="WHIT">    </span><span class="NAME">error</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">error</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>195</span> </span><span class="WHIT">    </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.elements.error</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>196</span> 
+<span class='line'>197</span> </span><span class="WHIT">      </span><span class="COMM">// Set the error text.</span><span class="WHIT">
+<span class='line'>198</span> </span><span class="WHIT">      </span><span class="NAME">this.elements.error.text</span><span class="PUNC">(</span><span class="NAME">error</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>199</span> </span><span class="WHIT">      </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">error</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>200</span> </span><span class="WHIT">        </span><span class="COMM">// Show the error message.</span><span class="WHIT">
+<span class='line'>201</span> </span><span class="WHIT">        </span><span class="NAME">this.elements.error.show</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>202</span> 
+<span class='line'>203</span> </span><span class="WHIT">        </span><span class="COMM">// Only show this error for a time interval.</span><span class="WHIT">
+<span class='line'>204</span> </span><span class="WHIT">        </span><span class="NAME">setTimeout</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">player</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>205</span> </span><span class="WHIT">          </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>206</span> </span><span class="WHIT">            </span><span class="NAME">player.elements.error.hide</span><span class="PUNC">(</span><span class="STRN">'slow'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>207</span> </span><span class="WHIT">          </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>208</span> </span><span class="WHIT">        </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">5000</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>209</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>210</span> </span><span class="WHIT">      </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>211</span> </span><span class="WHIT">        </span><span class="NAME">this.elements.error.hide</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>212</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>213</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>214</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>215</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>216</span> 
+<span class='line'>217</span> </span><span class="COMM">/**
+<span class='line'>218</span>  * Adds key events to the player.
+<span class='line'>219</span>  */</span><span class="WHIT">
+<span class='line'>220</span> </span><span class="NAME">minplayer.prototype.addKeyEvents</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>221</span> </span><span class="WHIT">  </span><span class="NAME">jQuery</span><span class="PUNC">(</span><span class="NAME">document</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="STRN">'keydown'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">player</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>222</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">event</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>223</span> </span><span class="WHIT">      </span><span class="KEYW">switch</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">event.keyCode</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>224</span> </span><span class="WHIT">        </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">113</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="COMM">// ESC</span><span class="WHIT">
+<span class='line'>225</span> </span><span class="WHIT">        </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">27</span><span class="PUNC">:</span><span class="WHIT">  </span><span class="COMM">// Q</span><span class="WHIT">
+<span class='line'>226</span> </span><span class="WHIT">          </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">player.isFullScreen</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>227</span> </span><span class="WHIT">            </span><span class="NAME">player.fullscreen</span><span class="PUNC">(</span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>228</span> </span><span class="WHIT">          </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>229</span> </span><span class="WHIT">          </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>230</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>231</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>232</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>233</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>234</span> 
+<span class='line'>235</span> </span><span class="COMM">/**
+<span class='line'>236</span>  * Returns all the media files available for this player.
+<span class='line'>237</span>  *
+<span class='line'>238</span>  * @return {array} All the media files for this player.
+<span class='line'>239</span>  */</span><span class="WHIT">
+<span class='line'>240</span> </span><span class="NAME">minplayer.prototype.getFiles</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>241</span> 
+<span class='line'>242</span> </span><span class="WHIT">  </span><span class="COMM">// If they provide the files in the options, use those first.</span><span class="WHIT">
+<span class='line'>243</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.options.files</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>244</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.options.files</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>245</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>246</span> 
+<span class='line'>247</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.options.file</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>248</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.options.file</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>249</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>250</span> 
+<span class='line'>251</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">files</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>252</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">mediaSrc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>253</span> 
+<span class='line'>254</span> </span><span class="WHIT">  </span><span class="COMM">// Get the files involved...</span><span class="WHIT">
+<span class='line'>255</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.elements.media</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>256</span> </span><span class="WHIT">    </span><span class="NAME">mediaSrc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.elements.media.attr</span><span class="PUNC">(</span><span class="STRN">'src'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>257</span> </span><span class="WHIT">    </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">mediaSrc</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>258</span> </span><span class="WHIT">      </span><span class="NAME">files.push</span><span class="PUNC">(</span><span class="PUNC">{</span><span class="STRN">'path'</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">mediaSrc</span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>259</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>260</span> </span><span class="WHIT">    </span><span class="NAME">jQuery</span><span class="PUNC">(</span><span class="STRN">'source'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.elements.media</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">each</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>261</span> </span><span class="WHIT">      </span><span class="NAME">files.push</span><span class="PUNC">(</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>262</span> </span><span class="WHIT">        </span><span class="STRN">'path'</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">jQuery</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">'src'</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>263</span> </span><span class="WHIT">        </span><span class="STRN">'mimetype'</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">jQuery</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">'type'</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>264</span> </span><span class="WHIT">        </span><span class="STRN">'codecs'</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">jQuery</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">'codecs'</span><span class="PUNC">)</span><span class="WHIT">
+<span class='line'>265</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>266</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>267</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>268</span> 
+<span class='line'>269</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">files</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>270</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>271</span> 
+<span class='line'>272</span> </span><span class="COMM">/**
+<span class='line'>273</span>  * Returns the full media player object.
+<span class='line'>274</span>  *
+<span class='line'>275</span>  * @param {array} files An array of files to chose from.
+<span class='line'>276</span>  * @return {object} The best media file to play in the current browser.
+<span class='line'>277</span>  */</span><span class="WHIT">
+<span class='line'>278</span> </span><span class="NAME">minplayer.getMediaFile</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">files</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>279</span> 
+<span class='line'>280</span> </span><span class="WHIT">  </span><span class="COMM">// If there are no files then return null.</span><span class="WHIT">
+<span class='line'>281</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">files</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>282</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>283</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>284</span> 
+<span class='line'>285</span> </span><span class="WHIT">  </span><span class="COMM">// If the file is already a file object then just return.</span><span class="WHIT">
+<span class='line'>286</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">files</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'string'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">files.path</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">files.id</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>287</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">minplayer.file</span><span class="PUNC">(</span><span class="NAME">files</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>288</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>289</span> 
+<span class='line'>290</span> </span><span class="WHIT">  </span><span class="COMM">// Add the files and get the best player to play.</span><span class="WHIT">
+<span class='line'>291</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bestPriority</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">mFile</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">file</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>292</span> </span><span class="WHIT">  </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">files</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>293</span> </span><span class="WHIT">    </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">files.hasOwnProperty</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>294</span> </span><span class="WHIT">      </span><span class="NAME">file</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">minplayer.file</span><span class="PUNC">(</span><span class="NAME">files</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>295</span> </span><span class="WHIT">      </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">file.player</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">file.priority</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NAME">bestPriority</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>296</span> </span><span class="WHIT">        </span><span class="NAME">mFile</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">file</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>297</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>298</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>299</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>300</span> 
+<span class='line'>301</span> </span><span class="WHIT">  </span><span class="COMM">// Return the best minplayer file.</span><span class="WHIT">
+<span class='line'>302</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">mFile</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>303</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>304</span> 
+<span class='line'>305</span> </span><span class="COMM">/**
+<span class='line'>306</span>  * Loads a media player based on the current file.
+<span class='line'>307</span>  *
+<span class='line'>308</span>  * @return {boolean} If a new player was loaded.
+<span class='line'>309</span>  */</span><span class="WHIT">
+<span class='line'>310</span> </span><span class="NAME">minplayer.prototype.loadPlayer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>311</span> 
+<span class='line'>312</span> </span><span class="WHIT">  </span><span class="COMM">// Do nothing if there isn't a file or anywhere to put it.</span><span class="WHIT">
+<span class='line'>313</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.options.file</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.elements.display.length</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>314</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>315</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>316</span> 
+<span class='line'>317</span> </span><span class="WHIT">  </span><span class="COMM">// If no player is set, then also return false.</span><span class="WHIT">
+<span class='line'>318</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.options.file.player</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>319</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>320</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>321</span> 
+<span class='line'>322</span> </span><span class="WHIT">  </span><span class="COMM">// Reset the error.</span><span class="WHIT">
+<span class='line'>323</span> </span><span class="WHIT">  </span><span class="NAME">this.showError</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>324</span> 
+<span class='line'>325</span> </span><span class="WHIT">  </span><span class="COMM">// Only destroy if the current player is different than the new player.</span><span class="WHIT">
+<span class='line'>326</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">player</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.options.file.player.toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>327</span> 
+<span class='line'>328</span> </span><span class="WHIT">  </span><span class="COMM">// If there isn't media or if the players are different.</span><span class="WHIT">
+<span class='line'>329</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.media</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">player</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="NAME">this.currentPlayer</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>330</span> 
+<span class='line'>331</span> </span><span class="WHIT">    </span><span class="COMM">// Set the current media player.</span><span class="WHIT">
+<span class='line'>332</span> </span><span class="WHIT">    </span><span class="NAME">this.currentPlayer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">player</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>333</span> 
+<span class='line'>334</span> </span><span class="WHIT">    </span><span class="COMM">// Do nothing if we don't have a display.</span><span class="WHIT">
+<span class='line'>335</span> </span><span class="WHIT">    </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.elements.display</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>336</span> </span><span class="WHIT">      </span><span class="NAME">this.showError</span><span class="PUNC">(</span><span class="STRN">'No media display found.'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>337</span> </span><span class="WHIT">      </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>338</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>339</span> 
+<span class='line'>340</span> </span><span class="WHIT">    </span><span class="COMM">// Destroy the current media.</span><span class="WHIT">
+<span class='line'>341</span> </span><span class="WHIT">    </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">queue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>342</span> </span><span class="WHIT">    </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.media</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>343</span> </span><span class="WHIT">      </span><span class="NAME">queue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.media.queue</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>344</span> </span><span class="WHIT">      </span><span class="NAME">this.media.destroy</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>345</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>346</span> 
+<span class='line'>347</span> </span><span class="WHIT">    </span><span class="COMM">// Get the class name and create the new player.</span><span class="WHIT">
+<span class='line'>348</span> </span><span class="WHIT">    </span><span class="NAME">pClass</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">minplayer.players</span><span class="PUNC">[</span><span class="NAME">this.options.file.player</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>349</span> 
+<span class='line'>350</span> </span><span class="WHIT">    </span><span class="COMM">// Create the new media player.</span><span class="WHIT">
+<span class='line'>351</span> </span><span class="WHIT">    </span><span class="NAME">this.options.mediaelement</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.elements.media</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>352</span> </span><span class="WHIT">    </span><span class="NAME">this.media</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">pClass</span><span class="PUNC">(</span><span class="NAME">this.elements.display</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.options</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">queue</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>353</span> 
+<span class='line'>354</span> </span><span class="WHIT">    </span><span class="COMM">// Now get the media when it is ready.</span><span class="WHIT">
+<span class='line'>355</span> </span><span class="WHIT">    </span><span class="NAME">this.get</span><span class="PUNC">(</span><span class="STRN">'media'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">player</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>356</span> </span><span class="WHIT">      </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">media</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>357</span> 
+<span class='line'>358</span> </span><span class="WHIT">        </span><span class="COMM">// Load the media.</span><span class="WHIT">
+<span class='line'>359</span> </span><span class="WHIT">        </span><span class="NAME">media.load</span><span class="PUNC">(</span><span class="NAME">player.options.file</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>360</span> </span><span class="WHIT">        </span><span class="NAME">player.display.addClass</span><span class="PUNC">(</span><span class="STRN">'minplayer-player-'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">media.mediaFile.player</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>361</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>362</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>363</span> 
+<span class='line'>364</span> </span><span class="WHIT">    </span><span class="COMM">// Return that a new player is loaded.</span><span class="WHIT">
+<span class='line'>365</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>366</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>367</span> </span><span class="WHIT">  </span><span class="COMM">// If the media object already exists...</span><span class="WHIT">
+<span class='line'>368</span> </span><span class="WHIT">  </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.media</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>369</span> 
+<span class='line'>370</span> </span><span class="WHIT">    </span><span class="COMM">// Now load the different media file.</span><span class="WHIT">
+<span class='line'>371</span> </span><span class="WHIT">    </span><span class="NAME">this.media.options</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.options</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>372</span> </span><span class="WHIT">    </span><span class="NAME">this.display.removeClass</span><span class="PUNC">(</span><span class="STRN">'minplayer-player-'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.media.mediaFile.player</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>373</span> </span><span class="WHIT">    </span><span class="NAME">this.media.load</span><span class="PUNC">(</span><span class="NAME">this.options.file</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>374</span> </span><span class="WHIT">    </span><span class="NAME">this.display.addClass</span><span class="PUNC">(</span><span class="STRN">'minplayer-player-'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.media.mediaFile.player</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>375</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>376</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>377</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>378</span> 
+<span class='line'>379</span> </span><span class="COMM">/**
+<span class='line'>380</span>  * Load a set of files or a single file for the media player.
+<span class='line'>381</span>  *
+<span class='line'>382</span>  * @param {array} files An array of files to chose from to load.
+<span class='line'>383</span>  */</span><span class="WHIT">
+<span class='line'>384</span> </span><span class="NAME">minplayer.prototype.load</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">files</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>385</span> 
+<span class='line'>386</span> </span><span class="WHIT">  </span><span class="COMM">// Set the id and class.</span><span class="WHIT">
+<span class='line'>387</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pClass</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>388</span> 
+<span class='line'>389</span> </span><span class="WHIT">  </span><span class="COMM">// If no file was provided, then get it.</span><span class="WHIT">
+<span class='line'>390</span> </span><span class="WHIT">  </span><span class="NAME">this.options.files</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">files</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">this.options.files</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>391</span> </span><span class="WHIT">  </span><span class="NAME">this.options.file</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">minplayer.getMediaFile</span><span class="PUNC">(</span><span class="NAME">this.options.files</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>392</span> 
+<span class='line'>393</span> </span><span class="WHIT">  </span><span class="COMM">// Now load the player.</span><span class="WHIT">
+<span class='line'>394</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.loadPlayer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>395</span> 
+<span class='line'>396</span> </span><span class="WHIT">    </span><span class="COMM">// Add the events since we now have a player.</span><span class="WHIT">
+<span class='line'>397</span> </span><span class="WHIT">    </span><span class="NAME">this.bindTo</span><span class="PUNC">(</span><span class="NAME">this.media</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>398</span> 
+<span class='line'>399</span> </span><span class="WHIT">    </span><span class="COMM">// If the player isn't valid, then show an error.</span><span class="WHIT">
+<span class='line'>400</span> </span><span class="WHIT">    </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.options.file.mimetype</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">this.options.file.player</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>401</span> </span><span class="WHIT">      </span><span class="NAME">this.showError</span><span class="PUNC">(</span><span class="STRN">'Cannot play media: '</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.options.file.mimetype</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>402</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>403</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>404</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>405</span> 
+<span class='line'>406</span> </span><span class="COMM">/**
+<span class='line'>407</span>  * Called when the player is resized.
+<span class='line'>408</span>  */</span><span class="WHIT">
+<span class='line'>409</span> </span><span class="NAME">minplayer.prototype.resize</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>410</span> 
+<span class='line'>411</span> </span><span class="WHIT">  </span><span class="COMM">// Call onRezie for each plugin.</span><span class="WHIT">
+<span class='line'>412</span> </span><span class="WHIT">  </span><span class="NAME">this.get</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">plugin</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>413</span> </span><span class="WHIT">    </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">plugin.onResize</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>414</span> </span><span class="WHIT">      </span><span class="NAME">plugin.onResize</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>415</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>416</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>417</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>418</span> </span></pre></body></html>
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/doc/symbols/src/minplayer_src_minplayer.playLoader.js.html b/public/admin/js/osmplayer/doc/symbols/src/minplayer_src_minplayer.playLoader.js.html
new file mode 100644
index 0000000000000000000000000000000000000000..8cea6716664d7f06279fad0f9854bf3a5d51c5a3
--- /dev/null
+++ b/public/admin/js/osmplayer/doc/symbols/src/minplayer_src_minplayer.playLoader.js.html
@@ -0,0 +1,228 @@
+<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
+	.KEYW {color: #933;}
+	.COMM {color: #bbb; font-style: italic;}
+	.NUMB {color: #393;}
+	.STRN {color: #393;}
+	.REGX {color: #339;}
+	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
+	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/** The minplayer namespace. */</span><span class="WHIT">
+<span class='line'>  2</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">minplayer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">minplayer</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>  3</span> 
+<span class='line'>  4</span> </span><span class="COMM">/**
+<span class='line'>  5</span>  * @constructor
+<span class='line'>  6</span>  * @extends minplayer.display
+<span class='line'>  7</span>  * @class The play loader base class, which is used to control the busy
+<span class='line'>  8</span>  * cursor, big play button, and the opaque background which shows when the
+<span class='line'>  9</span>  * player is paused.
+<span class='line'> 10</span>  *
+<span class='line'> 11</span>  * @param {object} context The jQuery context.
+<span class='line'> 12</span>  * @param {object} options This components options.
+<span class='line'> 13</span>  */</span><span class="WHIT">
+<span class='line'> 14</span> </span><span class="NAME">minplayer.playLoader</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">context</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 15</span> 
+<span class='line'> 16</span> </span><span class="WHIT">  </span><span class="COMM">// Define the flags that control the busy cursor.</span><span class="WHIT">
+<span class='line'> 17</span> </span><span class="WHIT">  </span><span class="NAME">this.busy</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">minplayer.flags</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 18</span> 
+<span class='line'> 19</span> </span><span class="WHIT">  </span><span class="COMM">// Define the flags that control the big play button.</span><span class="WHIT">
+<span class='line'> 20</span> </span><span class="WHIT">  </span><span class="NAME">this.bigPlay</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">minplayer.flags</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 21</span> 
+<span class='line'> 22</span> </span><span class="WHIT">  </span><span class="COMM">// Define the flags the control the preview.</span><span class="WHIT">
+<span class='line'> 23</span> </span><span class="WHIT">  </span><span class="NAME">this.previewFlag</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">minplayer.flags</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 24</span> 
+<span class='line'> 25</span> </span><span class="WHIT">  </span><span class="COMM">/** The preview image. */</span><span class="WHIT">
+<span class='line'> 26</span> </span><span class="WHIT">  </span><span class="NAME">this.preview</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 27</span> 
+<span class='line'> 28</span> </span><span class="WHIT">  </span><span class="COMM">/** If the playLoader is enabled. */</span><span class="WHIT">
+<span class='line'> 29</span> </span><span class="WHIT">  </span><span class="NAME">this.enabled</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 30</span> 
+<span class='line'> 31</span> </span><span class="WHIT">  </span><span class="COMM">// Derive from display</span><span class="WHIT">
+<span class='line'> 32</span> </span><span class="WHIT">  </span><span class="NAME">minplayer.display.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'playLoader'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">context</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 33</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 34</span> 
+<span class='line'> 35</span> </span><span class="COMM">/** Derive from minplayer.display. */</span><span class="WHIT">
+<span class='line'> 36</span> </span><span class="NAME">minplayer.playLoader.prototype</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">minplayer.display</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 37</span> 
+<span class='line'> 38</span> </span><span class="COMM">/** Reset the constructor. */</span><span class="WHIT">
+<span class='line'> 39</span> </span><span class="NAME">minplayer.playLoader.prototype.constructor</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">minplayer.playLoader</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 40</span> 
+<span class='line'> 41</span> </span><span class="COMM">/**
+<span class='line'> 42</span>  * The constructor.
+<span class='line'> 43</span>  */</span><span class="WHIT">
+<span class='line'> 44</span> </span><span class="NAME">minplayer.playLoader.prototype.construct</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 45</span> 
+<span class='line'> 46</span> </span><span class="WHIT">  </span><span class="COMM">// Call the media display constructor.</span><span class="WHIT">
+<span class='line'> 47</span> </span><span class="WHIT">  </span><span class="NAME">minplayer.display.prototype.construct.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 48</span> 
+<span class='line'> 49</span> </span><span class="WHIT">  </span><span class="COMM">// Set the plugin name within the options.</span><span class="WHIT">
+<span class='line'> 50</span> </span><span class="WHIT">  </span><span class="NAME">this.options.pluginName</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'playLoader'</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 51</span> 
+<span class='line'> 52</span> </span><span class="WHIT">  </span><span class="COMM">// Get the media plugin.</span><span class="WHIT">
+<span class='line'> 53</span> </span><span class="WHIT">  </span><span class="NAME">this.initialize</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 54</span> 
+<span class='line'> 55</span> </span><span class="WHIT">  </span><span class="COMM">// We are now ready.</span><span class="WHIT">
+<span class='line'> 56</span> </span><span class="WHIT">  </span><span class="NAME">this.ready</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 57</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 58</span> 
+<span class='line'> 59</span> </span><span class="COMM">/**
+<span class='line'> 60</span>  * Initialize the playLoader.
+<span class='line'> 61</span>  */</span><span class="WHIT">
+<span class='line'> 62</span> </span><span class="NAME">minplayer.playLoader.prototype.initialize</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 63</span> 
+<span class='line'> 64</span> </span><span class="WHIT">  </span><span class="COMM">// Get the media plugin.</span><span class="WHIT">
+<span class='line'> 65</span> </span><span class="WHIT">  </span><span class="NAME">this.get</span><span class="PUNC">(</span><span class="STRN">'media'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">media</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 66</span> 
+<span class='line'> 67</span> </span><span class="WHIT">    </span><span class="COMM">// Only bind if this player does not have its own play loader.</span><span class="WHIT">
+<span class='line'> 68</span> </span><span class="WHIT">    </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">media.hasPlayLoader</span><span class="PUNC">(</span><span class="NAME">this.options.preview</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 69</span> 
+<span class='line'> 70</span> </span><span class="WHIT">      </span><span class="COMM">// Enable the playLoader.</span><span class="WHIT">
+<span class='line'> 71</span> </span><span class="WHIT">      </span><span class="NAME">this.enabled</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 72</span> 
+<span class='line'> 73</span> </span><span class="WHIT">      </span><span class="COMM">// Get the poster image.</span><span class="WHIT">
+<span class='line'> 74</span> </span><span class="WHIT">      </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.options.preview</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 75</span> </span><span class="WHIT">        </span><span class="NAME">this.options.preview</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">media.elements.media.attr</span><span class="PUNC">(</span><span class="STRN">'poster'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 76</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 77</span> 
+<span class='line'> 78</span> </span><span class="WHIT">      </span><span class="COMM">// Reset the media's poster image.</span><span class="WHIT">
+<span class='line'> 79</span> </span><span class="WHIT">      </span><span class="NAME">media.elements.media.attr</span><span class="PUNC">(</span><span class="STRN">'poster'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 80</span> 
+<span class='line'> 81</span> </span><span class="WHIT">      </span><span class="COMM">// Load the preview image.</span><span class="WHIT">
+<span class='line'> 82</span> </span><span class="WHIT">      </span><span class="NAME">this.loadPreview</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 83</span> 
+<span class='line'> 84</span> </span><span class="WHIT">      </span><span class="COMM">// Trigger a play event when someone clicks on the controller.</span><span class="WHIT">
+<span class='line'> 85</span> </span><span class="WHIT">      </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.elements.bigPlay</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 86</span> </span><span class="WHIT">        </span><span class="NAME">minplayer.click</span><span class="PUNC">(</span><span class="NAME">this.elements.bigPlay.unbind</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">event</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 87</span> </span><span class="WHIT">          </span><span class="NAME">event.preventDefault</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 88</span> </span><span class="WHIT">          </span><span class="NAME">minplayer.showAll</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 89</span> </span><span class="WHIT">          </span><span class="NAME">jQuery</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">hide</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 90</span> </span><span class="WHIT">          </span><span class="NAME">media.play</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 91</span> </span><span class="WHIT">        </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 92</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 93</span> 
+<span class='line'> 94</span> </span><span class="WHIT">      </span><span class="COMM">// Bind to the player events to control the play loader.</span><span class="WHIT">
+<span class='line'> 95</span> </span><span class="WHIT">      </span><span class="NAME">media.unbind</span><span class="PUNC">(</span><span class="STRN">'loadstart'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="STRN">'loadstart'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">playLoader</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 96</span> </span><span class="WHIT">        </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">event</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 97</span> </span><span class="WHIT">          </span><span class="NAME">playLoader.busy.setFlag</span><span class="PUNC">(</span><span class="STRN">'media'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 98</span> </span><span class="WHIT">          </span><span class="NAME">playLoader.bigPlay.setFlag</span><span class="PUNC">(</span><span class="STRN">'media'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 99</span> </span><span class="WHIT">          </span><span class="NAME">playLoader.previewFlag.setFlag</span><span class="PUNC">(</span><span class="STRN">'media'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>100</span> </span><span class="WHIT">          </span><span class="NAME">playLoader.checkVisibility</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>101</span> </span><span class="WHIT">        </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>102</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>103</span> </span><span class="WHIT">      </span><span class="NAME">media.bind</span><span class="PUNC">(</span><span class="STRN">'waiting'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">playLoader</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>104</span> </span><span class="WHIT">        </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">event</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>105</span> </span><span class="WHIT">          </span><span class="NAME">playLoader.busy.setFlag</span><span class="PUNC">(</span><span class="STRN">'media'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>106</span> </span><span class="WHIT">          </span><span class="NAME">playLoader.checkVisibility</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>107</span> </span><span class="WHIT">        </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>108</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>109</span> </span><span class="WHIT">      </span><span class="NAME">media.bind</span><span class="PUNC">(</span><span class="STRN">'loadeddata'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">playLoader</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>110</span> </span><span class="WHIT">        </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">event</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>111</span> </span><span class="WHIT">          </span><span class="NAME">playLoader.busy.setFlag</span><span class="PUNC">(</span><span class="STRN">'media'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>112</span> </span><span class="WHIT">          </span><span class="NAME">playLoader.checkVisibility</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>113</span> </span><span class="WHIT">        </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>114</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>115</span> </span><span class="WHIT">      </span><span class="NAME">media.bind</span><span class="PUNC">(</span><span class="STRN">'playing'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">playLoader</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>116</span> </span><span class="WHIT">        </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">event</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>117</span> </span><span class="WHIT">          </span><span class="NAME">playLoader.busy.setFlag</span><span class="PUNC">(</span><span class="STRN">'media'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>118</span> </span><span class="WHIT">          </span><span class="NAME">playLoader.bigPlay.setFlag</span><span class="PUNC">(</span><span class="STRN">'media'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>119</span> </span><span class="WHIT">          </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">media.mediaFile.type</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="STRN">'audio'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>120</span> </span><span class="WHIT">            </span><span class="NAME">playLoader.previewFlag.setFlag</span><span class="PUNC">(</span><span class="STRN">'media'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>121</span> </span><span class="WHIT">          </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>122</span> </span><span class="WHIT">          </span><span class="NAME">playLoader.checkVisibility</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>123</span> </span><span class="WHIT">        </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>124</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>125</span> </span><span class="WHIT">      </span><span class="NAME">media.bind</span><span class="PUNC">(</span><span class="STRN">'pause'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">playLoader</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>126</span> </span><span class="WHIT">        </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">event</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>127</span> </span><span class="WHIT">          </span><span class="NAME">playLoader.bigPlay.setFlag</span><span class="PUNC">(</span><span class="STRN">'media'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>128</span> </span><span class="WHIT">          </span><span class="NAME">playLoader.checkVisibility</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>129</span> </span><span class="WHIT">        </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>130</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>131</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>132</span> </span><span class="WHIT">    </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>133</span> 
+<span class='line'>134</span> </span><span class="WHIT">      </span><span class="COMM">// Hide the display.</span><span class="WHIT">
+<span class='line'>135</span> </span><span class="WHIT">      </span><span class="NAME">this.enabled</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>136</span> </span><span class="WHIT">      </span><span class="NAME">this.hide</span><span class="PUNC">(</span><span class="NAME">this.elements.busy</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>137</span> </span><span class="WHIT">      </span><span class="NAME">this.hide</span><span class="PUNC">(</span><span class="NAME">this.elements.bigPlay</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>138</span> </span><span class="WHIT">      </span><span class="NAME">this.hide</span><span class="PUNC">(</span><span class="NAME">this.elements.preview</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>139</span> </span><span class="WHIT">      </span><span class="NAME">this.hide</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>140</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>141</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>142</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>143</span> 
+<span class='line'>144</span> </span><span class="COMM">/**
+<span class='line'>145</span>  * Loads the preview image.
+<span class='line'>146</span>  */</span><span class="WHIT">
+<span class='line'>147</span> </span><span class="NAME">minplayer.playLoader.prototype.loadPreview</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>148</span> 
+<span class='line'>149</span> </span><span class="WHIT">  </span><span class="COMM">// Ignore if disabled.</span><span class="WHIT">
+<span class='line'>150</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.enabled</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>151</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>152</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>153</span> 
+<span class='line'>154</span> </span><span class="WHIT">  </span><span class="COMM">// If the preview element exists.</span><span class="WHIT">
+<span class='line'>155</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.elements.preview</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>156</span> 
+<span class='line'>157</span> </span><span class="WHIT">    </span><span class="COMM">// If there is a preview to show...</span><span class="WHIT">
+<span class='line'>158</span> </span><span class="WHIT">    </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.options.preview</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>159</span> 
+<span class='line'>160</span> </span><span class="WHIT">      </span><span class="COMM">// Say that this has a preview.</span><span class="WHIT">
+<span class='line'>161</span> </span><span class="WHIT">      </span><span class="NAME">this.elements.preview.addClass</span><span class="PUNC">(</span><span class="STRN">'has-preview'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">show</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>162</span> 
+<span class='line'>163</span> </span><span class="WHIT">      </span><span class="COMM">// Create a new preview image.</span><span class="WHIT">
+<span class='line'>164</span> </span><span class="WHIT">      </span><span class="NAME">this.preview</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">minplayer.image</span><span class="PUNC">(</span><span class="NAME">this.elements.preview</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.options</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>165</span> 
+<span class='line'>166</span> </span><span class="WHIT">      </span><span class="COMM">// Create the image.</span><span class="WHIT">
+<span class='line'>167</span> </span><span class="WHIT">      </span><span class="NAME">this.preview.load</span><span class="PUNC">(</span><span class="NAME">this.options.preview</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>168</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>169</span> </span><span class="WHIT">    </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>170</span> 
+<span class='line'>171</span> </span><span class="WHIT">      </span><span class="COMM">// Hide the preview.</span><span class="WHIT">
+<span class='line'>172</span> </span><span class="WHIT">      </span><span class="NAME">this.elements.preview.hide</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>173</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>174</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>175</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>176</span> 
+<span class='line'>177</span> </span><span class="COMM">/**
+<span class='line'>178</span>  * Hide or show certain elements based on the state of the busy and big play
+<span class='line'>179</span>  * button.
+<span class='line'>180</span>  */</span><span class="WHIT">
+<span class='line'>181</span> </span><span class="NAME">minplayer.playLoader.prototype.checkVisibility</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>182</span> 
+<span class='line'>183</span> </span><span class="WHIT">  </span><span class="COMM">// Ignore if disabled.</span><span class="WHIT">
+<span class='line'>184</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.enabled</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>185</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>186</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>187</span> 
+<span class='line'>188</span> </span><span class="WHIT">  </span><span class="COMM">// Hide or show the busy cursor based on the flags.</span><span class="WHIT">
+<span class='line'>189</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.busy.flag</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>190</span> </span><span class="WHIT">    </span><span class="NAME">this.elements.busy.show</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>191</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>192</span> </span><span class="WHIT">  </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>193</span> </span><span class="WHIT">    </span><span class="NAME">this.elements.busy.hide</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>194</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>195</span> 
+<span class='line'>196</span> </span><span class="WHIT">  </span><span class="COMM">// Hide or show the big play button based on the flags.</span><span class="WHIT">
+<span class='line'>197</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.bigPlay.flag</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>198</span> </span><span class="WHIT">    </span><span class="NAME">this.elements.bigPlay.show</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>199</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>200</span> </span><span class="WHIT">  </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>201</span> </span><span class="WHIT">    </span><span class="NAME">this.elements.bigPlay.hide</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>202</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>203</span> 
+<span class='line'>204</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.previewFlag.flag</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>205</span> </span><span class="WHIT">    </span><span class="NAME">this.elements.preview.show</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>206</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>207</span> </span><span class="WHIT">  </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>208</span> </span><span class="WHIT">    </span><span class="NAME">this.elements.preview.hide</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>209</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>210</span> 
+<span class='line'>211</span> </span><span class="WHIT">  </span><span class="COMM">// Show the control either flag is set.</span><span class="WHIT">
+<span class='line'>212</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.bigPlay.flag</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">this.busy.flag</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">this.previewFlag.flag</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>213</span> </span><span class="WHIT">    </span><span class="NAME">this.display.show</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>214</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>215</span> 
+<span class='line'>216</span> </span><span class="WHIT">  </span><span class="COMM">// Hide the whole control if both flags are 0.</span><span class="WHIT">
+<span class='line'>217</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.bigPlay.flag</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">this.busy.flag</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">this.previewFlag.flag</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>218</span> </span><span class="WHIT">    </span><span class="NAME">this.display.hide</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>219</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>220</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>221</span> </span></pre></body></html>
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/doc/symbols/src/minplayer_src_minplayer.players.base.js.html b/public/admin/js/osmplayer/doc/symbols/src/minplayer_src_minplayer.players.base.js.html
new file mode 100644
index 0000000000000000000000000000000000000000..7d58d8f1040c858728e495e09eea9c593b3f7ecb
--- /dev/null
+++ b/public/admin/js/osmplayer/doc/symbols/src/minplayer_src_minplayer.players.base.js.html
@@ -0,0 +1,661 @@
+<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
+	.KEYW {color: #933;}
+	.COMM {color: #bbb; font-style: italic;}
+	.NUMB {color: #393;}
+	.STRN {color: #393;}
+	.REGX {color: #339;}
+	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
+	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/** The minplayer namespace. */</span><span class="WHIT">
+<span class='line'>  2</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">minplayer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">minplayer</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>  3</span> 
+<span class='line'>  4</span> </span><span class="COMM">/** All the media player implementations */</span><span class="WHIT">
+<span class='line'>  5</span> </span><span class="NAME">minplayer.players</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">minplayer.players</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>  6</span> 
+<span class='line'>  7</span> </span><span class="COMM">/**
+<span class='line'>  8</span>  * @constructor
+<span class='line'>  9</span>  * @extends minplayer.display
+<span class='line'> 10</span>  * @class The base media player class where all media players derive from.
+<span class='line'> 11</span>  *
+<span class='line'> 12</span>  * @param {object} context The jQuery context.
+<span class='line'> 13</span>  * @param {object} options This components options.
+<span class='line'> 14</span>  * @param {object} queue The event queue to pass events around.
+<span class='line'> 15</span>  */</span><span class="WHIT">
+<span class='line'> 16</span> </span><span class="NAME">minplayer.players.base</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">context</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">queue</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 17</span> 
+<span class='line'> 18</span> </span><span class="WHIT">  </span><span class="COMM">// Derive from display</span><span class="WHIT">
+<span class='line'> 19</span> </span><span class="WHIT">  </span><span class="NAME">minplayer.display.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'media'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">context</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">queue</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 20</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 21</span> 
+<span class='line'> 22</span> </span><span class="COMM">/** Derive from minplayer.display. */</span><span class="WHIT">
+<span class='line'> 23</span> </span><span class="NAME">minplayer.players.base.prototype</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">minplayer.display</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 24</span> 
+<span class='line'> 25</span> </span><span class="COMM">/** Reset the constructor. */</span><span class="WHIT">
+<span class='line'> 26</span> </span><span class="NAME">minplayer.players.base.prototype.constructor</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">minplayer.players.base</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 27</span> 
+<span class='line'> 28</span> </span><span class="COMM">/**
+<span class='line'> 29</span>  * @see minplayer.display.getElements
+<span class='line'> 30</span>  * @this minplayer.players.base
+<span class='line'> 31</span>  * @return {object} The elements for this display.
+<span class='line'> 32</span>  */</span><span class="WHIT">
+<span class='line'> 33</span> </span><span class="NAME">minplayer.players.base.prototype.getElements</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 34</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">elements</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">minplayer.display.prototype.getElements.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 35</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">jQuery.extend</span><span class="PUNC">(</span><span class="NAME">elements</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 36</span> </span><span class="WHIT">    </span><span class="NAME">media</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">this.options.mediaelement</span><span class="WHIT">
+<span class='line'> 37</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 38</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 39</span> 
+<span class='line'> 40</span> </span><span class="COMM">/**
+<span class='line'> 41</span>  * Get the priority of this media player.
+<span class='line'> 42</span>  *
+<span class='line'> 43</span>  * @return {number} The priority of this media player.
+<span class='line'> 44</span>  */</span><span class="WHIT">
+<span class='line'> 45</span> </span><span class="NAME">minplayer.players.base.getPriority</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 46</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 47</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 48</span> 
+<span class='line'> 49</span> </span><span class="COMM">/**
+<span class='line'> 50</span>  * Returns the ID for the media being played.
+<span class='line'> 51</span>  *
+<span class='line'> 52</span>  * @param {object} file A {@link minplayer.file} object.
+<span class='line'> 53</span>  * @return {string} The ID for the provided media.
+<span class='line'> 54</span>  */</span><span class="WHIT">
+<span class='line'> 55</span> </span><span class="NAME">minplayer.players.base.getMediaId</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">file</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 56</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 57</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 58</span> 
+<span class='line'> 59</span> </span><span class="COMM">/**
+<span class='line'> 60</span>  * Determine if we can play the media file.
+<span class='line'> 61</span>  *
+<span class='line'> 62</span>  * @param {object} file A {@link minplayer.file} object.
+<span class='line'> 63</span>  * @return {boolean} If this player can play this media type.
+<span class='line'> 64</span>  */</span><span class="WHIT">
+<span class='line'> 65</span> </span><span class="NAME">minplayer.players.base.canPlay</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">file</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 66</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 67</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 68</span> 
+<span class='line'> 69</span> </span><span class="COMM">/**
+<span class='line'> 70</span>  * @see minplayer.plugin.construct
+<span class='line'> 71</span>  * @this minplayer.players.base
+<span class='line'> 72</span>  */</span><span class="WHIT">
+<span class='line'> 73</span> </span><span class="NAME">minplayer.players.base.prototype.construct</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 74</span> 
+<span class='line'> 75</span> </span><span class="WHIT">  </span><span class="COMM">// Call the media display constructor.</span><span class="WHIT">
+<span class='line'> 76</span> </span><span class="WHIT">  </span><span class="NAME">minplayer.display.prototype.construct.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 77</span> 
+<span class='line'> 78</span> </span><span class="WHIT">  </span><span class="COMM">// Set the plugin name within the options.</span><span class="WHIT">
+<span class='line'> 79</span> </span><span class="WHIT">  </span><span class="NAME">this.options.pluginName</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'basePlayer'</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 80</span> 
+<span class='line'> 81</span> </span><span class="WHIT">  </span><span class="COMM">/** The currently loaded media file. */</span><span class="WHIT">
+<span class='line'> 82</span> </span><span class="WHIT">  </span><span class="NAME">this.mediaFile</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.options.file</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 83</span> 
+<span class='line'> 84</span> </span><span class="WHIT">  </span><span class="COMM">// Clear the media player.</span><span class="WHIT">
+<span class='line'> 85</span> </span><span class="WHIT">  </span><span class="NAME">this.clear</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 86</span> 
+<span class='line'> 87</span> </span><span class="WHIT">  </span><span class="COMM">// Get the player display object.</span><span class="WHIT">
+<span class='line'> 88</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.playerFound</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 89</span> 
+<span class='line'> 90</span> </span><span class="WHIT">    </span><span class="COMM">// Add the new player.</span><span class="WHIT">
+<span class='line'> 91</span> </span><span class="WHIT">    </span><span class="NAME">this.addPlayer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 92</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 93</span> 
+<span class='line'> 94</span> </span><span class="WHIT">  </span><span class="COMM">// Get the player object...</span><span class="WHIT">
+<span class='line'> 95</span> </span><span class="WHIT">  </span><span class="NAME">this.player</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getPlayer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 96</span> 
+<span class='line'> 97</span> </span><span class="WHIT">  </span><span class="COMM">// Toggle playing if they click.</span><span class="WHIT">
+<span class='line'> 98</span> </span><span class="WHIT">  </span><span class="NAME">minplayer.click</span><span class="PUNC">(</span><span class="NAME">this.display</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">player</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 99</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>100</span> </span><span class="WHIT">      </span><span class="NAME">minplayer.showAll</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>101</span> </span><span class="WHIT">      </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">player.playing</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>102</span> </span><span class="WHIT">        </span><span class="NAME">player.pause</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>103</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>104</span> </span><span class="WHIT">      </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>105</span> </span><span class="WHIT">        </span><span class="NAME">player.play</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>106</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>107</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>108</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>109</span> 
+<span class='line'>110</span> </span><span class="WHIT">  </span><span class="COMM">// Bind to key events...</span><span class="WHIT">
+<span class='line'>111</span> </span><span class="WHIT">  </span><span class="NAME">jQuery</span><span class="PUNC">(</span><span class="NAME">document</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="STRN">'keydown'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">player</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>112</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">event</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>113</span> </span><span class="WHIT">      </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">player.hasFocus</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>114</span> </span><span class="WHIT">        </span><span class="NAME">event.preventDefault</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>115</span> </span><span class="WHIT">        </span><span class="KEYW">switch</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">event.keyCode</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>116</span> </span><span class="WHIT">          </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">32</span><span class="PUNC">:</span><span class="WHIT">  </span><span class="COMM">// SPACE</span><span class="WHIT">
+<span class='line'>117</span> </span><span class="WHIT">          </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">179</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="COMM">// GOOGLE play/pause button.</span><span class="WHIT">
+<span class='line'>118</span> </span><span class="WHIT">            </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">player.playing</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>119</span> </span><span class="WHIT">              </span><span class="NAME">player.pause</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>120</span> </span><span class="WHIT">            </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>121</span> </span><span class="WHIT">            </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>122</span> </span><span class="WHIT">              </span><span class="NAME">player.play</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>123</span> </span><span class="WHIT">            </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>124</span> </span><span class="WHIT">            </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>125</span> </span><span class="WHIT">          </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">38</span><span class="PUNC">:</span><span class="WHIT">  </span><span class="COMM">// UP</span><span class="WHIT">
+<span class='line'>126</span> </span><span class="WHIT">            </span><span class="NAME">player.setVolumeRelative</span><span class="PUNC">(</span><span class="NUMB">0.1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>127</span> </span><span class="WHIT">            </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>128</span> </span><span class="WHIT">          </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">40</span><span class="PUNC">:</span><span class="WHIT">  </span><span class="COMM">// DOWN</span><span class="WHIT">
+<span class='line'>129</span> </span><span class="WHIT">            </span><span class="NAME">player.setVolumeRelative</span><span class="PUNC">(</span><span class="PUNC">-</span><span class="NUMB">0.1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>130</span> </span><span class="WHIT">            </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>131</span> </span><span class="WHIT">          </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">37</span><span class="PUNC">:</span><span class="WHIT">  </span><span class="COMM">// LEFT</span><span class="WHIT">
+<span class='line'>132</span> </span><span class="WHIT">          </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">227</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="COMM">// GOOGLE TV REW</span><span class="WHIT">
+<span class='line'>133</span> </span><span class="WHIT">            </span><span class="NAME">player.seekRelative</span><span class="PUNC">(</span><span class="PUNC">-</span><span class="NUMB">0.05</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>134</span> </span><span class="WHIT">            </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>135</span> </span><span class="WHIT">          </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">39</span><span class="PUNC">:</span><span class="WHIT">  </span><span class="COMM">// RIGHT</span><span class="WHIT">
+<span class='line'>136</span> </span><span class="WHIT">          </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">228</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="COMM">// GOOGLE TV FW</span><span class="WHIT">
+<span class='line'>137</span> </span><span class="WHIT">            </span><span class="NAME">player.seekRelative</span><span class="PUNC">(</span><span class="NUMB">0.05</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>138</span> </span><span class="WHIT">            </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>139</span> </span><span class="WHIT">        </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>140</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>141</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>142</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>143</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>144</span> 
+<span class='line'>145</span> </span><span class="COMM">/**
+<span class='line'>146</span>  * Adds the media player.
+<span class='line'>147</span>  */</span><span class="WHIT">
+<span class='line'>148</span> </span><span class="NAME">minplayer.players.base.prototype.addPlayer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>149</span> 
+<span class='line'>150</span> </span><span class="WHIT">  </span><span class="COMM">// Remove the media element if found</span><span class="WHIT">
+<span class='line'>151</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.elements.media</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>152</span> </span><span class="WHIT">    </span><span class="NAME">this.elements.media.remove</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>153</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>154</span> 
+<span class='line'>155</span> </span><span class="WHIT">  </span><span class="COMM">// Create a new media player element.</span><span class="WHIT">
+<span class='line'>156</span> </span><span class="WHIT">  </span><span class="NAME">this.elements.media</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">jQuery</span><span class="PUNC">(</span><span class="NAME">this.create</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>157</span> </span><span class="WHIT">  </span><span class="NAME">this.display.html</span><span class="PUNC">(</span><span class="NAME">this.elements.media</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>158</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>159</span> 
+<span class='line'>160</span> </span><span class="COMM">/**
+<span class='line'>161</span>  * @see minplayer.plugin.destroy.
+<span class='line'>162</span>  */</span><span class="WHIT">
+<span class='line'>163</span> </span><span class="NAME">minplayer.players.base.prototype.destroy</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>164</span> </span><span class="WHIT">  </span><span class="NAME">minplayer.plugin.prototype.destroy.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>165</span> </span><span class="WHIT">  </span><span class="NAME">this.clear</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>166</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>167</span> 
+<span class='line'>168</span> </span><span class="COMM">/**
+<span class='line'>169</span>  * Clears the media player.
+<span class='line'>170</span>  */</span><span class="WHIT">
+<span class='line'>171</span> </span><span class="NAME">minplayer.players.base.prototype.clear</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>172</span> 
+<span class='line'>173</span> </span><span class="WHIT">  </span><span class="COMM">// Reset the ready flag.</span><span class="WHIT">
+<span class='line'>174</span> </span><span class="WHIT">  </span><span class="NAME">this.playerReady</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>175</span> 
+<span class='line'>176</span> </span><span class="WHIT">  </span><span class="COMM">// Reset the player.</span><span class="WHIT">
+<span class='line'>177</span> </span><span class="WHIT">  </span><span class="NAME">this.reset</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>178</span> 
+<span class='line'>179</span> </span><span class="WHIT">  </span><span class="COMM">// If the player exists, then unbind all events.</span><span class="WHIT">
+<span class='line'>180</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.player</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>181</span> </span><span class="WHIT">    </span><span class="NAME">jQuery</span><span class="PUNC">(</span><span class="NAME">this.player</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">unbind</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>182</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>183</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>184</span> 
+<span class='line'>185</span> </span><span class="COMM">/**
+<span class='line'>186</span>  * Resets all variables.
+<span class='line'>187</span>  */</span><span class="WHIT">
+<span class='line'>188</span> </span><span class="NAME">minplayer.players.base.prototype.reset</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>189</span> 
+<span class='line'>190</span> </span><span class="WHIT">  </span><span class="COMM">// The duration of the player.</span><span class="WHIT">
+<span class='line'>191</span> </span><span class="WHIT">  </span><span class="NAME">this.duration</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">minplayer.async</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>192</span> 
+<span class='line'>193</span> </span><span class="WHIT">  </span><span class="COMM">// The current play time of the player.</span><span class="WHIT">
+<span class='line'>194</span> </span><span class="WHIT">  </span><span class="NAME">this.currentTime</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">minplayer.async</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>195</span> 
+<span class='line'>196</span> </span><span class="WHIT">  </span><span class="COMM">// The amount of bytes loaded in the player.</span><span class="WHIT">
+<span class='line'>197</span> </span><span class="WHIT">  </span><span class="NAME">this.bytesLoaded</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">minplayer.async</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>198</span> 
+<span class='line'>199</span> </span><span class="WHIT">  </span><span class="COMM">// The total amount of bytes for the media.</span><span class="WHIT">
+<span class='line'>200</span> </span><span class="WHIT">  </span><span class="NAME">this.bytesTotal</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">minplayer.async</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>201</span> 
+<span class='line'>202</span> </span><span class="WHIT">  </span><span class="COMM">// The bytes that the download started with.</span><span class="WHIT">
+<span class='line'>203</span> </span><span class="WHIT">  </span><span class="NAME">this.bytesStart</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">minplayer.async</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>204</span> 
+<span class='line'>205</span> </span><span class="WHIT">  </span><span class="COMM">// The current volume of the player.</span><span class="WHIT">
+<span class='line'>206</span> </span><span class="WHIT">  </span><span class="NAME">this.volume</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">minplayer.async</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>207</span> 
+<span class='line'>208</span> </span><span class="WHIT">  </span><span class="COMM">// Reset focus.</span><span class="WHIT">
+<span class='line'>209</span> </span><span class="WHIT">  </span><span class="NAME">this.hasFocus</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>210</span> 
+<span class='line'>211</span> </span><span class="WHIT">  </span><span class="COMM">// We are not playing.</span><span class="WHIT">
+<span class='line'>212</span> </span><span class="WHIT">  </span><span class="NAME">this.playing</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>213</span> 
+<span class='line'>214</span> </span><span class="WHIT">  </span><span class="COMM">// We are not loading.</span><span class="WHIT">
+<span class='line'>215</span> </span><span class="WHIT">  </span><span class="NAME">this.loading</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>216</span> 
+<span class='line'>217</span> </span><span class="WHIT">  </span><span class="COMM">// Tell everyone else we reset.</span><span class="WHIT">
+<span class='line'>218</span> </span><span class="WHIT">  </span><span class="NAME">this.trigger</span><span class="PUNC">(</span><span class="STRN">'pause'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>219</span> </span><span class="WHIT">  </span><span class="NAME">this.trigger</span><span class="PUNC">(</span><span class="STRN">'waiting'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>220</span> </span><span class="WHIT">  </span><span class="NAME">this.trigger</span><span class="PUNC">(</span><span class="STRN">'progress'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="NAME">loaded</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">total</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">start</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>221</span> </span><span class="WHIT">  </span><span class="NAME">this.trigger</span><span class="PUNC">(</span><span class="STRN">'timeupdate'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="NAME">currentTime</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">duration</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>222</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>223</span> 
+<span class='line'>224</span> </span><span class="COMM">/**
+<span class='line'>225</span>  * Called when the player is ready to recieve events and commands.
+<span class='line'>226</span>  */</span><span class="WHIT">
+<span class='line'>227</span> </span><span class="NAME">minplayer.players.base.prototype.onReady</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>228</span> 
+<span class='line'>229</span> </span><span class="WHIT">  </span><span class="COMM">// Only continue if we are not already ready.</span><span class="WHIT">
+<span class='line'>230</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.playerReady</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>231</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>232</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>233</span> 
+<span class='line'>234</span> </span><span class="WHIT">  </span><span class="COMM">// Set the ready flag.</span><span class="WHIT">
+<span class='line'>235</span> </span><span class="WHIT">  </span><span class="NAME">this.playerReady</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>236</span> 
+<span class='line'>237</span> </span><span class="WHIT">  </span><span class="COMM">// Set the volume to the default.</span><span class="WHIT">
+<span class='line'>238</span> </span><span class="WHIT">  </span><span class="NAME">this.setVolume</span><span class="PUNC">(</span><span class="NAME">this.options.volume</span><span class="WHIT"> </span><span class="PUNC">/</span><span class="WHIT"> </span><span class="NUMB">100</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>239</span> 
+<span class='line'>240</span> </span><span class="WHIT">  </span><span class="COMM">// Setup the progress interval.</span><span class="WHIT">
+<span class='line'>241</span> </span><span class="WHIT">  </span><span class="NAME">this.loading</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>242</span> 
+<span class='line'>243</span> </span><span class="WHIT">  </span><span class="COMM">// Create a poll to get the progress.</span><span class="WHIT">
+<span class='line'>244</span> </span><span class="WHIT">  </span><span class="NAME">this.poll</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">player</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>245</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>246</span> 
+<span class='line'>247</span> </span><span class="WHIT">      </span><span class="COMM">// Only do this if the play interval is set.</span><span class="WHIT">
+<span class='line'>248</span> </span><span class="WHIT">      </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">player.loading</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>249</span> 
+<span class='line'>250</span> </span><span class="WHIT">        </span><span class="COMM">// Get the bytes loaded asynchronously.</span><span class="WHIT">
+<span class='line'>251</span> </span><span class="WHIT">        </span><span class="NAME">player.getBytesLoaded</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">bytesLoaded</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>252</span> 
+<span class='line'>253</span> </span><span class="WHIT">          </span><span class="COMM">// Get the bytes total asynchronously.</span><span class="WHIT">
+<span class='line'>254</span> </span><span class="WHIT">          </span><span class="NAME">player.getBytesTotal</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">bytesTotal</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>255</span> 
+<span class='line'>256</span> </span><span class="WHIT">            </span><span class="COMM">// Trigger an event about the progress.</span><span class="WHIT">
+<span class='line'>257</span> </span><span class="WHIT">            </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">bytesLoaded</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">bytesTotal</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>258</span> 
+<span class='line'>259</span> </span><span class="WHIT">              </span><span class="COMM">// Get the bytes start, but don't require it.</span><span class="WHIT">
+<span class='line'>260</span> </span><span class="WHIT">              </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bytesStart</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>261</span> </span><span class="WHIT">              </span><span class="NAME">player.getBytesStart</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">val</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>262</span> </span><span class="WHIT">                </span><span class="NAME">bytesStart</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">val</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>263</span> </span><span class="WHIT">              </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>264</span> 
+<span class='line'>265</span> </span><span class="WHIT">              </span><span class="COMM">// Trigger a progress event.</span><span class="WHIT">
+<span class='line'>266</span> </span><span class="WHIT">              </span><span class="NAME">player.trigger</span><span class="PUNC">(</span><span class="STRN">'progress'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>267</span> </span><span class="WHIT">                </span><span class="NAME">loaded</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">bytesLoaded</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>268</span> </span><span class="WHIT">                </span><span class="NAME">total</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">bytesTotal</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>269</span> </span><span class="WHIT">                </span><span class="NAME">start</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">bytesStart</span><span class="WHIT">
+<span class='line'>270</span> </span><span class="WHIT">              </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>271</span> 
+<span class='line'>272</span> </span><span class="WHIT">              </span><span class="COMM">// Say we are not longer loading if they are equal.</span><span class="WHIT">
+<span class='line'>273</span> </span><span class="WHIT">              </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">bytesLoaded</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NAME">bytesTotal</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>274</span> </span><span class="WHIT">                </span><span class="NAME">player.loading</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>275</span> </span><span class="WHIT">              </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>276</span> </span><span class="WHIT">            </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>277</span> </span><span class="WHIT">          </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>278</span> </span><span class="WHIT">        </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>279</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>280</span> 
+<span class='line'>281</span> </span><span class="WHIT">      </span><span class="COMM">// Keep polling as long as its loading...</span><span class="WHIT">
+<span class='line'>282</span> </span><span class="WHIT">      </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">player.loading</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>283</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>284</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1000</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>285</span> 
+<span class='line'>286</span> </span><span class="WHIT">  </span><span class="COMM">// We are now ready.</span><span class="WHIT">
+<span class='line'>287</span> </span><span class="WHIT">  </span><span class="NAME">this.ready</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>288</span> 
+<span class='line'>289</span> </span><span class="WHIT">  </span><span class="COMM">// Trigger that the load has started.</span><span class="WHIT">
+<span class='line'>290</span> </span><span class="WHIT">  </span><span class="NAME">this.trigger</span><span class="PUNC">(</span><span class="STRN">'loadstart'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>291</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>292</span> 
+<span class='line'>293</span> </span><span class="COMM">/**
+<span class='line'>294</span>  * Should be called when the media is playing.
+<span class='line'>295</span>  */</span><span class="WHIT">
+<span class='line'>296</span> </span><span class="NAME">minplayer.players.base.prototype.onPlaying</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>297</span> 
+<span class='line'>298</span> </span><span class="WHIT">  </span><span class="COMM">// Trigger an event that we are playing.</span><span class="WHIT">
+<span class='line'>299</span> </span><span class="WHIT">  </span><span class="NAME">this.trigger</span><span class="PUNC">(</span><span class="STRN">'playing'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>300</span> 
+<span class='line'>301</span> </span><span class="WHIT">  </span><span class="COMM">// Say that this player has focus.</span><span class="WHIT">
+<span class='line'>302</span> </span><span class="WHIT">  </span><span class="NAME">this.hasFocus</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>303</span> 
+<span class='line'>304</span> </span><span class="WHIT">  </span><span class="COMM">// Set the playInterval to true.</span><span class="WHIT">
+<span class='line'>305</span> </span><span class="WHIT">  </span><span class="NAME">this.playing</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>306</span> 
+<span class='line'>307</span> </span><span class="WHIT">  </span><span class="COMM">// Create a poll to get the timeupate.</span><span class="WHIT">
+<span class='line'>308</span> </span><span class="WHIT">  </span><span class="NAME">this.poll</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">player</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>309</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>310</span> 
+<span class='line'>311</span> </span><span class="WHIT">      </span><span class="COMM">// Only do this if the play interval is set.</span><span class="WHIT">
+<span class='line'>312</span> </span><span class="WHIT">      </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">player.playing</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>313</span> 
+<span class='line'>314</span> </span><span class="WHIT">        </span><span class="COMM">// Get the current time asyncrhonously.</span><span class="WHIT">
+<span class='line'>315</span> </span><span class="WHIT">        </span><span class="NAME">player.getCurrentTime</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">currentTime</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>316</span> 
+<span class='line'>317</span> </span><span class="WHIT">          </span><span class="COMM">// Get the duration asynchronously.</span><span class="WHIT">
+<span class='line'>318</span> </span><span class="WHIT">          </span><span class="NAME">player.getDuration</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">duration</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>319</span> 
+<span class='line'>320</span> </span><span class="WHIT">            </span><span class="COMM">// Convert these to floats.</span><span class="WHIT">
+<span class='line'>321</span> </span><span class="WHIT">            </span><span class="NAME">currentTime</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">parseFloat</span><span class="PUNC">(</span><span class="NAME">currentTime</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>322</span> </span><span class="WHIT">            </span><span class="NAME">duration</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">parseFloat</span><span class="PUNC">(</span><span class="NAME">duration</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>323</span> 
+<span class='line'>324</span> </span><span class="WHIT">            </span><span class="COMM">// Trigger an event about the progress.</span><span class="WHIT">
+<span class='line'>325</span> </span><span class="WHIT">            </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">currentTime</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">duration</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>326</span> 
+<span class='line'>327</span> </span><span class="WHIT">              </span><span class="COMM">// Trigger an update event.</span><span class="WHIT">
+<span class='line'>328</span> </span><span class="WHIT">              </span><span class="NAME">player.trigger</span><span class="PUNC">(</span><span class="STRN">'timeupdate'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>329</span> </span><span class="WHIT">                </span><span class="NAME">currentTime</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">currentTime</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>330</span> </span><span class="WHIT">                </span><span class="NAME">duration</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">duration</span><span class="WHIT">
+<span class='line'>331</span> </span><span class="WHIT">              </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>332</span> </span><span class="WHIT">            </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>333</span> </span><span class="WHIT">          </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>334</span> </span><span class="WHIT">        </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>335</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>336</span> 
+<span class='line'>337</span> </span><span class="WHIT">      </span><span class="COMM">// Keep polling as long as it is playing.</span><span class="WHIT">
+<span class='line'>338</span> </span><span class="WHIT">      </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">player.playing</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>339</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>340</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1000</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>341</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>342</span> 
+<span class='line'>343</span> </span><span class="COMM">/**
+<span class='line'>344</span>  * Should be called when the media is paused.
+<span class='line'>345</span>  */</span><span class="WHIT">
+<span class='line'>346</span> </span><span class="NAME">minplayer.players.base.prototype.onPaused</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>347</span> 
+<span class='line'>348</span> </span><span class="WHIT">  </span><span class="COMM">// Trigger an event that we are paused.</span><span class="WHIT">
+<span class='line'>349</span> </span><span class="WHIT">  </span><span class="NAME">this.trigger</span><span class="PUNC">(</span><span class="STRN">'pause'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>350</span> 
+<span class='line'>351</span> </span><span class="WHIT">  </span><span class="COMM">// Remove focus.</span><span class="WHIT">
+<span class='line'>352</span> </span><span class="WHIT">  </span><span class="NAME">this.hasFocus</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>353</span> 
+<span class='line'>354</span> </span><span class="WHIT">  </span><span class="COMM">// Say we are not playing.</span><span class="WHIT">
+<span class='line'>355</span> </span><span class="WHIT">  </span><span class="NAME">this.playing</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>356</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>357</span> 
+<span class='line'>358</span> </span><span class="COMM">/**
+<span class='line'>359</span>  * Should be called when the media is complete.
+<span class='line'>360</span>  */</span><span class="WHIT">
+<span class='line'>361</span> </span><span class="NAME">minplayer.players.base.prototype.onComplete</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>362</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.playing</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>363</span> </span><span class="WHIT">    </span><span class="NAME">this.onPaused</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>364</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>365</span> 
+<span class='line'>366</span> </span><span class="WHIT">  </span><span class="COMM">// Stop the intervals.</span><span class="WHIT">
+<span class='line'>367</span> </span><span class="WHIT">  </span><span class="NAME">this.playing</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>368</span> </span><span class="WHIT">  </span><span class="NAME">this.loading</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>369</span> </span><span class="WHIT">  </span><span class="NAME">this.hasFocus</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>370</span> </span><span class="WHIT">  </span><span class="NAME">this.trigger</span><span class="PUNC">(</span><span class="STRN">'ended'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>371</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>372</span> 
+<span class='line'>373</span> </span><span class="COMM">/**
+<span class='line'>374</span>  * Should be called when the media is done loading.
+<span class='line'>375</span>  */</span><span class="WHIT">
+<span class='line'>376</span> </span><span class="NAME">minplayer.players.base.prototype.onLoaded</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>377</span> 
+<span class='line'>378</span> </span><span class="WHIT">  </span><span class="COMM">// If we should autoplay, then just play now.</span><span class="WHIT">
+<span class='line'>379</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.options.autoplay</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>380</span> </span><span class="WHIT">    </span><span class="NAME">this.play</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>381</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>382</span> 
+<span class='line'>383</span> </span><span class="WHIT">  </span><span class="NAME">this.trigger</span><span class="PUNC">(</span><span class="STRN">'loadeddata'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>384</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>385</span> 
+<span class='line'>386</span> </span><span class="COMM">/**
+<span class='line'>387</span>  * Should be called when the player is waiting.
+<span class='line'>388</span>  */</span><span class="WHIT">
+<span class='line'>389</span> </span><span class="NAME">minplayer.players.base.prototype.onWaiting</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>390</span> </span><span class="WHIT">  </span><span class="NAME">this.trigger</span><span class="PUNC">(</span><span class="STRN">'waiting'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>391</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>392</span> 
+<span class='line'>393</span> </span><span class="COMM">/**
+<span class='line'>394</span>  * Called when an error occurs.
+<span class='line'>395</span>  *
+<span class='line'>396</span>  * @param {string} errorCode The error that was triggered.
+<span class='line'>397</span>  */</span><span class="WHIT">
+<span class='line'>398</span> </span><span class="NAME">minplayer.players.base.prototype.onError</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">errorCode</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>399</span> </span><span class="WHIT">  </span><span class="NAME">this.hasFocus</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>400</span> </span><span class="WHIT">  </span><span class="NAME">this.trigger</span><span class="PUNC">(</span><span class="STRN">'error'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">errorCode</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>401</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>402</span> 
+<span class='line'>403</span> </span><span class="COMM">/**
+<span class='line'>404</span>  * @see minplayer.players.base#isReady
+<span class='line'>405</span>  * @return {boolean} Checks to see if the Flash is ready.
+<span class='line'>406</span>  */</span><span class="WHIT">
+<span class='line'>407</span> </span><span class="NAME">minplayer.players.base.prototype.isReady</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>408</span> 
+<span class='line'>409</span> </span><span class="WHIT">  </span><span class="COMM">// Return that the player is set and the ready flag is good.</span><span class="WHIT">
+<span class='line'>410</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.player</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">this.playerReady</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>411</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>412</span> 
+<span class='line'>413</span> </span><span class="COMM">/**
+<span class='line'>414</span>  * Determines if the player should show the playloader.
+<span class='line'>415</span>  *
+<span class='line'>416</span>  * @param {string} preview The preview image.
+<span class='line'>417</span>  * @return {bool} If this player implements its own playLoader.
+<span class='line'>418</span>  */</span><span class="WHIT">
+<span class='line'>419</span> </span><span class="NAME">minplayer.players.base.prototype.hasPlayLoader</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">preview</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>420</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>421</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>422</span> 
+<span class='line'>423</span> </span><span class="COMM">/**
+<span class='line'>424</span>  * Determines if the player should show the controller.
+<span class='line'>425</span>  *
+<span class='line'>426</span>  * @return {bool} If this player implements its own controller.
+<span class='line'>427</span>  */</span><span class="WHIT">
+<span class='line'>428</span> </span><span class="NAME">minplayer.players.base.prototype.hasController</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>429</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>430</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>431</span> 
+<span class='line'>432</span> </span><span class="COMM">/**
+<span class='line'>433</span>  * Returns if the media player is already within the DOM.
+<span class='line'>434</span>  *
+<span class='line'>435</span>  * @return {boolean} TRUE - if the player is in the DOM, FALSE otherwise.
+<span class='line'>436</span>  */</span><span class="WHIT">
+<span class='line'>437</span> </span><span class="NAME">minplayer.players.base.prototype.playerFound</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>438</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>439</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>440</span> 
+<span class='line'>441</span> </span><span class="COMM">/**
+<span class='line'>442</span>  * Creates the media player and inserts it in the DOM.
+<span class='line'>443</span>  *
+<span class='line'>444</span>  * @return {object} The media player entity.
+<span class='line'>445</span>  */</span><span class="WHIT">
+<span class='line'>446</span> </span><span class="NAME">minplayer.players.base.prototype.create</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>447</span> </span><span class="WHIT">  </span><span class="NAME">this.reset</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>448</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>449</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>450</span> 
+<span class='line'>451</span> </span><span class="COMM">/**
+<span class='line'>452</span>  * Returns the media player object.
+<span class='line'>453</span>  *
+<span class='line'>454</span>  * @return {object} The media player object.
+<span class='line'>455</span>  */</span><span class="WHIT">
+<span class='line'>456</span> </span><span class="NAME">minplayer.players.base.prototype.getPlayer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>457</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.player</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>458</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>459</span> 
+<span class='line'>460</span> </span><span class="COMM">/**
+<span class='line'>461</span>  * Loads a new media player.
+<span class='line'>462</span>  *
+<span class='line'>463</span>  * @param {object} file A {@link minplayer.file} object.
+<span class='line'>464</span>  * @return {boolean} If this action was performed.
+<span class='line'>465</span>  */</span><span class="WHIT">
+<span class='line'>466</span> </span><span class="NAME">minplayer.players.base.prototype.load</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">file</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>467</span> 
+<span class='line'>468</span> </span><span class="WHIT">  </span><span class="COMM">// Store the media file for future lookup.</span><span class="WHIT">
+<span class='line'>469</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">isString</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">this.mediaFile</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">'string'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>470</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">path</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">isString</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">this.mediaFile</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">this.mediaFile.path</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>471</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">file</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">this.isReady</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">file.path</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">path</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>472</span> </span><span class="WHIT">    </span><span class="NAME">this.reset</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>473</span> </span><span class="WHIT">    </span><span class="NAME">this.mediaFile</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">file</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>474</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>475</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>476</span> 
+<span class='line'>477</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>478</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>479</span> 
+<span class='line'>480</span> </span><span class="COMM">/**
+<span class='line'>481</span>  * Play the loaded media file.
+<span class='line'>482</span>  * @return {boolean} If this action was performed.
+<span class='line'>483</span>  */</span><span class="WHIT">
+<span class='line'>484</span> </span><span class="NAME">minplayer.players.base.prototype.play</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>485</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.isReady</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>486</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>487</span> 
+<span class='line'>488</span> </span><span class="COMM">/**
+<span class='line'>489</span>  * Pause the loaded media file.
+<span class='line'>490</span>  * @return {boolean} If this action was performed.
+<span class='line'>491</span>  */</span><span class="WHIT">
+<span class='line'>492</span> </span><span class="NAME">minplayer.players.base.prototype.pause</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>493</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.isReady</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>494</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>495</span> 
+<span class='line'>496</span> </span><span class="COMM">/**
+<span class='line'>497</span>  * Stop the loaded media file.
+<span class='line'>498</span>  * @return {boolean} If this action was performed.
+<span class='line'>499</span>  */</span><span class="WHIT">
+<span class='line'>500</span> </span><span class="NAME">minplayer.players.base.prototype.stop</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>501</span> </span><span class="WHIT">  </span><span class="NAME">this.playing</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>502</span> </span><span class="WHIT">  </span><span class="NAME">this.loading</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>503</span> </span><span class="WHIT">  </span><span class="NAME">this.hasFocus</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>504</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.isReady</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>505</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>506</span> 
+<span class='line'>507</span> </span><span class="COMM">/**
+<span class='line'>508</span>  * Seeks to relative position.
+<span class='line'>509</span>  *
+<span class='line'>510</span>  * @param {number} pos Relative position.  -1 to 1 (percent), > 1 (seconds).
+<span class='line'>511</span>  */</span><span class="WHIT">
+<span class='line'>512</span> </span><span class="NAME">minplayer.players.base.prototype.seekRelative</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">pos</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>513</span> 
+<span class='line'>514</span> </span><span class="WHIT">  </span><span class="COMM">// Get the current time asyncrhonously.</span><span class="WHIT">
+<span class='line'>515</span> </span><span class="WHIT">  </span><span class="NAME">this.getCurrentTime</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">player</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>516</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">currentTime</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>517</span> 
+<span class='line'>518</span> </span><span class="WHIT">      </span><span class="COMM">// Get the duration asynchronously.</span><span class="WHIT">
+<span class='line'>519</span> </span><span class="WHIT">      </span><span class="NAME">player.getDuration</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">duration</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>520</span> 
+<span class='line'>521</span> </span><span class="WHIT">        </span><span class="COMM">// Only do this if we have a duration.</span><span class="WHIT">
+<span class='line'>522</span> </span><span class="WHIT">        </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">duration</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>523</span> 
+<span class='line'>524</span> </span><span class="WHIT">          </span><span class="COMM">// Get the position.</span><span class="WHIT">
+<span class='line'>525</span> </span><span class="WHIT">          </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">seekPos</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>526</span> </span><span class="WHIT">          </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">pos</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">pos</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>527</span> </span><span class="WHIT">            </span><span class="NAME">seekPos</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">currentTime</span><span class="WHIT"> </span><span class="PUNC">/</span><span class="WHIT"> </span><span class="NAME">duration</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">parseFloat</span><span class="PUNC">(</span><span class="NAME">pos</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NAME">duration</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>528</span> </span><span class="WHIT">          </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>529</span> </span><span class="WHIT">          </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>530</span> </span><span class="WHIT">            </span><span class="NAME">seekPos</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">currentTime</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">parseFloat</span><span class="PUNC">(</span><span class="NAME">pos</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>531</span> </span><span class="WHIT">          </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>532</span> 
+<span class='line'>533</span> </span><span class="WHIT">          </span><span class="COMM">// Set the seek value.</span><span class="WHIT">
+<span class='line'>534</span> </span><span class="WHIT">          </span><span class="NAME">player.seek</span><span class="PUNC">(</span><span class="NAME">seekPos</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>535</span> </span><span class="WHIT">        </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>536</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>537</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>538</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>539</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>540</span> 
+<span class='line'>541</span> </span><span class="COMM">/**
+<span class='line'>542</span>  * Seek the loaded media.
+<span class='line'>543</span>  *
+<span class='line'>544</span>  * @param {number} pos The position to seek the minplayer. 0 to 1.
+<span class='line'>545</span>  * @return {boolean} If this action was performed.
+<span class='line'>546</span>  */</span><span class="WHIT">
+<span class='line'>547</span> </span><span class="NAME">minplayer.players.base.prototype.seek</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">pos</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>548</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.isReady</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>549</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>550</span> 
+<span class='line'>551</span> </span><span class="COMM">/**
+<span class='line'>552</span>  * Gets a value from the player.
+<span class='line'>553</span>  *
+<span class='line'>554</span>  * @param {string} getter The getter method on the player.
+<span class='line'>555</span>  * @param {function} callback The callback function.
+<span class='line'>556</span>  */</span><span class="WHIT">
+<span class='line'>557</span> </span><span class="NAME">minplayer.players.base.prototype.getValue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">getter</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">callback</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>558</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.isReady</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>559</span> </span><span class="WHIT">    </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">value</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.player</span><span class="PUNC">[</span><span class="NAME">getter</span><span class="PUNC">]</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>560</span> </span><span class="WHIT">    </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">value</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">value</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>561</span> </span><span class="WHIT">      </span><span class="NAME">callback</span><span class="PUNC">(</span><span class="NAME">value</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>562</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>563</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>564</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>565</span> 
+<span class='line'>566</span> </span><span class="COMM">/**
+<span class='line'>567</span>  * Set the volume of the loaded minplayer.
+<span class='line'>568</span>  *
+<span class='line'>569</span>  * @param {number} vol -1 to 1 - The relative amount to increase or decrease.
+<span class='line'>570</span>  */</span><span class="WHIT">
+<span class='line'>571</span> </span><span class="NAME">minplayer.players.base.prototype.setVolumeRelative</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">vol</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>572</span> 
+<span class='line'>573</span> </span><span class="WHIT">  </span><span class="COMM">// Get the volume</span><span class="WHIT">
+<span class='line'>574</span> </span><span class="WHIT">  </span><span class="NAME">this.getVolume</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">player</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>575</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">newVol</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>576</span> </span><span class="WHIT">      </span><span class="NAME">newVol</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">parseFloat</span><span class="PUNC">(</span><span class="NAME">vol</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>577</span> </span><span class="WHIT">      </span><span class="NAME">newVol</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">newVol</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">newVol</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>578</span> </span><span class="WHIT">      </span><span class="NAME">newVol</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">newVol</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">newVol</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>579</span> </span><span class="WHIT">      </span><span class="NAME">player.setVolume</span><span class="PUNC">(</span><span class="NAME">newVol</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>580</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>581</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>582</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>583</span> 
+<span class='line'>584</span> </span><span class="COMM">/**
+<span class='line'>585</span>  * Set the volume of the loaded minplayer.
+<span class='line'>586</span>  *
+<span class='line'>587</span>  * @param {number} vol The volume to set the media. 0 to 1.
+<span class='line'>588</span>  * @return {boolean} If this action was performed.
+<span class='line'>589</span>  */</span><span class="WHIT">
+<span class='line'>590</span> </span><span class="NAME">minplayer.players.base.prototype.setVolume</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">vol</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>591</span> </span><span class="WHIT">  </span><span class="NAME">this.trigger</span><span class="PUNC">(</span><span class="STRN">'volumeupdate'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">vol</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>592</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.isReady</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>593</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>594</span> 
+<span class='line'>595</span> </span><span class="COMM">/**
+<span class='line'>596</span>  * Get the volume from the loaded media.
+<span class='line'>597</span>  *
+<span class='line'>598</span>  * @param {function} callback Called when the volume is determined.
+<span class='line'>599</span>  * @return {number} The volume of the media; 0 to 1.
+<span class='line'>600</span>  */</span><span class="WHIT">
+<span class='line'>601</span> </span><span class="NAME">minplayer.players.base.prototype.getVolume</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">callback</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>602</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.volume.get</span><span class="PUNC">(</span><span class="NAME">callback</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>603</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>604</span> 
+<span class='line'>605</span> </span><span class="COMM">/**
+<span class='line'>606</span>  * Get the current time for the media being played.
+<span class='line'>607</span>  *
+<span class='line'>608</span>  * @param {function} callback Called when the time is determined.
+<span class='line'>609</span>  * @return {number} The volume of the media; 0 to 1.
+<span class='line'>610</span>  */</span><span class="WHIT">
+<span class='line'>611</span> </span><span class="NAME">minplayer.players.base.prototype.getCurrentTime</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">callback</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>612</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.currentTime.get</span><span class="PUNC">(</span><span class="NAME">callback</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>613</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>614</span> 
+<span class='line'>615</span> </span><span class="COMM">/**
+<span class='line'>616</span>  * Return the duration of the loaded media.
+<span class='line'>617</span>  *
+<span class='line'>618</span>  * @param {function} callback Called when the duration is determined.
+<span class='line'>619</span>  * @return {number} The duration of the loaded media.
+<span class='line'>620</span>  */</span><span class="WHIT">
+<span class='line'>621</span> </span><span class="NAME">minplayer.players.base.prototype.getDuration</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">callback</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>622</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.duration.get</span><span class="PUNC">(</span><span class="NAME">callback</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>623</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>624</span> 
+<span class='line'>625</span> </span><span class="COMM">/**
+<span class='line'>626</span>  * Return the start bytes for the loaded media.
+<span class='line'>627</span>  *
+<span class='line'>628</span>  * @param {function} callback Called when the start bytes is determined.
+<span class='line'>629</span>  * @return {int} The bytes that were started.
+<span class='line'>630</span>  */</span><span class="WHIT">
+<span class='line'>631</span> </span><span class="NAME">minplayer.players.base.prototype.getBytesStart</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">callback</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>632</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.bytesStart.get</span><span class="PUNC">(</span><span class="NAME">callback</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>633</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>634</span> 
+<span class='line'>635</span> </span><span class="COMM">/**
+<span class='line'>636</span>  * Return the bytes of media loaded.
+<span class='line'>637</span>  *
+<span class='line'>638</span>  * @param {function} callback Called when the bytes loaded is determined.
+<span class='line'>639</span>  * @return {int} The amount of bytes loaded.
+<span class='line'>640</span>  */</span><span class="WHIT">
+<span class='line'>641</span> </span><span class="NAME">minplayer.players.base.prototype.getBytesLoaded</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">callback</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>642</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.bytesLoaded.get</span><span class="PUNC">(</span><span class="NAME">callback</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>643</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>644</span> 
+<span class='line'>645</span> </span><span class="COMM">/**
+<span class='line'>646</span>  * Return the total amount of bytes.
+<span class='line'>647</span>  *
+<span class='line'>648</span>  * @param {function} callback Called when the bytes total is determined.
+<span class='line'>649</span>  * @return {int} The total amount of bytes for this media.
+<span class='line'>650</span>  */</span><span class="WHIT">
+<span class='line'>651</span> </span><span class="NAME">minplayer.players.base.prototype.getBytesTotal</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">callback</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>652</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.bytesTotal.get</span><span class="PUNC">(</span><span class="NAME">callback</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>653</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>654</span> </span></pre></body></html>
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/doc/symbols/src/minplayer_src_minplayer.players.flash.js.html b/public/admin/js/osmplayer/doc/symbols/src/minplayer_src_minplayer.players.flash.js.html
new file mode 100644
index 0000000000000000000000000000000000000000..20f9af1cbc3002322076975777b9630b3a3d6060
--- /dev/null
+++ b/public/admin/js/osmplayer/doc/symbols/src/minplayer_src_minplayer.players.flash.js.html
@@ -0,0 +1,132 @@
+<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
+	.KEYW {color: #933;}
+	.COMM {color: #bbb; font-style: italic;}
+	.NUMB {color: #393;}
+	.STRN {color: #393;}
+	.REGX {color: #339;}
+	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
+	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/** The minplayer namespace. */</span><span class="WHIT">
+<span class='line'>  2</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">minplayer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">minplayer</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>  3</span> 
+<span class='line'>  4</span> </span><span class="COMM">/** All the media player implementations */</span><span class="WHIT">
+<span class='line'>  5</span> </span><span class="NAME">minplayer.players</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">minplayer.players</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>  6</span> 
+<span class='line'>  7</span> </span><span class="COMM">/**
+<span class='line'>  8</span>  * @constructor
+<span class='line'>  9</span>  * @extends minplayer.display
+<span class='line'> 10</span>  * @class The Flash media player class to control the flash fallback.
+<span class='line'> 11</span>  *
+<span class='line'> 12</span>  * @param {object} context The jQuery context.
+<span class='line'> 13</span>  * @param {object} options This components options.
+<span class='line'> 14</span>  * @param {object} queue The event queue to pass events around.
+<span class='line'> 15</span>  */</span><span class="WHIT">
+<span class='line'> 16</span> </span><span class="NAME">minplayer.players.flash</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">context</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">queue</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 17</span> 
+<span class='line'> 18</span> </span><span class="WHIT">  </span><span class="COMM">// Derive from players base.</span><span class="WHIT">
+<span class='line'> 19</span> </span><span class="WHIT">  </span><span class="NAME">minplayer.players.base.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">context</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">queue</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 20</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 21</span> 
+<span class='line'> 22</span> </span><span class="COMM">/** Derive from minplayer.players.base. */</span><span class="WHIT">
+<span class='line'> 23</span> </span><span class="NAME">minplayer.players.flash.prototype</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">minplayer.players.base</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 24</span> 
+<span class='line'> 25</span> </span><span class="COMM">/** Reset the constructor. */</span><span class="WHIT">
+<span class='line'> 26</span> </span><span class="NAME">minplayer.players.flash.prototype.constructor</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">minplayer.players.flash</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 27</span> 
+<span class='line'> 28</span> </span><span class="COMM">/**
+<span class='line'> 29</span>  * @see minplayer.plugin.construct
+<span class='line'> 30</span>  * @this minplayer.players.flash
+<span class='line'> 31</span>  */</span><span class="WHIT">
+<span class='line'> 32</span> </span><span class="NAME">minplayer.players.flash.prototype.construct</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 33</span> 
+<span class='line'> 34</span> </span><span class="WHIT">  </span><span class="COMM">// Call the players.base constructor.</span><span class="WHIT">
+<span class='line'> 35</span> </span><span class="WHIT">  </span><span class="NAME">minplayer.players.base.prototype.construct.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 36</span> 
+<span class='line'> 37</span> </span><span class="WHIT">  </span><span class="COMM">// Set the plugin name within the options.</span><span class="WHIT">
+<span class='line'> 38</span> </span><span class="WHIT">  </span><span class="NAME">this.options.pluginName</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'flash'</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 39</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 40</span> 
+<span class='line'> 41</span> </span><span class="COMM">/**
+<span class='line'> 42</span>  * @see minplayer.players.base#getPriority
+<span class='line'> 43</span>  * @return {number} The priority of this media player.
+<span class='line'> 44</span>  */</span><span class="WHIT">
+<span class='line'> 45</span> </span><span class="NAME">minplayer.players.flash.getPriority</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 46</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 47</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 48</span> 
+<span class='line'> 49</span> </span><span class="COMM">/**
+<span class='line'> 50</span>  * @see minplayer.players.base#canPlay
+<span class='line'> 51</span>  * @return {boolean} If this player can play this media type.
+<span class='line'> 52</span>  */</span><span class="WHIT">
+<span class='line'> 53</span> </span><span class="NAME">minplayer.players.flash.canPlay</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">file</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 54</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 55</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 56</span> 
+<span class='line'> 57</span> </span><span class="COMM">/**
+<span class='line'> 58</span>  * API to return the Flash player code provided params.
+<span class='line'> 59</span>  *
+<span class='line'> 60</span>  * @param {object} params The params used to populate the Flash code.
+<span class='line'> 61</span>  * @return {object} A Flash DOM element.
+<span class='line'> 62</span>  */</span><span class="WHIT">
+<span class='line'> 63</span> </span><span class="NAME">minplayer.players.flash.prototype.getFlash</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">params</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 64</span> </span><span class="WHIT">  </span><span class="COMM">// Get the protocol.</span><span class="WHIT">
+<span class='line'> 65</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">protocol</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">window.location.protocol</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 66</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">protocol.charAt</span><span class="PUNC">(</span><span class="NAME">protocol.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">':'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 67</span> </span><span class="WHIT">    </span><span class="NAME">protocol</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">protocol.substring</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">protocol.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 68</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 69</span> 
+<span class='line'> 70</span> </span><span class="WHIT">  </span><span class="COMM">// Insert the swfobject javascript.</span><span class="WHIT">
+<span class='line'> 71</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">tag</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">document.createElement</span><span class="PUNC">(</span><span class="STRN">'script'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 72</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">src</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">protocol</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 73</span> </span><span class="WHIT">  </span><span class="NAME">src</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js'</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 74</span> </span><span class="WHIT">  </span><span class="NAME">tag.src</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">src</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 75</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">firstScriptTag</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">document.getElementsByTagName</span><span class="PUNC">(</span><span class="STRN">'script'</span><span class="PUNC">)</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 76</span> </span><span class="WHIT">  </span><span class="NAME">firstScriptTag.parentNode.insertBefore</span><span class="PUNC">(</span><span class="NAME">tag</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">firstScriptTag</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 77</span> 
+<span class='line'> 78</span> </span><span class="WHIT">  </span><span class="COMM">// Create the swfobject.</span><span class="WHIT">
+<span class='line'> 79</span> </span><span class="WHIT">  </span><span class="NAME">setTimeout</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">player</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 80</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">tryAgain</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 81</span> </span><span class="WHIT">      </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">swfobject</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="STRN">'undefined'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 82</span> </span><span class="WHIT">        </span><span class="NAME">swfobject.embedSWF</span><span class="PUNC">(</span><span class="WHIT">
+<span class='line'> 83</span> </span><span class="WHIT">          </span><span class="NAME">params.swf</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 84</span> </span><span class="WHIT">          </span><span class="NAME">params.id</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 85</span> </span><span class="WHIT">          </span><span class="NAME">params.width</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 86</span> </span><span class="WHIT">          </span><span class="NAME">params.height</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 87</span> </span><span class="WHIT">          </span><span class="STRN">'9.0.0'</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 88</span> </span><span class="WHIT">          </span><span class="KEYW">false</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 89</span> </span><span class="WHIT">          </span><span class="NAME">params.flashvars</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 90</span> </span><span class="WHIT">          </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 91</span> </span><span class="WHIT">            </span><span class="NAME">allowscriptaccess</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'always'</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 92</span> </span><span class="WHIT">            </span><span class="NAME">allowfullscreen</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'true'</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 93</span> </span><span class="WHIT">            </span><span class="NAME">wmode</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">params.wmode</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 94</span> </span><span class="WHIT">            </span><span class="NAME">quality</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'high'</span><span class="WHIT">
+<span class='line'> 95</span> </span><span class="WHIT">          </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 96</span> </span><span class="WHIT">          </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 97</span> </span><span class="WHIT">            </span><span class="NAME">id</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">params.id</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 98</span> </span><span class="WHIT">            </span><span class="NAME">name</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">params.id</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 99</span> </span><span class="WHIT">            </span><span class="NAME">playerType</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'flash'</span><span class="WHIT">
+<span class='line'>100</span> </span><span class="WHIT">          </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>101</span> </span><span class="WHIT">          </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>102</span> </span><span class="WHIT">            </span><span class="NAME">player.player</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">e.ref</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>103</span> </span><span class="WHIT">          </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>104</span> </span><span class="WHIT">        </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>105</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>106</span> </span><span class="WHIT">      </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>107</span> 
+<span class='line'>108</span> </span><span class="WHIT">        </span><span class="COMM">// Try again after 200 ms.</span><span class="WHIT">
+<span class='line'>109</span> </span><span class="WHIT">        </span><span class="NAME">setTimeout</span><span class="PUNC">(</span><span class="NAME">tryAgain</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">200</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>110</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>111</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>112</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">200</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>113</span> 
+<span class='line'>114</span> </span><span class="WHIT">  </span><span class="COMM">// Return the div tag...</span><span class="WHIT">
+<span class='line'>115</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="STRN">'&lt;div id="'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">params.id</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'">&lt;/div>'</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>116</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>117</span> 
+<span class='line'>118</span> </span><span class="COMM">/**
+<span class='line'>119</span>  * @see minplayer.players.base#playerFound
+<span class='line'>120</span>  * @return {boolean} TRUE - if the player is in the DOM, FALSE otherwise.
+<span class='line'>121</span>  */</span><span class="WHIT">
+<span class='line'>122</span> </span><span class="NAME">minplayer.players.flash.prototype.playerFound</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>123</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.display.find</span><span class="PUNC">(</span><span class="STRN">'object[playerType="flash"]'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>124</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>125</span> </span></pre></body></html>
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/doc/symbols/src/minplayer_src_minplayer.players.html5.js.html b/public/admin/js/osmplayer/doc/symbols/src/minplayer_src_minplayer.players.html5.js.html
new file mode 100644
index 0000000000000000000000000000000000000000..f4e6ff166fdd33f15f5589cccbee5b37b994a573
--- /dev/null
+++ b/public/admin/js/osmplayer/doc/symbols/src/minplayer_src_minplayer.players.html5.js.html
@@ -0,0 +1,429 @@
+<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
+	.KEYW {color: #933;}
+	.COMM {color: #bbb; font-style: italic;}
+	.NUMB {color: #393;}
+	.STRN {color: #393;}
+	.REGX {color: #339;}
+	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
+	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/** The minplayer namespace. */</span><span class="WHIT">
+<span class='line'>  2</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">minplayer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">minplayer</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>  3</span> 
+<span class='line'>  4</span> </span><span class="COMM">/** All the media player implementations */</span><span class="WHIT">
+<span class='line'>  5</span> </span><span class="NAME">minplayer.players</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">minplayer.players</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>  6</span> 
+<span class='line'>  7</span> </span><span class="COMM">/**
+<span class='line'>  8</span>  * @constructor
+<span class='line'>  9</span>  * @extends minplayer.display
+<span class='line'> 10</span>  * @class The HTML5 media player implementation.
+<span class='line'> 11</span>  *
+<span class='line'> 12</span>  * @param {object} context The jQuery context.
+<span class='line'> 13</span>  * @param {object} options This components options.
+<span class='line'> 14</span>  * @param {object} queue The event queue to pass events around.
+<span class='line'> 15</span>  */</span><span class="WHIT">
+<span class='line'> 16</span> </span><span class="NAME">minplayer.players.html5</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">context</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">queue</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 17</span> 
+<span class='line'> 18</span> </span><span class="WHIT">  </span><span class="COMM">// Derive players base.</span><span class="WHIT">
+<span class='line'> 19</span> </span><span class="WHIT">  </span><span class="NAME">minplayer.players.base.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">context</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">queue</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 20</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 21</span> 
+<span class='line'> 22</span> </span><span class="COMM">/** Derive from minplayer.players.base. */</span><span class="WHIT">
+<span class='line'> 23</span> </span><span class="NAME">minplayer.players.html5.prototype</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">minplayer.players.base</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 24</span> 
+<span class='line'> 25</span> </span><span class="COMM">/** Reset the constructor. */</span><span class="WHIT">
+<span class='line'> 26</span> </span><span class="NAME">minplayer.players.html5.prototype.constructor</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">minplayer.players.html5</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 27</span> 
+<span class='line'> 28</span> </span><span class="COMM">/**
+<span class='line'> 29</span>  * @see minplayer.players.base#getPriority
+<span class='line'> 30</span>  * @return {number} The priority of this media player.
+<span class='line'> 31</span>  */</span><span class="WHIT">
+<span class='line'> 32</span> </span><span class="NAME">minplayer.players.html5.getPriority</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 33</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NUMB">10</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 34</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 35</span> 
+<span class='line'> 36</span> </span><span class="COMM">/**
+<span class='line'> 37</span>  * @see minplayer.players.base#canPlay
+<span class='line'> 38</span>  * @return {boolean} If this player can play this media type.
+<span class='line'> 39</span>  */</span><span class="WHIT">
+<span class='line'> 40</span> </span><span class="NAME">minplayer.players.html5.canPlay</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">file</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 41</span> </span><span class="WHIT">  </span><span class="KEYW">switch</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">file.mimetype</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 42</span> </span><span class="WHIT">    </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">'video/ogg'</span><span class="PUNC">:</span><span class="WHIT">
+<span class='line'> 43</span> </span><span class="WHIT">      </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="PUNC">!</span><span class="NAME">minplayer.playTypes.videoOGG</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 44</span> </span><span class="WHIT">    </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">'video/mp4'</span><span class="PUNC">:</span><span class="WHIT">
+<span class='line'> 45</span> </span><span class="WHIT">    </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">'video/x-mp4'</span><span class="PUNC">:</span><span class="WHIT">
+<span class='line'> 46</span> </span><span class="WHIT">    </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">'video/m4v'</span><span class="PUNC">:</span><span class="WHIT">
+<span class='line'> 47</span> </span><span class="WHIT">    </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">'video/x-m4v'</span><span class="PUNC">:</span><span class="WHIT">
+<span class='line'> 48</span> </span><span class="WHIT">      </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="PUNC">!</span><span class="NAME">minplayer.playTypes.videoH264</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 49</span> </span><span class="WHIT">    </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">'video/x-webm'</span><span class="PUNC">:</span><span class="WHIT">
+<span class='line'> 50</span> </span><span class="WHIT">    </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">'video/webm'</span><span class="PUNC">:</span><span class="WHIT">
+<span class='line'> 51</span> </span><span class="WHIT">    </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">'application/octet-stream'</span><span class="PUNC">:</span><span class="WHIT">
+<span class='line'> 52</span> </span><span class="WHIT">      </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="PUNC">!</span><span class="NAME">minplayer.playTypes.videoWEBM</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 53</span> </span><span class="WHIT">    </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">'audio/ogg'</span><span class="PUNC">:</span><span class="WHIT">
+<span class='line'> 54</span> </span><span class="WHIT">      </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="PUNC">!</span><span class="NAME">minplayer.playTypes.audioOGG</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 55</span> </span><span class="WHIT">    </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">'audio/mpeg'</span><span class="PUNC">:</span><span class="WHIT">
+<span class='line'> 56</span> </span><span class="WHIT">      </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="PUNC">!</span><span class="NAME">minplayer.playTypes.audioMP3</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 57</span> </span><span class="WHIT">    </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">'audio/mp4'</span><span class="PUNC">:</span><span class="WHIT">
+<span class='line'> 58</span> </span><span class="WHIT">      </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="PUNC">!</span><span class="NAME">minplayer.playTypes.audioMP4</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 59</span> </span><span class="WHIT">    </span><span class="KEYW">default</span><span class="PUNC">:</span><span class="WHIT">
+<span class='line'> 60</span> </span><span class="WHIT">      </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 61</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 62</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 63</span> 
+<span class='line'> 64</span> </span><span class="COMM">/**
+<span class='line'> 65</span>  * @see minplayer.plugin.construct
+<span class='line'> 66</span>  */</span><span class="WHIT">
+<span class='line'> 67</span> </span><span class="NAME">minplayer.players.html5.prototype.construct</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 68</span> 
+<span class='line'> 69</span> </span><span class="WHIT">  </span><span class="COMM">// Call base constructor.</span><span class="WHIT">
+<span class='line'> 70</span> </span><span class="WHIT">  </span><span class="NAME">minplayer.players.base.prototype.construct.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 71</span> 
+<span class='line'> 72</span> </span><span class="WHIT">  </span><span class="COMM">// Set the plugin name within the options.</span><span class="WHIT">
+<span class='line'> 73</span> </span><span class="WHIT">  </span><span class="NAME">this.options.pluginName</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'html5'</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 74</span> 
+<span class='line'> 75</span> </span><span class="WHIT">  </span><span class="COMM">// Add the player events.</span><span class="WHIT">
+<span class='line'> 76</span> </span><span class="WHIT">  </span><span class="NAME">this.addPlayerEvents</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 77</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 78</span> 
+<span class='line'> 79</span> </span><span class="COMM">/**
+<span class='line'> 80</span>  * Adds a new player event.
+<span class='line'> 81</span>  *
+<span class='line'> 82</span>  * @param {string} type The type of event being fired.
+<span class='line'> 83</span>  * @param {function} callback Called when the event is fired.
+<span class='line'> 84</span>  */</span><span class="WHIT">
+<span class='line'> 85</span> </span><span class="NAME">minplayer.players.html5.prototype.addPlayerEvent</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">type</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">callback</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 86</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.player</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 87</span> 
+<span class='line'> 88</span> </span><span class="WHIT">    </span><span class="COMM">// Add an event listener for this event type.</span><span class="WHIT">
+<span class='line'> 89</span> </span><span class="WHIT">    </span><span class="NAME">this.player.addEventListener</span><span class="PUNC">(</span><span class="NAME">type</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">player</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 90</span> 
+<span class='line'> 91</span> </span><span class="WHIT">      </span><span class="COMM">// Get the function name.</span><span class="WHIT">
+<span class='line'> 92</span> </span><span class="WHIT">      </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">func</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">type</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'Event'</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 93</span> 
+<span class='line'> 94</span> </span><span class="WHIT">      </span><span class="COMM">// If the callback already exists, then remove it from the player.</span><span class="WHIT">
+<span class='line'> 95</span> </span><span class="WHIT">      </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">player</span><span class="PUNC">[</span><span class="NAME">func</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 96</span> </span><span class="WHIT">        </span><span class="NAME">player.player.removeEventListener</span><span class="PUNC">(</span><span class="NAME">type</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">player</span><span class="PUNC">[</span><span class="NAME">func</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 97</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 98</span> 
+<span class='line'> 99</span> </span><span class="WHIT">      </span><span class="COMM">// Create a new callback.</span><span class="WHIT">
+<span class='line'>100</span> </span><span class="WHIT">      </span><span class="NAME">player</span><span class="PUNC">[</span><span class="NAME">func</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">event</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>101</span> </span><span class="WHIT">        </span><span class="NAME">callback.call</span><span class="PUNC">(</span><span class="NAME">player</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">event</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>102</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>103</span> 
+<span class='line'>104</span> </span><span class="WHIT">      </span><span class="COMM">// Return the callback.</span><span class="WHIT">
+<span class='line'>105</span> </span><span class="WHIT">      </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">player</span><span class="PUNC">[</span><span class="NAME">func</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>106</span> 
+<span class='line'>107</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>108</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>109</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>110</span> 
+<span class='line'>111</span> </span><span class="COMM">/**
+<span class='line'>112</span>  * Add events.
+<span class='line'>113</span>  * @return {boolean} If this action was performed.
+<span class='line'>114</span>  */</span><span class="WHIT">
+<span class='line'>115</span> </span><span class="NAME">minplayer.players.html5.prototype.addPlayerEvents</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>116</span> 
+<span class='line'>117</span> </span><span class="WHIT">  </span><span class="COMM">// Check if the player exists.</span><span class="WHIT">
+<span class='line'>118</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.player</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>119</span> 
+<span class='line'>120</span> </span><span class="WHIT">    </span><span class="NAME">this.addPlayerEvent</span><span class="PUNC">(</span><span class="STRN">'abort'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>121</span> </span><span class="WHIT">      </span><span class="NAME">this.trigger</span><span class="PUNC">(</span><span class="STRN">'abort'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>122</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>123</span> </span><span class="WHIT">    </span><span class="NAME">this.addPlayerEvent</span><span class="PUNC">(</span><span class="STRN">'loadstart'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>124</span> </span><span class="WHIT">      </span><span class="NAME">this.onReady</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>125</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>126</span> </span><span class="WHIT">    </span><span class="NAME">this.addPlayerEvent</span><span class="PUNC">(</span><span class="STRN">'loadeddata'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>127</span> </span><span class="WHIT">      </span><span class="NAME">this.onLoaded</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>128</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>129</span> </span><span class="WHIT">    </span><span class="NAME">this.addPlayerEvent</span><span class="PUNC">(</span><span class="STRN">'loadedmetadata'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>130</span> </span><span class="WHIT">      </span><span class="NAME">this.onLoaded</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>131</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>132</span> </span><span class="WHIT">    </span><span class="NAME">this.addPlayerEvent</span><span class="PUNC">(</span><span class="STRN">'canplaythrough'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>133</span> </span><span class="WHIT">      </span><span class="NAME">this.onLoaded</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>134</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>135</span> </span><span class="WHIT">    </span><span class="NAME">this.addPlayerEvent</span><span class="PUNC">(</span><span class="STRN">'ended'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>136</span> </span><span class="WHIT">      </span><span class="NAME">this.onComplete</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>137</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>138</span> </span><span class="WHIT">    </span><span class="NAME">this.addPlayerEvent</span><span class="PUNC">(</span><span class="STRN">'pause'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>139</span> </span><span class="WHIT">      </span><span class="NAME">this.onPaused</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>140</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>141</span> </span><span class="WHIT">    </span><span class="NAME">this.addPlayerEvent</span><span class="PUNC">(</span><span class="STRN">'play'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>142</span> </span><span class="WHIT">      </span><span class="NAME">this.onPlaying</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>143</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>144</span> </span><span class="WHIT">    </span><span class="NAME">this.addPlayerEvent</span><span class="PUNC">(</span><span class="STRN">'playing'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>145</span> </span><span class="WHIT">      </span><span class="NAME">this.onPlaying</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>146</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>147</span> 
+<span class='line'>148</span> </span><span class="WHIT">    </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">errorSent</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>149</span> </span><span class="WHIT">    </span><span class="NAME">this.addPlayerEvent</span><span class="PUNC">(</span><span class="STRN">'error'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>150</span> </span><span class="WHIT">      </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">errorSent</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>151</span> </span><span class="WHIT">        </span><span class="NAME">errorSent</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>152</span> </span><span class="WHIT">        </span><span class="NAME">this.trigger</span><span class="PUNC">(</span><span class="STRN">'error'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'An error occured - '</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.player.error.code</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>153</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>154</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>155</span> 
+<span class='line'>156</span> </span><span class="WHIT">    </span><span class="NAME">this.addPlayerEvent</span><span class="PUNC">(</span><span class="STRN">'waiting'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>157</span> </span><span class="WHIT">      </span><span class="NAME">this.onWaiting</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>158</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>159</span> </span><span class="WHIT">    </span><span class="NAME">this.addPlayerEvent</span><span class="PUNC">(</span><span class="STRN">'durationchange'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>160</span> </span><span class="WHIT">      </span><span class="NAME">this.duration.set</span><span class="PUNC">(</span><span class="NAME">this.player.duration</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>161</span> </span><span class="WHIT">      </span><span class="NAME">this.trigger</span><span class="PUNC">(</span><span class="STRN">'durationchange'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="NAME">duration</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">this.player.duration</span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>162</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>163</span> </span><span class="WHIT">    </span><span class="NAME">this.addPlayerEvent</span><span class="PUNC">(</span><span class="STRN">'progress'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">event</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>164</span> </span><span class="WHIT">      </span><span class="NAME">this.bytesTotal.set</span><span class="PUNC">(</span><span class="NAME">event.total</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>165</span> </span><span class="WHIT">      </span><span class="NAME">this.bytesLoaded.set</span><span class="PUNC">(</span><span class="NAME">event.loaded</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>166</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>167</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>168</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>169</span> 
+<span class='line'>170</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>171</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>172</span> 
+<span class='line'>173</span> </span><span class="COMM">/**
+<span class='line'>174</span>  * @see minplayer.players.base#onReady
+<span class='line'>175</span>  */</span><span class="WHIT">
+<span class='line'>176</span> </span><span class="NAME">minplayer.players.html5.prototype.onReady</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>177</span> </span><span class="WHIT">  </span><span class="NAME">minplayer.players.base.prototype.onReady.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>178</span> 
+<span class='line'>179</span> </span><span class="WHIT">  </span><span class="COMM">// Android just say we are loaded here.</span><span class="WHIT">
+<span class='line'>180</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">minplayer.isAndroid</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>181</span> </span><span class="WHIT">    </span><span class="NAME">this.onLoaded</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>182</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>183</span> 
+<span class='line'>184</span> </span><span class="WHIT">  </span><span class="COMM">// iOS devices are strange in that they don't autoload.</span><span class="WHIT">
+<span class='line'>185</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">minplayer.isIDevice</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>186</span> </span><span class="WHIT">    </span><span class="NAME">this.play</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>187</span> </span><span class="WHIT">    </span><span class="NAME">setTimeout</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">player</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>188</span> </span><span class="WHIT">      </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>189</span> </span><span class="WHIT">        </span><span class="NAME">player.pause</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>190</span> </span><span class="WHIT">        </span><span class="NAME">player.onLoaded</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>191</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>192</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>193</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>194</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>195</span> 
+<span class='line'>196</span> </span><span class="COMM">/**
+<span class='line'>197</span>  * @see minplayer.players.base#playerFound
+<span class='line'>198</span>  * @return {boolean} TRUE - if the player is in the DOM, FALSE otherwise.
+<span class='line'>199</span>  */</span><span class="WHIT">
+<span class='line'>200</span> </span><span class="NAME">minplayer.players.html5.prototype.playerFound</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>201</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.display.find</span><span class="PUNC">(</span><span class="NAME">this.mediaFile.type</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>202</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>203</span> 
+<span class='line'>204</span> </span><span class="COMM">/**
+<span class='line'>205</span>  * @see minplayer.players.base#create
+<span class='line'>206</span>  * @return {object} The media player entity.
+<span class='line'>207</span>  */</span><span class="WHIT">
+<span class='line'>208</span> </span><span class="NAME">minplayer.players.html5.prototype.create</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>209</span> </span><span class="WHIT">  </span><span class="NAME">minplayer.players.base.prototype.create.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>210</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">element</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">jQuery</span><span class="PUNC">(</span><span class="NAME">document.createElement</span><span class="PUNC">(</span><span class="NAME">this.mediaFile.type</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
+<span class='line'>211</span> </span><span class="WHIT">  </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="NAME">this.options.attributes</span><span class="PUNC">)</span><span class="WHIT">
+<span class='line'>212</span> </span><span class="WHIT">  </span><span class="PUNC">.</span><span class="NAME">append</span><span class="PUNC">(</span><span class="WHIT">
+<span class='line'>213</span> </span><span class="WHIT">    </span><span class="NAME">jQuery</span><span class="PUNC">(</span><span class="NAME">document.createElement</span><span class="PUNC">(</span><span class="STRN">'source'</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>214</span> </span><span class="WHIT">      </span><span class="STRN">'src'</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">this.mediaFile.path</span><span class="WHIT">
+<span class='line'>215</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="WHIT">
+<span class='line'>216</span> </span><span class="WHIT">  </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>217</span> 
+<span class='line'>218</span> </span><span class="WHIT">  </span><span class="COMM">// Fix the fluid width and height.</span><span class="WHIT">
+<span class='line'>219</span> </span><span class="WHIT">  </span><span class="NAME">element.eq</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">setAttribute</span><span class="PUNC">(</span><span class="STRN">'width'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'100%'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>220</span> </span><span class="WHIT">  </span><span class="NAME">element.eq</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">setAttribute</span><span class="PUNC">(</span><span class="STRN">'height'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'100%'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>221</span> </span><span class="WHIT">  </span><span class="NAME">element.eq</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">setAttribute</span><span class="PUNC">(</span><span class="STRN">'autobuffer'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>222</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">option</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.options.autoload</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="STRN">'auto'</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'metadata'</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>223</span> </span><span class="WHIT">  </span><span class="NAME">option</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">minplayer.isIDevice</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="STRN">'metadata'</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">option</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>224</span> </span><span class="WHIT">  </span><span class="NAME">element.eq</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">setAttribute</span><span class="PUNC">(</span><span class="STRN">'preload'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">option</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>225</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">element</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>226</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>227</span> 
+<span class='line'>228</span> </span><span class="COMM">/**
+<span class='line'>229</span>  * @see minplayer.players.base#getPlayer
+<span class='line'>230</span>  * @return {object} The media player object.
+<span class='line'>231</span>  */</span><span class="WHIT">
+<span class='line'>232</span> </span><span class="NAME">minplayer.players.html5.prototype.getPlayer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>233</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.elements.media.eq</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>234</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>235</span> 
+<span class='line'>236</span> </span><span class="COMM">/**
+<span class='line'>237</span>  * @see minplayer.players.base#load
+<span class='line'>238</span>  * @return {boolean} If this action was performed.
+<span class='line'>239</span>  */</span><span class="WHIT">
+<span class='line'>240</span> </span><span class="NAME">minplayer.players.html5.prototype.load</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">file</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>241</span> 
+<span class='line'>242</span> </span><span class="WHIT">  </span><span class="COMM">// See if a load is even necessary.</span><span class="WHIT">
+<span class='line'>243</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">minplayer.players.base.prototype.load.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">file</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>244</span> 
+<span class='line'>245</span> </span><span class="WHIT">    </span><span class="COMM">// Get the current source.</span><span class="WHIT">
+<span class='line'>246</span> </span><span class="WHIT">    </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">src</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.elements.media.attr</span><span class="PUNC">(</span><span class="STRN">'src'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>247</span> </span><span class="WHIT">    </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">src</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>248</span> </span><span class="WHIT">      </span><span class="NAME">src</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">jQuery</span><span class="PUNC">(</span><span class="STRN">'source'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.elements.media</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">eq</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">'src'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>249</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>250</span> 
+<span class='line'>251</span> </span><span class="WHIT">    </span><span class="COMM">// Only swap out if the new file is different from the source.</span><span class="WHIT">
+<span class='line'>252</span> </span><span class="WHIT">    </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">src</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">file.path</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>253</span> 
+<span class='line'>254</span> </span><span class="WHIT">      </span><span class="COMM">// Add a new player.</span><span class="WHIT">
+<span class='line'>255</span> </span><span class="WHIT">      </span><span class="NAME">this.addPlayer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>256</span> 
+<span class='line'>257</span> </span><span class="WHIT">      </span><span class="COMM">// Set the new player.</span><span class="WHIT">
+<span class='line'>258</span> </span><span class="WHIT">      </span><span class="NAME">this.player</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getPlayer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>259</span> 
+<span class='line'>260</span> </span><span class="WHIT">      </span><span class="COMM">// Add the events again.</span><span class="WHIT">
+<span class='line'>261</span> </span><span class="WHIT">      </span><span class="NAME">this.addPlayerEvents</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>262</span> 
+<span class='line'>263</span> </span><span class="WHIT">      </span><span class="COMM">// Change the source...</span><span class="WHIT">
+<span class='line'>264</span> </span><span class="WHIT">      </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">code</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'&lt;source src="'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">file.path</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'">&lt;/source>'</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>265</span> </span><span class="WHIT">      </span><span class="NAME">this.elements.media.removeAttr</span><span class="PUNC">(</span><span class="STRN">'src'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">empty</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">html</span><span class="PUNC">(</span><span class="NAME">code</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>266</span> </span><span class="WHIT">      </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>267</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>268</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>269</span> 
+<span class='line'>270</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>271</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>272</span> 
+<span class='line'>273</span> </span><span class="COMM">/**
+<span class='line'>274</span>  * @see minplayer.players.base#play
+<span class='line'>275</span>  * @return {boolean} If this action was performed.
+<span class='line'>276</span>  */</span><span class="WHIT">
+<span class='line'>277</span> </span><span class="NAME">minplayer.players.html5.prototype.play</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>278</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">minplayer.players.base.prototype.play.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>279</span> </span><span class="WHIT">    </span><span class="NAME">this.player.play</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>280</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>281</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>282</span> 
+<span class='line'>283</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>284</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>285</span> 
+<span class='line'>286</span> </span><span class="COMM">/**
+<span class='line'>287</span>  * @see minplayer.players.base#pause
+<span class='line'>288</span>  * @return {boolean} If this action was performed.
+<span class='line'>289</span>  */</span><span class="WHIT">
+<span class='line'>290</span> </span><span class="NAME">minplayer.players.html5.prototype.pause</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>291</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">minplayer.players.base.prototype.pause.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>292</span> </span><span class="WHIT">    </span><span class="NAME">this.player.pause</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>293</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>294</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>295</span> 
+<span class='line'>296</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>297</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>298</span> 
+<span class='line'>299</span> </span><span class="COMM">/**
+<span class='line'>300</span>  * @see minplayer.players.base#stop
+<span class='line'>301</span>  * @return {boolean} If this action was performed.
+<span class='line'>302</span>  */</span><span class="WHIT">
+<span class='line'>303</span> </span><span class="NAME">minplayer.players.html5.prototype.stop</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>304</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">minplayer.players.base.prototype.stop.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>305</span> </span><span class="WHIT">    </span><span class="NAME">this.player.pause</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>306</span> </span><span class="WHIT">    </span><span class="NAME">this.player.src</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>307</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>308</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>309</span> 
+<span class='line'>310</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>311</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>312</span> 
+<span class='line'>313</span> </span><span class="COMM">/**
+<span class='line'>314</span>  * @see minplayer.players.base#seek
+<span class='line'>315</span>  * @return {boolean} If this action was performed.
+<span class='line'>316</span>  */</span><span class="WHIT">
+<span class='line'>317</span> </span><span class="NAME">minplayer.players.html5.prototype.seek</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">pos</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>318</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">minplayer.players.base.prototype.seek.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pos</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>319</span> </span><span class="WHIT">    </span><span class="NAME">this.player.currentTime</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pos</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>320</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>321</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>322</span> 
+<span class='line'>323</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>324</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>325</span> 
+<span class='line'>326</span> </span><span class="COMM">/**
+<span class='line'>327</span>  * @see minplayer.players.base#setVolume
+<span class='line'>328</span>  * @return {boolean} If this action was performed.
+<span class='line'>329</span>  */</span><span class="WHIT">
+<span class='line'>330</span> </span><span class="NAME">minplayer.players.html5.prototype.setVolume</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">vol</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>331</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">minplayer.players.base.prototype.setVolume.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">vol</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>332</span> </span><span class="WHIT">    </span><span class="NAME">this.player.volume</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">vol</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>333</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>334</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>335</span> 
+<span class='line'>336</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>337</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>338</span> 
+<span class='line'>339</span> </span><span class="COMM">/**
+<span class='line'>340</span>  * @see minplayer.players.base#getVolume
+<span class='line'>341</span>  */</span><span class="WHIT">
+<span class='line'>342</span> </span><span class="NAME">minplayer.players.html5.prototype.getVolume</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">callback</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>343</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.isReady</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>344</span> </span><span class="WHIT">    </span><span class="NAME">callback</span><span class="PUNC">(</span><span class="NAME">this.player.volume</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>345</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>346</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>347</span> 
+<span class='line'>348</span> </span><span class="COMM">/**
+<span class='line'>349</span>  * @see minplayer.players.base#getDuration
+<span class='line'>350</span>  */</span><span class="WHIT">
+<span class='line'>351</span> </span><span class="NAME">minplayer.players.html5.prototype.getDuration</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">callback</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>352</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.isReady</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>353</span> </span><span class="WHIT">    </span><span class="NAME">callback</span><span class="PUNC">(</span><span class="NAME">this.player.duration</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>354</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>355</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>356</span> 
+<span class='line'>357</span> </span><span class="COMM">/**
+<span class='line'>358</span>  * @see minplayer.players.base#getCurrentTime
+<span class='line'>359</span>  */</span><span class="WHIT">
+<span class='line'>360</span> </span><span class="NAME">minplayer.players.html5.prototype.getCurrentTime</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">callback</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>361</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.isReady</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>362</span> </span><span class="WHIT">    </span><span class="NAME">callback</span><span class="PUNC">(</span><span class="NAME">this.player.currentTime</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>363</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>364</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>365</span> 
+<span class='line'>366</span> </span><span class="COMM">/**
+<span class='line'>367</span>  * @see minplayer.players.base#getBytesLoaded
+<span class='line'>368</span>  */</span><span class="WHIT">
+<span class='line'>369</span> </span><span class="NAME">minplayer.players.html5.prototype.getBytesLoaded</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">callback</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>370</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.isReady</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>371</span> </span><span class="WHIT">    </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">loaded</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>372</span> 
+<span class='line'>373</span> </span><span class="WHIT">    </span><span class="COMM">// Check several different possibilities.</span><span class="WHIT">
+<span class='line'>374</span> </span><span class="WHIT">    </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.bytesLoaded.value</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>375</span> </span><span class="WHIT">      </span><span class="NAME">loaded</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.bytesLoaded.value</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>376</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>377</span> </span><span class="WHIT">    </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.player.buffered</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT">
+<span class='line'>378</span> </span><span class="WHIT">        </span><span class="NAME">this.player.buffered.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT">
+<span class='line'>379</span> </span><span class="WHIT">        </span><span class="NAME">this.player.buffered.end</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT">
+<span class='line'>380</span> </span><span class="WHIT">        </span><span class="NAME">this.player.duration</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>381</span> </span><span class="WHIT">      </span><span class="NAME">loaded</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.player.buffered.end</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>382</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>383</span> </span><span class="WHIT">    </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.player.bytesTotal</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT">
+<span class='line'>384</span> </span><span class="WHIT">             </span><span class="NAME">this.player.bytesTotal</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT">
+<span class='line'>385</span> </span><span class="WHIT">             </span><span class="NAME">this.player.bufferedBytes</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>386</span> </span><span class="WHIT">      </span><span class="NAME">loaded</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.player.bufferedBytes</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>387</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>388</span> 
+<span class='line'>389</span> </span><span class="WHIT">    </span><span class="COMM">// Return the loaded amount.</span><span class="WHIT">
+<span class='line'>390</span> </span><span class="WHIT">    </span><span class="NAME">callback</span><span class="PUNC">(</span><span class="NAME">loaded</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>391</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>392</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>393</span> 
+<span class='line'>394</span> </span><span class="COMM">/**
+<span class='line'>395</span>  * @see minplayer.players.base#getBytesTotal
+<span class='line'>396</span>  */</span><span class="WHIT">
+<span class='line'>397</span> </span><span class="NAME">minplayer.players.html5.prototype.getBytesTotal</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">callback</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>398</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.isReady</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>399</span> 
+<span class='line'>400</span> </span><span class="WHIT">    </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">total</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>401</span> 
+<span class='line'>402</span> </span><span class="WHIT">    </span><span class="COMM">// Check several different possibilities.</span><span class="WHIT">
+<span class='line'>403</span> </span><span class="WHIT">    </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.bytesTotal.value</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>404</span> </span><span class="WHIT">      </span><span class="NAME">total</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.bytesTotal.value</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>405</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>406</span> </span><span class="WHIT">    </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.player.buffered</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT">
+<span class='line'>407</span> </span><span class="WHIT">        </span><span class="NAME">this.player.buffered.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT">
+<span class='line'>408</span> </span><span class="WHIT">        </span><span class="NAME">this.player.buffered.end</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT">
+<span class='line'>409</span> </span><span class="WHIT">        </span><span class="NAME">this.player.duration</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>410</span> </span><span class="WHIT">      </span><span class="NAME">total</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.player.duration</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>411</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>412</span> </span><span class="WHIT">    </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.player.bytesTotal</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT">
+<span class='line'>413</span> </span><span class="WHIT">             </span><span class="NAME">this.player.bytesTotal</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT">
+<span class='line'>414</span> </span><span class="WHIT">             </span><span class="NAME">this.player.bufferedBytes</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>415</span> </span><span class="WHIT">      </span><span class="NAME">total</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.player.bytesTotal</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>416</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>417</span> 
+<span class='line'>418</span> </span><span class="WHIT">    </span><span class="COMM">// Return the loaded amount.</span><span class="WHIT">
+<span class='line'>419</span> </span><span class="WHIT">    </span><span class="NAME">callback</span><span class="PUNC">(</span><span class="NAME">total</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>420</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>421</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>422</span> </span></pre></body></html>
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/doc/symbols/src/minplayer_src_minplayer.players.minplayer.js.html b/public/admin/js/osmplayer/doc/symbols/src/minplayer_src_minplayer.players.minplayer.js.html
new file mode 100644
index 0000000000000000000000000000000000000000..16c83ed9eeebfde7a1f0f773e6b5cb8f4ac289b5
--- /dev/null
+++ b/public/admin/js/osmplayer/doc/symbols/src/minplayer_src_minplayer.players.minplayer.js.html
@@ -0,0 +1,313 @@
+<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
+	.KEYW {color: #933;}
+	.COMM {color: #bbb; font-style: italic;}
+	.NUMB {color: #393;}
+	.STRN {color: #393;}
+	.REGX {color: #339;}
+	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
+	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/** The minplayer namespace. */</span><span class="WHIT">
+<span class='line'>  2</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">minplayer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">minplayer</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>  3</span> 
+<span class='line'>  4</span> </span><span class="COMM">/** All the media player implementations */</span><span class="WHIT">
+<span class='line'>  5</span> </span><span class="NAME">minplayer.players</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">minplayer.players</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>  6</span> 
+<span class='line'>  7</span> </span><span class="COMM">/**
+<span class='line'>  8</span>  * @constructor
+<span class='line'>  9</span>  * @extends minplayer.display
+<span class='line'> 10</span>  * @class The Flash media player class to control the flash fallback.
+<span class='line'> 11</span>  *
+<span class='line'> 12</span>  * @param {object} context The jQuery context.
+<span class='line'> 13</span>  * @param {object} options This components options.
+<span class='line'> 14</span>  * @param {object} queue The event queue to pass events around.
+<span class='line'> 15</span>  */</span><span class="WHIT">
+<span class='line'> 16</span> </span><span class="NAME">minplayer.players.minplayer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">context</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">queue</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 17</span> 
+<span class='line'> 18</span> </span><span class="WHIT">  </span><span class="COMM">// Derive from players flash.</span><span class="WHIT">
+<span class='line'> 19</span> </span><span class="WHIT">  </span><span class="NAME">minplayer.players.flash.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">context</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">queue</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 20</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 21</span> 
+<span class='line'> 22</span> </span><span class="COMM">/** Derive from minplayer.players.flash. */</span><span class="WHIT">
+<span class='line'> 23</span> </span><span class="NAME">minplayer.players.minplayer.prototype</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">minplayer.players.flash</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 24</span> 
+<span class='line'> 25</span> </span><span class="COMM">/** Reset the constructor. */</span><span class="WHIT">
+<span class='line'> 26</span> </span><span class="NAME">minplayer.players.minplayer.prototype.constructor</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">minplayer.players.minplayer</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 27</span> 
+<span class='line'> 28</span> </span><span class="COMM">/**
+<span class='line'> 29</span>  * @see minplayer.plugin.construct
+<span class='line'> 30</span>  * @this minplayer.players.minplayer
+<span class='line'> 31</span>  */</span><span class="WHIT">
+<span class='line'> 32</span> </span><span class="NAME">minplayer.players.minplayer.prototype.construct</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 33</span> 
+<span class='line'> 34</span> </span><span class="WHIT">  </span><span class="COMM">// Call the players.flash constructor.</span><span class="WHIT">
+<span class='line'> 35</span> </span><span class="WHIT">  </span><span class="NAME">minplayer.players.flash.prototype.construct.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 36</span> 
+<span class='line'> 37</span> </span><span class="WHIT">  </span><span class="COMM">// Set the plugin name within the options.</span><span class="WHIT">
+<span class='line'> 38</span> </span><span class="WHIT">  </span><span class="NAME">this.options.pluginName</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'minplayer'</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 39</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 40</span> 
+<span class='line'> 41</span> </span><span class="COMM">/**
+<span class='line'> 42</span>  * Called when the Flash player is ready.
+<span class='line'> 43</span>  *
+<span class='line'> 44</span>  * @param {string} id The media player ID.
+<span class='line'> 45</span>  */</span><span class="WHIT">
+<span class='line'> 46</span> </span><span class="NAME">window.onFlashPlayerReady</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">id</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 47</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">media</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">minplayer.get</span><span class="PUNC">(</span><span class="NAME">id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'media'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 48</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">media.length</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 49</span> </span><span class="WHIT">  </span><span class="KEYW">while</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">--</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 50</span> </span><span class="WHIT">    </span><span class="NAME">media</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">onReady</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 51</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 52</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 53</span> 
+<span class='line'> 54</span> </span><span class="COMM">/**
+<span class='line'> 55</span>  * Called when the Flash player updates.
+<span class='line'> 56</span>  *
+<span class='line'> 57</span>  * @param {string} id The media player ID.
+<span class='line'> 58</span>  * @param {string} eventType The event type that was triggered.
+<span class='line'> 59</span>  */</span><span class="WHIT">
+<span class='line'> 60</span> </span><span class="NAME">window.onFlashPlayerUpdate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">eventType</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 61</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">media</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">minplayer.get</span><span class="PUNC">(</span><span class="NAME">id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'media'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 62</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">media.length</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 63</span> </span><span class="WHIT">  </span><span class="KEYW">while</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">--</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 64</span> </span><span class="WHIT">    </span><span class="NAME">media</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">onMediaUpdate</span><span class="PUNC">(</span><span class="NAME">eventType</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 65</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 66</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 67</span> 
+<span class='line'> 68</span> </span><span class="COMM">/**
+<span class='line'> 69</span>  * Used to debug from the Flash player to the browser console.
+<span class='line'> 70</span>  *
+<span class='line'> 71</span>  * @param {string} debug The debug string.
+<span class='line'> 72</span>  */</span><span class="WHIT">
+<span class='line'> 73</span> </span><span class="NAME">window.onFlashPlayerDebug</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">debug</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 74</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">console</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">console.log</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 75</span> </span><span class="WHIT">    </span><span class="NAME">console.log</span><span class="PUNC">(</span><span class="NAME">debug</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 76</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 77</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 78</span> 
+<span class='line'> 79</span> </span><span class="COMM">/**
+<span class='line'> 80</span>  * @see minplayer.players.base#getPriority
+<span class='line'> 81</span>  * @return {number} The priority of this media player.
+<span class='line'> 82</span>  */</span><span class="WHIT">
+<span class='line'> 83</span> </span><span class="NAME">minplayer.players.minplayer.getPriority</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 84</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 85</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 86</span> 
+<span class='line'> 87</span> </span><span class="COMM">/**
+<span class='line'> 88</span>  * @see minplayer.players.base#canPlay
+<span class='line'> 89</span>  * @return {boolean} If this player can play this media type.
+<span class='line'> 90</span>  */</span><span class="WHIT">
+<span class='line'> 91</span> </span><span class="NAME">minplayer.players.minplayer.canPlay</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">file</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 92</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">isWEBM</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">jQuery.inArray</span><span class="PUNC">(</span><span class="NAME">file.mimetype</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="STRN">'video/x-webm'</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 93</span> </span><span class="WHIT">    </span><span class="STRN">'video/webm'</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 94</span> </span><span class="WHIT">    </span><span class="STRN">'application/octet-stream'</span><span class="WHIT">
+<span class='line'> 95</span> </span><span class="WHIT">  </span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 96</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">isWEBM</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">file.type</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">'video'</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">file.type</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">'audio'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 97</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 98</span> 
+<span class='line'> 99</span> </span><span class="COMM">/**
+<span class='line'>100</span>  * @see minplayer.players.base#create
+<span class='line'>101</span>  * @return {object} The media player entity.
+<span class='line'>102</span>  */</span><span class="WHIT">
+<span class='line'>103</span> </span><span class="NAME">minplayer.players.minplayer.prototype.create</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>104</span> 
+<span class='line'>105</span> </span><span class="WHIT">  </span><span class="COMM">// Make sure we provide default options...</span><span class="WHIT">
+<span class='line'>106</span> </span><span class="WHIT">  </span><span class="NAME">this.options</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">jQuery.extend</span><span class="PUNC">(</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>107</span> </span><span class="WHIT">    </span><span class="NAME">swfplayer</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'flash/minplayer.swf'</span><span class="WHIT">
+<span class='line'>108</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.options</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>109</span> 
+<span class='line'>110</span> </span><span class="WHIT">  </span><span class="NAME">minplayer.players.flash.prototype.create.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>111</span> 
+<span class='line'>112</span> </span><span class="WHIT">  </span><span class="COMM">// The flash variables for this flash player.</span><span class="WHIT">
+<span class='line'>113</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">flashVars</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>114</span> </span><span class="WHIT">    </span><span class="STRN">'id'</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">this.options.id</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>115</span> </span><span class="WHIT">    </span><span class="STRN">'debug'</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">this.options.debug</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>116</span> </span><span class="WHIT">    </span><span class="STRN">'config'</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'nocontrols'</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>117</span> </span><span class="WHIT">    </span><span class="STRN">'file'</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">this.mediaFile.path</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>118</span> </span><span class="WHIT">    </span><span class="STRN">'autostart'</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">this.options.autoplay</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>119</span> </span><span class="WHIT">    </span><span class="STRN">'autoload'</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">this.options.autoload</span><span class="WHIT">
+<span class='line'>120</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>121</span> 
+<span class='line'>122</span> </span><span class="WHIT">  </span><span class="COMM">// Return a flash media player object.</span><span class="WHIT">
+<span class='line'>123</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.getFlash</span><span class="PUNC">(</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>124</span> </span><span class="WHIT">    </span><span class="NAME">swf</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">this.options.swfplayer</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>125</span> </span><span class="WHIT">    </span><span class="NAME">id</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">this.options.id</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'_player'</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>126</span> </span><span class="WHIT">    </span><span class="NAME">width</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'100%'</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>127</span> </span><span class="WHIT">    </span><span class="NAME">height</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'100%'</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>128</span> </span><span class="WHIT">    </span><span class="NAME">flashvars</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">flashVars</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>129</span> </span><span class="WHIT">    </span><span class="NAME">wmode</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">this.options.wmode</span><span class="WHIT">
+<span class='line'>130</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>131</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>132</span> 
+<span class='line'>133</span> </span><span class="COMM">/**
+<span class='line'>134</span>  * Called when the Flash player has an update.
+<span class='line'>135</span>  *
+<span class='line'>136</span>  * @param {string} eventType The event that was triggered in the player.
+<span class='line'>137</span>  */</span><span class="WHIT">
+<span class='line'>138</span> </span><span class="NAME">minplayer.players.minplayer.prototype.onMediaUpdate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">eventType</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>139</span> </span><span class="WHIT">  </span><span class="KEYW">switch</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">eventType</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>140</span> </span><span class="WHIT">    </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">'mediaMeta'</span><span class="PUNC">:</span><span class="WHIT">
+<span class='line'>141</span> </span><span class="WHIT">      </span><span class="NAME">this.onLoaded</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>142</span> </span><span class="WHIT">      </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>143</span> </span><span class="WHIT">    </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">'mediaPlaying'</span><span class="PUNC">:</span><span class="WHIT">
+<span class='line'>144</span> </span><span class="WHIT">      </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.minplayerloaded</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>145</span> </span><span class="WHIT">        </span><span class="NAME">this.onPlaying</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>146</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>147</span> </span><span class="WHIT">      </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>148</span> </span><span class="WHIT">    </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">'mediaPaused'</span><span class="PUNC">:</span><span class="WHIT">
+<span class='line'>149</span> </span><span class="WHIT">      </span><span class="NAME">this.minplayerloaded</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>150</span> </span><span class="WHIT">      </span><span class="NAME">this.onPaused</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>151</span> </span><span class="WHIT">      </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>152</span> </span><span class="WHIT">    </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">'mediaComplete'</span><span class="PUNC">:</span><span class="WHIT">
+<span class='line'>153</span> </span><span class="WHIT">      </span><span class="NAME">this.onComplete</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>154</span> </span><span class="WHIT">      </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>155</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>156</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>157</span> 
+<span class='line'>158</span> </span><span class="COMM">/**
+<span class='line'>159</span>  * Resets all variables.
+<span class='line'>160</span>  */</span><span class="WHIT">
+<span class='line'>161</span> </span><span class="NAME">minplayer.players.minplayer.prototype.clear</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>162</span> </span><span class="WHIT">  </span><span class="NAME">minplayer.players.flash.prototype.clear.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>163</span> </span><span class="WHIT">  </span><span class="NAME">this.minplayerloaded</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.options.autoplay</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>164</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>165</span> 
+<span class='line'>166</span> </span><span class="COMM">/**
+<span class='line'>167</span>  * @see minplayer.players.base#load
+<span class='line'>168</span>  * @return {boolean} If this action was performed.
+<span class='line'>169</span>  */</span><span class="WHIT">
+<span class='line'>170</span> </span><span class="NAME">minplayer.players.minplayer.prototype.load</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">file</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>171</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">minplayer.players.flash.prototype.load.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">file</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>172</span> </span><span class="WHIT">    </span><span class="NAME">this.player.loadMedia</span><span class="PUNC">(</span><span class="NAME">file.path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">file.stream</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>173</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>174</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>175</span> 
+<span class='line'>176</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>177</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>178</span> 
+<span class='line'>179</span> </span><span class="COMM">/**
+<span class='line'>180</span>  * @see minplayer.players.base#play
+<span class='line'>181</span>  * @return {boolean} If this action was performed.
+<span class='line'>182</span>  */</span><span class="WHIT">
+<span class='line'>183</span> </span><span class="NAME">minplayer.players.minplayer.prototype.play</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>184</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">minplayer.players.flash.prototype.play.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>185</span> </span><span class="WHIT">    </span><span class="NAME">this.player.playMedia</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>186</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>187</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>188</span> 
+<span class='line'>189</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>190</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>191</span> 
+<span class='line'>192</span> </span><span class="COMM">/**
+<span class='line'>193</span>  * @see minplayer.players.base#pause
+<span class='line'>194</span>  * @return {boolean} If this action was performed.
+<span class='line'>195</span>  */</span><span class="WHIT">
+<span class='line'>196</span> </span><span class="NAME">minplayer.players.minplayer.prototype.pause</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>197</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">minplayer.players.flash.prototype.pause.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>198</span> </span><span class="WHIT">    </span><span class="NAME">this.player.pauseMedia</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>199</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>200</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>201</span> 
+<span class='line'>202</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>203</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>204</span> 
+<span class='line'>205</span> </span><span class="COMM">/**
+<span class='line'>206</span>  * @see minplayer.players.base#stop
+<span class='line'>207</span>  * @return {boolean} If this action was performed.
+<span class='line'>208</span>  */</span><span class="WHIT">
+<span class='line'>209</span> </span><span class="NAME">minplayer.players.minplayer.prototype.stop</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>210</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">minplayer.players.flash.prototype.stop.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>211</span> </span><span class="WHIT">    </span><span class="NAME">this.player.stopMedia</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>212</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>213</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>214</span> 
+<span class='line'>215</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>216</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>217</span> 
+<span class='line'>218</span> </span><span class="COMM">/**
+<span class='line'>219</span>  * @see minplayer.players.base#seek
+<span class='line'>220</span>  * @return {boolean} If this action was performed.
+<span class='line'>221</span>  */</span><span class="WHIT">
+<span class='line'>222</span> </span><span class="NAME">minplayer.players.minplayer.prototype.seek</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">pos</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>223</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">minplayer.players.flash.prototype.seek.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pos</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>224</span> </span><span class="WHIT">    </span><span class="NAME">this.player.seekMedia</span><span class="PUNC">(</span><span class="NAME">pos</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>225</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>226</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>227</span> 
+<span class='line'>228</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>229</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>230</span> 
+<span class='line'>231</span> </span><span class="COMM">/**
+<span class='line'>232</span>  * @see minplayer.players.base#setVolume
+<span class='line'>233</span>  * @return {boolean} If this action was performed.
+<span class='line'>234</span>  */</span><span class="WHIT">
+<span class='line'>235</span> </span><span class="NAME">minplayer.players.minplayer.prototype.setVolume</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">vol</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>236</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">minplayer.players.flash.prototype.setVolume.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">vol</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>237</span> </span><span class="WHIT">    </span><span class="NAME">this.player.setVolume</span><span class="PUNC">(</span><span class="NAME">vol</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>238</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>239</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>240</span> 
+<span class='line'>241</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>242</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>243</span> 
+<span class='line'>244</span> </span><span class="COMM">/**
+<span class='line'>245</span>  * @see minplayer.players.base#getVolume
+<span class='line'>246</span>  */</span><span class="WHIT">
+<span class='line'>247</span> </span><span class="NAME">minplayer.players.minplayer.prototype.getVolume</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">callback</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>248</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.isReady</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>249</span> </span><span class="WHIT">    </span><span class="NAME">callback</span><span class="PUNC">(</span><span class="NAME">this.player.getVolume</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>250</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>251</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>252</span> 
+<span class='line'>253</span> </span><span class="COMM">/**
+<span class='line'>254</span>  * @see minplayer.players.flash#getDuration
+<span class='line'>255</span>  */</span><span class="WHIT">
+<span class='line'>256</span> </span><span class="NAME">minplayer.players.minplayer.prototype.getDuration</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">callback</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>257</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.isReady</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>258</span> 
+<span class='line'>259</span> </span><span class="WHIT">    </span><span class="COMM">// Check to see if it is immediately available.</span><span class="WHIT">
+<span class='line'>260</span> </span><span class="WHIT">    </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">duration</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.player.getDuration</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>261</span> </span><span class="WHIT">    </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">duration</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>262</span> </span><span class="WHIT">      </span><span class="NAME">callback</span><span class="PUNC">(</span><span class="NAME">duration</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>263</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>264</span> </span><span class="WHIT">    </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>265</span> 
+<span class='line'>266</span> </span><span class="WHIT">      </span><span class="COMM">// If not, then poll every second for the duration.</span><span class="WHIT">
+<span class='line'>267</span> </span><span class="WHIT">      </span><span class="NAME">this.poll</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">player</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>268</span> </span><span class="WHIT">        </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>269</span> </span><span class="WHIT">          </span><span class="NAME">duration</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">player.player.getDuration</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>270</span> </span><span class="WHIT">          </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">duration</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>271</span> </span><span class="WHIT">            </span><span class="NAME">callback</span><span class="PUNC">(</span><span class="NAME">duration</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>272</span> </span><span class="WHIT">          </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>273</span> </span><span class="WHIT">          </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">duration</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>274</span> </span><span class="WHIT">        </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>275</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1000</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>276</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>277</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>278</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>279</span> 
+<span class='line'>280</span> </span><span class="COMM">/**
+<span class='line'>281</span>  * @see minplayer.players.base#getCurrentTime
+<span class='line'>282</span>  */</span><span class="WHIT">
+<span class='line'>283</span> </span><span class="NAME">minplayer.players.minplayer.prototype.getCurrentTime</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">callback</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>284</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.isReady</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>285</span> </span><span class="WHIT">    </span><span class="NAME">callback</span><span class="PUNC">(</span><span class="NAME">this.player.getCurrentTime</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>286</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>287</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>288</span> 
+<span class='line'>289</span> </span><span class="COMM">/**
+<span class='line'>290</span>  * @see minplayer.players.base#getBytesLoaded
+<span class='line'>291</span>  */</span><span class="WHIT">
+<span class='line'>292</span> </span><span class="NAME">minplayer.players.minplayer.prototype.getBytesLoaded</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">callback</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>293</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.isReady</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>294</span> </span><span class="WHIT">    </span><span class="NAME">callback</span><span class="PUNC">(</span><span class="NAME">this.player.getMediaBytesLoaded</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>295</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>296</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>297</span> 
+<span class='line'>298</span> </span><span class="COMM">/**
+<span class='line'>299</span>  * @see minplayer.players.base#getBytesTotal.
+<span class='line'>300</span>  */</span><span class="WHIT">
+<span class='line'>301</span> </span><span class="NAME">minplayer.players.minplayer.prototype.getBytesTotal</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">callback</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>302</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.isReady</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>303</span> </span><span class="WHIT">    </span><span class="NAME">callback</span><span class="PUNC">(</span><span class="NAME">this.player.getMediaBytesTotal</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>304</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>305</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>306</span> </span></pre></body></html>
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/doc/symbols/src/minplayer_src_minplayer.players.vimeo.js.html b/public/admin/js/osmplayer/doc/symbols/src/minplayer_src_minplayer.players.vimeo.js.html
new file mode 100644
index 0000000000000000000000000000000000000000..90bbc0f64b2c65bbc57d7abcafd0d43df3bbc86c
--- /dev/null
+++ b/public/admin/js/osmplayer/doc/symbols/src/minplayer_src_minplayer.players.vimeo.js.html
@@ -0,0 +1,355 @@
+<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
+	.KEYW {color: #933;}
+	.COMM {color: #bbb; font-style: italic;}
+	.NUMB {color: #393;}
+	.STRN {color: #393;}
+	.REGX {color: #339;}
+	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
+	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/** The minplayer namespace. */</span><span class="WHIT">
+<span class='line'>  2</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">minplayer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">minplayer</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>  3</span> 
+<span class='line'>  4</span> </span><span class="COMM">/** All the media player implementations */</span><span class="WHIT">
+<span class='line'>  5</span> </span><span class="NAME">minplayer.players</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">minplayer.players</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>  6</span> 
+<span class='line'>  7</span> </span><span class="COMM">/**
+<span class='line'>  8</span>  * @constructor
+<span class='line'>  9</span>  * @extends minplayer.players.base
+<span class='line'> 10</span>  * @class The vimeo media player.
+<span class='line'> 11</span>  *
+<span class='line'> 12</span>  * @param {object} context The jQuery context.
+<span class='line'> 13</span>  * @param {object} options This components options.
+<span class='line'> 14</span>  * @param {object} queue The event queue to pass events around.
+<span class='line'> 15</span>  */</span><span class="WHIT">
+<span class='line'> 16</span> </span><span class="NAME">minplayer.players.vimeo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">context</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">queue</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 17</span> 
+<span class='line'> 18</span> </span><span class="WHIT">  </span><span class="COMM">// Derive from players base.</span><span class="WHIT">
+<span class='line'> 19</span> </span><span class="WHIT">  </span><span class="NAME">minplayer.players.base.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">context</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">queue</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 20</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 21</span> 
+<span class='line'> 22</span> </span><span class="COMM">/** Derive from minplayer.players.base. */</span><span class="WHIT">
+<span class='line'> 23</span> </span><span class="NAME">minplayer.players.vimeo.prototype</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">minplayer.players.base</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 24</span> 
+<span class='line'> 25</span> </span><span class="COMM">/** Reset the constructor. */</span><span class="WHIT">
+<span class='line'> 26</span> </span><span class="NAME">minplayer.players.vimeo.prototype.constructor</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">minplayer.players.vimeo</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 27</span> 
+<span class='line'> 28</span> </span><span class="COMM">/**
+<span class='line'> 29</span>  * @see minplayer.plugin.construct
+<span class='line'> 30</span>  * @this minplayer.players.vimeo
+<span class='line'> 31</span>  */</span><span class="WHIT">
+<span class='line'> 32</span> </span><span class="NAME">minplayer.players.vimeo.prototype.construct</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 33</span> 
+<span class='line'> 34</span> </span><span class="WHIT">  </span><span class="COMM">// Call the players.flash constructor.</span><span class="WHIT">
+<span class='line'> 35</span> </span><span class="WHIT">  </span><span class="NAME">minplayer.players.base.prototype.construct.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 36</span> 
+<span class='line'> 37</span> </span><span class="WHIT">  </span><span class="COMM">// Set the plugin name within the options.</span><span class="WHIT">
+<span class='line'> 38</span> </span><span class="WHIT">  </span><span class="NAME">this.options.pluginName</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'vimeo'</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 39</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 40</span> 
+<span class='line'> 41</span> </span><span class="COMM">/**
+<span class='line'> 42</span>  * @see minplayer.players.base#getPriority
+<span class='line'> 43</span>  * @return {number} The priority of this media player.
+<span class='line'> 44</span>  */</span><span class="WHIT">
+<span class='line'> 45</span> </span><span class="NAME">minplayer.players.vimeo.getPriority</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 46</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NUMB">10</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 47</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 48</span> 
+<span class='line'> 49</span> </span><span class="COMM">/**
+<span class='line'> 50</span>  * @see minplayer.players.base#canPlay
+<span class='line'> 51</span>  * @return {boolean} If this player can play this media type.
+<span class='line'> 52</span>  */</span><span class="WHIT">
+<span class='line'> 53</span> </span><span class="NAME">minplayer.players.vimeo.canPlay</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">file</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 54</span> 
+<span class='line'> 55</span> </span><span class="WHIT">  </span><span class="COMM">// Check for the mimetype for vimeo.</span><span class="WHIT">
+<span class='line'> 56</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">file.mimetype</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'video/vimeo'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 57</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 58</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 59</span> 
+<span class='line'> 60</span> </span><span class="WHIT">  </span><span class="COMM">// If the path is a vimeo path, then return true.</span><span class="WHIT">
+<span class='line'> 61</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">file.path.search</span><span class="PUNC">(</span><span class="REGX">/^http(s)?\:\/\/(www\.)?vimeo\.com/i</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 62</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 63</span> 
+<span class='line'> 64</span> </span><span class="COMM">/**
+<span class='line'> 65</span>  * Determines if the player should show the playloader.
+<span class='line'> 66</span>  *
+<span class='line'> 67</span>  * @param {string} preview The preview image.
+<span class='line'> 68</span>  * @return {bool} If this player implements its own playLoader.
+<span class='line'> 69</span>  */</span><span class="WHIT">
+<span class='line'> 70</span> </span><span class="NAME">minplayer.players.vimeo.prototype.hasPlayLoader</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">preview</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 71</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">minplayer.hasTouch</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">preview</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 72</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 73</span> 
+<span class='line'> 74</span> </span><span class="COMM">/**
+<span class='line'> 75</span>  * Determines if the player should show the playloader.
+<span class='line'> 76</span>  *
+<span class='line'> 77</span>  * @return {bool} If this player implements its own playLoader.
+<span class='line'> 78</span>  */</span><span class="WHIT">
+<span class='line'> 79</span> </span><span class="NAME">minplayer.players.vimeo.prototype.hasController</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 80</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">minplayer.hasTouch</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 81</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 82</span> 
+<span class='line'> 83</span> </span><span class="COMM">/**
+<span class='line'> 84</span>  * Return the ID for a provided media file.
+<span class='line'> 85</span>  *
+<span class='line'> 86</span>  * @param {object} file A {@link minplayer.file} object.
+<span class='line'> 87</span>  * @return {string} The ID for the provided media.
+<span class='line'> 88</span>  */</span><span class="WHIT">
+<span class='line'> 89</span> </span><span class="NAME">minplayer.players.vimeo.getMediaId</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">file</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 90</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">regex</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="REGX">/^http[s]?\:\/\/(www\.)?vimeo\.com\/(\?v\=)?([0-9]+)/i</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 91</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">file.path.search</span><span class="PUNC">(</span><span class="NAME">regex</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 92</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">file.path.match</span><span class="PUNC">(</span><span class="NAME">regex</span><span class="PUNC">)</span><span class="PUNC">[</span><span class="NUMB">3</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 93</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 94</span> </span><span class="WHIT">  </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 95</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">file.path</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 96</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 97</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 98</span> 
+<span class='line'> 99</span> </span><span class="COMM">/**
+<span class='line'>100</span>  * Returns a preview image for this media player.
+<span class='line'>101</span>  *
+<span class='line'>102</span>  * @param {object} file A {@link minplayer.file} object.
+<span class='line'>103</span>  * @param {string} type The type of image.
+<span class='line'>104</span>  * @param {function} callback Called when the image is retrieved.
+<span class='line'>105</span>  */</span><span class="WHIT">
+<span class='line'>106</span> </span><span class="NAME">minplayer.players.vimeo.getImage</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">file</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">type</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">callback</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>107</span> </span><span class="WHIT">  </span><span class="NAME">jQuery.ajax</span><span class="PUNC">(</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>108</span> </span><span class="WHIT">    </span><span class="NAME">url</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'http://vimeo.com/api/v2/video/'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">file.id</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'.json'</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>109</span> </span><span class="WHIT">    </span><span class="NAME">dataType</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'jsonp'</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>110</span> </span><span class="WHIT">    </span><span class="NAME">success</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">data</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>111</span> </span><span class="WHIT">      </span><span class="NAME">callback</span><span class="PUNC">(</span><span class="NAME">data</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">thumbnail_large</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>112</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>113</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>114</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>115</span> 
+<span class='line'>116</span> </span><span class="COMM">/**
+<span class='line'>117</span>  * @see minplayer.players.base#reset
+<span class='line'>118</span>  */</span><span class="WHIT">
+<span class='line'>119</span> </span><span class="NAME">minplayer.players.vimeo.prototype.reset</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>120</span> 
+<span class='line'>121</span> </span><span class="WHIT">  </span><span class="COMM">// Reset the flash variables..</span><span class="WHIT">
+<span class='line'>122</span> </span><span class="WHIT">  </span><span class="NAME">minplayer.players.base.prototype.reset.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>123</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>124</span> 
+<span class='line'>125</span> </span><span class="COMM">/**
+<span class='line'>126</span>  * @see minplayer.players.base#create
+<span class='line'>127</span>  * @return {object} The media player entity.
+<span class='line'>128</span>  */</span><span class="WHIT">
+<span class='line'>129</span> </span><span class="NAME">minplayer.players.vimeo.prototype.create</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>130</span> </span><span class="WHIT">  </span><span class="NAME">minplayer.players.base.prototype.create.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>131</span> 
+<span class='line'>132</span> </span><span class="WHIT">  </span><span class="COMM">// Insert the Vimeo Froogaloop player.</span><span class="WHIT">
+<span class='line'>133</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">tag</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">document.createElement</span><span class="PUNC">(</span><span class="STRN">'script'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>134</span> </span><span class="WHIT">  </span><span class="NAME">tag.src</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'http://a.vimeocdn.com/js/froogaloop2.min.js'</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>135</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">firstScriptTag</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">document.getElementsByTagName</span><span class="PUNC">(</span><span class="STRN">'script'</span><span class="PUNC">)</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>136</span> </span><span class="WHIT">  </span><span class="NAME">firstScriptTag.parentNode.insertBefore</span><span class="PUNC">(</span><span class="NAME">tag</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">firstScriptTag</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>137</span> 
+<span class='line'>138</span> </span><span class="WHIT">  </span><span class="COMM">// Create the iframe for this player.</span><span class="WHIT">
+<span class='line'>139</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">iframe</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">document.createElement</span><span class="PUNC">(</span><span class="STRN">'iframe'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>140</span> </span><span class="WHIT">  </span><span class="NAME">iframe.setAttribute</span><span class="PUNC">(</span><span class="STRN">'id'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.options.id</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'-player'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>141</span> </span><span class="WHIT">  </span><span class="NAME">iframe.setAttribute</span><span class="PUNC">(</span><span class="STRN">'type'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'text/html'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>142</span> </span><span class="WHIT">  </span><span class="NAME">iframe.setAttribute</span><span class="PUNC">(</span><span class="STRN">'width'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'100%'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>143</span> </span><span class="WHIT">  </span><span class="NAME">iframe.setAttribute</span><span class="PUNC">(</span><span class="STRN">'height'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'100%'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>144</span> </span><span class="WHIT">  </span><span class="NAME">iframe.setAttribute</span><span class="PUNC">(</span><span class="STRN">'frameborder'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'0'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>145</span> </span><span class="WHIT">  </span><span class="NAME">jQuery</span><span class="PUNC">(</span><span class="NAME">iframe</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">addClass</span><span class="PUNC">(</span><span class="STRN">'vimeo-player'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>146</span> 
+<span class='line'>147</span> </span><span class="WHIT">  </span><span class="COMM">// Get the source.</span><span class="WHIT">
+<span class='line'>148</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">src</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'http://player.vimeo.com/video/'</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>149</span> </span><span class="WHIT">  </span><span class="NAME">src</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.mediaFile.id</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'?'</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>150</span> 
+<span class='line'>151</span> </span><span class="WHIT">  </span><span class="COMM">// Add the parameters to the src.</span><span class="WHIT">
+<span class='line'>152</span> </span><span class="WHIT">  </span><span class="NAME">src</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">jQuery.param</span><span class="PUNC">(</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>153</span> </span><span class="WHIT">    </span><span class="STRN">'wmode'</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'opaque'</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>154</span> </span><span class="WHIT">    </span><span class="STRN">'api'</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>155</span> </span><span class="WHIT">    </span><span class="STRN">'player_id'</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">this.options.id</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'-player'</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>156</span> </span><span class="WHIT">    </span><span class="STRN">'title'</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>157</span> </span><span class="WHIT">    </span><span class="STRN">'byline'</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>158</span> </span><span class="WHIT">    </span><span class="STRN">'portrait'</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>159</span> </span><span class="WHIT">    </span><span class="STRN">'autoplay'</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">this.options.autoplay</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>160</span> </span><span class="WHIT">    </span><span class="STRN">'loop'</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">this.options.loop</span><span class="WHIT">
+<span class='line'>161</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>162</span> 
+<span class='line'>163</span> </span><span class="WHIT">  </span><span class="COMM">// Set the source of the iframe.</span><span class="WHIT">
+<span class='line'>164</span> </span><span class="WHIT">  </span><span class="NAME">iframe.setAttribute</span><span class="PUNC">(</span><span class="STRN">'src'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">src</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>165</span> 
+<span class='line'>166</span> </span><span class="WHIT">  </span><span class="COMM">// Now register this player when the froogaloop code is loaded.</span><span class="WHIT">
+<span class='line'>167</span> </span><span class="WHIT">  </span><span class="NAME">this.poll</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">player</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>168</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>169</span> </span><span class="WHIT">      </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">window.Froogaloop</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>170</span> </span><span class="WHIT">        </span><span class="NAME">player.player</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">window.Froogaloop</span><span class="PUNC">(</span><span class="NAME">iframe</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>171</span> </span><span class="WHIT">        </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">playerTimeout</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>172</span> </span><span class="WHIT">        </span><span class="NAME">player.player.addEvent</span><span class="PUNC">(</span><span class="STRN">'ready'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>173</span> </span><span class="WHIT">          </span><span class="NAME">clearTimeout</span><span class="PUNC">(</span><span class="NAME">playerTimeout</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>174</span> </span><span class="WHIT">          </span><span class="NAME">player.onReady</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>175</span> </span><span class="WHIT">          </span><span class="NAME">player.onError</span><span class="PUNC">(</span><span class="STRN">''</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>176</span> </span><span class="WHIT">        </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>177</span> </span><span class="WHIT">        </span><span class="NAME">playerTimeout</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">setTimeout</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>178</span> </span><span class="WHIT">          </span><span class="NAME">player.onReady</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>179</span> </span><span class="WHIT">          </span><span class="NAME">player.onError</span><span class="PUNC">(</span><span class="STRN">'Unable to play video.'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>180</span> </span><span class="WHIT">        </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2000</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>181</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>182</span> </span><span class="WHIT">      </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">window.Froogaloop</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>183</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>184</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">200</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>185</span> 
+<span class='line'>186</span> </span><span class="WHIT">  </span><span class="COMM">// Trigger that the load has started.</span><span class="WHIT">
+<span class='line'>187</span> </span><span class="WHIT">  </span><span class="NAME">this.trigger</span><span class="PUNC">(</span><span class="STRN">'loadstart'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>188</span> 
+<span class='line'>189</span> </span><span class="WHIT">  </span><span class="COMM">// Return the player.</span><span class="WHIT">
+<span class='line'>190</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">iframe</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>191</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>192</span> 
+<span class='line'>193</span> </span><span class="COMM">/**
+<span class='line'>194</span>  * @see minplayer.players.base#onReady
+<span class='line'>195</span>  */</span><span class="WHIT">
+<span class='line'>196</span> </span><span class="NAME">minplayer.players.vimeo.prototype.onReady</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">player_id</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>197</span> 
+<span class='line'>198</span> </span><span class="WHIT">  </span><span class="COMM">// Add the other listeners.</span><span class="WHIT">
+<span class='line'>199</span> </span><span class="WHIT">  </span><span class="NAME">this.player.addEvent</span><span class="PUNC">(</span><span class="STRN">'loadProgress'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">player</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>200</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">progress</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>201</span> </span><span class="WHIT">      </span><span class="NAME">player.duration.set</span><span class="PUNC">(</span><span class="NAME">parseFloat</span><span class="PUNC">(</span><span class="NAME">progress.duration</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>202</span> </span><span class="WHIT">      </span><span class="NAME">player.bytesLoaded.set</span><span class="PUNC">(</span><span class="NAME">progress.bytesLoaded</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>203</span> </span><span class="WHIT">      </span><span class="NAME">player.bytesTotal.set</span><span class="PUNC">(</span><span class="NAME">progress.bytesTotal</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>204</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>205</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>206</span> 
+<span class='line'>207</span> </span><span class="WHIT">  </span><span class="NAME">this.player.addEvent</span><span class="PUNC">(</span><span class="STRN">'playProgress'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">player</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>208</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">progress</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>209</span> </span><span class="WHIT">      </span><span class="NAME">player.duration.set</span><span class="PUNC">(</span><span class="NAME">parseFloat</span><span class="PUNC">(</span><span class="NAME">progress.duration</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>210</span> </span><span class="WHIT">      </span><span class="NAME">player.currentTime.set</span><span class="PUNC">(</span><span class="NAME">parseFloat</span><span class="PUNC">(</span><span class="NAME">progress.seconds</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>211</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>212</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>213</span> 
+<span class='line'>214</span> </span><span class="WHIT">  </span><span class="NAME">this.player.addEvent</span><span class="PUNC">(</span><span class="STRN">'play'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">player</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>215</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>216</span> </span><span class="WHIT">      </span><span class="NAME">player.onPlaying</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>217</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>218</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>219</span> 
+<span class='line'>220</span> </span><span class="WHIT">  </span><span class="NAME">this.player.addEvent</span><span class="PUNC">(</span><span class="STRN">'pause'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">player</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>221</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>222</span> </span><span class="WHIT">      </span><span class="NAME">player.onPaused</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>223</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>224</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>225</span> 
+<span class='line'>226</span> </span><span class="WHIT">  </span><span class="NAME">this.player.addEvent</span><span class="PUNC">(</span><span class="STRN">'finish'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">player</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>227</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>228</span> </span><span class="WHIT">      </span><span class="NAME">player.onComplete</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>229</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>230</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>231</span> 
+<span class='line'>232</span> </span><span class="WHIT">  </span><span class="NAME">minplayer.players.base.prototype.onReady.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>233</span> </span><span class="WHIT">  </span><span class="NAME">this.onLoaded</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>234</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>235</span> 
+<span class='line'>236</span> </span><span class="COMM">/**
+<span class='line'>237</span>  * Clears the media player.
+<span class='line'>238</span>  */</span><span class="WHIT">
+<span class='line'>239</span> </span><span class="NAME">minplayer.players.vimeo.prototype.clear</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>240</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.player</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>241</span> </span><span class="WHIT">    </span><span class="NAME">this.player.api</span><span class="PUNC">(</span><span class="STRN">'unload'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>242</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>243</span> </span><span class="WHIT">  </span><span class="NAME">minplayer.players.base.prototype.clear.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>244</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>245</span> 
+<span class='line'>246</span> </span><span class="COMM">/**
+<span class='line'>247</span>  * @see minplayer.players.base#load
+<span class='line'>248</span>  * @return {boolean} If this action was performed.
+<span class='line'>249</span>  */</span><span class="WHIT">
+<span class='line'>250</span> </span><span class="NAME">minplayer.players.vimeo.prototype.load</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">file</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>251</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">minplayer.players.base.prototype.load.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">file</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>252</span> </span><span class="WHIT">    </span><span class="NAME">this.construct</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>253</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>254</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>255</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>256</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>257</span> 
+<span class='line'>258</span> </span><span class="COMM">/**
+<span class='line'>259</span>  * @see minplayer.players.base#play
+<span class='line'>260</span>  * @return {boolean} If this action was performed.
+<span class='line'>261</span>  */</span><span class="WHIT">
+<span class='line'>262</span> </span><span class="NAME">minplayer.players.vimeo.prototype.play</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>263</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">minplayer.players.base.prototype.play.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>264</span> </span><span class="WHIT">    </span><span class="NAME">this.player.api</span><span class="PUNC">(</span><span class="STRN">'play'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>265</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>266</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>267</span> 
+<span class='line'>268</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>269</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>270</span> 
+<span class='line'>271</span> </span><span class="COMM">/**
+<span class='line'>272</span>  * @see minplayer.players.base#pause
+<span class='line'>273</span>  * @return {boolean} If this action was performed.
+<span class='line'>274</span>  */</span><span class="WHIT">
+<span class='line'>275</span> </span><span class="NAME">minplayer.players.vimeo.prototype.pause</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>276</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">minplayer.players.base.prototype.pause.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>277</span> </span><span class="WHIT">    </span><span class="NAME">this.player.api</span><span class="PUNC">(</span><span class="STRN">'pause'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>278</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>279</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>280</span> 
+<span class='line'>281</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>282</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>283</span> 
+<span class='line'>284</span> </span><span class="COMM">/**
+<span class='line'>285</span>  * @see minplayer.players.base#stop
+<span class='line'>286</span>  * @return {boolean} If this action was performed.
+<span class='line'>287</span>  */</span><span class="WHIT">
+<span class='line'>288</span> </span><span class="NAME">minplayer.players.vimeo.prototype.stop</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>289</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">minplayer.players.base.prototype.stop.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>290</span> </span><span class="WHIT">    </span><span class="NAME">this.player.api</span><span class="PUNC">(</span><span class="STRN">'unload'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>291</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>292</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>293</span> 
+<span class='line'>294</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>295</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>296</span> 
+<span class='line'>297</span> </span><span class="COMM">/**
+<span class='line'>298</span>  * @see minplayer.players.base#seek
+<span class='line'>299</span>  * @return {boolean} If this action was performed.
+<span class='line'>300</span>  */</span><span class="WHIT">
+<span class='line'>301</span> </span><span class="NAME">minplayer.players.vimeo.prototype.seek</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">pos</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>302</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">minplayer.players.base.prototype.seek.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pos</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>303</span> </span><span class="WHIT">    </span><span class="NAME">this.player.api</span><span class="PUNC">(</span><span class="STRN">'seekTo'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pos</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>304</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>305</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>306</span> 
+<span class='line'>307</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>308</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>309</span> 
+<span class='line'>310</span> </span><span class="COMM">/**
+<span class='line'>311</span>  * @see minplayer.players.base#setVolume
+<span class='line'>312</span>  * @return {boolean} If this action was performed.
+<span class='line'>313</span>  */</span><span class="WHIT">
+<span class='line'>314</span> </span><span class="NAME">minplayer.players.vimeo.prototype.setVolume</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">vol</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>315</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">minplayer.players.base.prototype.setVolume.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">vol</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>316</span> </span><span class="WHIT">    </span><span class="NAME">this.volume.set</span><span class="PUNC">(</span><span class="NAME">vol</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>317</span> </span><span class="WHIT">    </span><span class="NAME">this.player.api</span><span class="PUNC">(</span><span class="STRN">'setVolume'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">vol</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>318</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>319</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>320</span> 
+<span class='line'>321</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>322</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>323</span> 
+<span class='line'>324</span> </span><span class="COMM">/**
+<span class='line'>325</span>  * @see minplayer.players.base#getVolume
+<span class='line'>326</span>  */</span><span class="WHIT">
+<span class='line'>327</span> </span><span class="NAME">minplayer.players.vimeo.prototype.getVolume</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">callback</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>328</span> </span><span class="WHIT">  </span><span class="NAME">this.player.api</span><span class="PUNC">(</span><span class="STRN">'getVolume'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">vol</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>329</span> </span><span class="WHIT">    </span><span class="NAME">callback</span><span class="PUNC">(</span><span class="NAME">vol</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>330</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>331</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>332</span> 
+<span class='line'>333</span> </span><span class="COMM">/**
+<span class='line'>334</span>  * @see minplayer.players.base#getDuration.
+<span class='line'>335</span>  */</span><span class="WHIT">
+<span class='line'>336</span> </span><span class="NAME">minplayer.players.vimeo.prototype.getDuration</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">callback</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>337</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.isReady</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>338</span> </span><span class="WHIT">    </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.duration.value</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>339</span> </span><span class="WHIT">      </span><span class="NAME">callback</span><span class="PUNC">(</span><span class="NAME">this.duration.value</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>340</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>341</span> </span><span class="WHIT">    </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>342</span> </span><span class="WHIT">      </span><span class="NAME">this.player.api</span><span class="PUNC">(</span><span class="STRN">'getDuration'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">duration</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>343</span> </span><span class="WHIT">        </span><span class="NAME">callback</span><span class="PUNC">(</span><span class="NAME">duration</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>344</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>345</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>346</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>347</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>348</span> </span></pre></body></html>
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/doc/symbols/src/minplayer_src_minplayer.players.youtube.js.html b/public/admin/js/osmplayer/doc/symbols/src/minplayer_src_minplayer.players.youtube.js.html
new file mode 100644
index 0000000000000000000000000000000000000000..f262a9d40270dfa25d9386bdd0e9d111f2b825c3
--- /dev/null
+++ b/public/admin/js/osmplayer/doc/symbols/src/minplayer_src_minplayer.players.youtube.js.html
@@ -0,0 +1,384 @@
+<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
+	.KEYW {color: #933;}
+	.COMM {color: #bbb; font-style: italic;}
+	.NUMB {color: #393;}
+	.STRN {color: #393;}
+	.REGX {color: #339;}
+	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
+	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/** The minplayer namespace. */</span><span class="WHIT">
+<span class='line'>  2</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">minplayer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">minplayer</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>  3</span> 
+<span class='line'>  4</span> </span><span class="COMM">/** All the media player implementations */</span><span class="WHIT">
+<span class='line'>  5</span> </span><span class="NAME">minplayer.players</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">minplayer.players</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>  6</span> 
+<span class='line'>  7</span> </span><span class="COMM">/**
+<span class='line'>  8</span>  * @constructor
+<span class='line'>  9</span>  * @extends minplayer.players.base
+<span class='line'> 10</span>  * @class The YouTube media player.
+<span class='line'> 11</span>  *
+<span class='line'> 12</span>  * @param {object} context The jQuery context.
+<span class='line'> 13</span>  * @param {object} options This components options.
+<span class='line'> 14</span>  * @param {object} queue The event queue to pass events around.
+<span class='line'> 15</span>  */</span><span class="WHIT">
+<span class='line'> 16</span> </span><span class="NAME">minplayer.players.youtube</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">context</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">queue</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 17</span> 
+<span class='line'> 18</span> </span><span class="WHIT">  </span><span class="COMM">/** The quality of the YouTube stream. */</span><span class="WHIT">
+<span class='line'> 19</span> </span><span class="WHIT">  </span><span class="NAME">this.quality</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'default'</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 20</span> 
+<span class='line'> 21</span> </span><span class="WHIT">  </span><span class="COMM">// Derive from players base.</span><span class="WHIT">
+<span class='line'> 22</span> </span><span class="WHIT">  </span><span class="NAME">minplayer.players.base.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">context</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">queue</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 23</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 24</span> 
+<span class='line'> 25</span> </span><span class="COMM">/** Derive from minplayer.players.base. */</span><span class="WHIT">
+<span class='line'> 26</span> </span><span class="NAME">minplayer.players.youtube.prototype</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">minplayer.players.base</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 27</span> 
+<span class='line'> 28</span> </span><span class="COMM">/** Reset the constructor. */</span><span class="WHIT">
+<span class='line'> 29</span> </span><span class="NAME">minplayer.players.youtube.prototype.constructor</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">minplayer.players.youtube</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 30</span> 
+<span class='line'> 31</span> </span><span class="COMM">/**
+<span class='line'> 32</span>  * @see minplayer.plugin.construct
+<span class='line'> 33</span>  * @this minplayer.players.youtube
+<span class='line'> 34</span>  */</span><span class="WHIT">
+<span class='line'> 35</span> </span><span class="NAME">minplayer.players.youtube.prototype.construct</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 36</span> 
+<span class='line'> 37</span> </span><span class="WHIT">  </span><span class="COMM">// Call the players.flash constructor.</span><span class="WHIT">
+<span class='line'> 38</span> </span><span class="WHIT">  </span><span class="NAME">minplayer.players.base.prototype.construct.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 39</span> 
+<span class='line'> 40</span> </span><span class="WHIT">  </span><span class="COMM">// Set the plugin name within the options.</span><span class="WHIT">
+<span class='line'> 41</span> </span><span class="WHIT">  </span><span class="NAME">this.options.pluginName</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'youtube'</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 42</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 43</span> 
+<span class='line'> 44</span> </span><span class="COMM">/**
+<span class='line'> 45</span>  * @see minplayer.players.base#getPriority
+<span class='line'> 46</span>  * @return {number} The priority of this media player.
+<span class='line'> 47</span>  */</span><span class="WHIT">
+<span class='line'> 48</span> </span><span class="NAME">minplayer.players.youtube.getPriority</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 49</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NUMB">10</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 50</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 51</span> 
+<span class='line'> 52</span> </span><span class="COMM">/**
+<span class='line'> 53</span>  * @see minplayer.players.base#canPlay
+<span class='line'> 54</span>  * @return {boolean} If this player can play this media type.
+<span class='line'> 55</span>  */</span><span class="WHIT">
+<span class='line'> 56</span> </span><span class="NAME">minplayer.players.youtube.canPlay</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">file</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 57</span> 
+<span class='line'> 58</span> </span><span class="WHIT">  </span><span class="COMM">// Check for the mimetype for youtube.</span><span class="WHIT">
+<span class='line'> 59</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">file.mimetype</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'video/youtube'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 60</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 61</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 62</span> 
+<span class='line'> 63</span> </span><span class="WHIT">  </span><span class="COMM">// If the path is a YouTube path, then return true.</span><span class="WHIT">
+<span class='line'> 64</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">file.path.search</span><span class="PUNC">(</span><span class="REGX">/^http(s)?\:\/\/(www\.)?youtube\.com/i</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 65</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 66</span> 
+<span class='line'> 67</span> </span><span class="COMM">/**
+<span class='line'> 68</span>  * Return the ID for a provided media file.
+<span class='line'> 69</span>  *
+<span class='line'> 70</span>  * @param {object} file A {@link minplayer.file} object.
+<span class='line'> 71</span>  * @return {string} The ID for the provided media.
+<span class='line'> 72</span>  */</span><span class="WHIT">
+<span class='line'> 73</span> </span><span class="NAME">minplayer.players.youtube.getMediaId</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">file</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 74</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">reg</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="REGX">/^http[s]?\:\/\/(www\.)?youtube\.com\/watch\?v=([a-zA-Z0-9_\-]+)/i</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 75</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">file.path.search</span><span class="PUNC">(</span><span class="NAME">reg</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 76</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">file.path.match</span><span class="PUNC">(</span><span class="NAME">reg</span><span class="PUNC">)</span><span class="PUNC">[</span><span class="NUMB">2</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 77</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 78</span> </span><span class="WHIT">  </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 79</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">file.path</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 80</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 81</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 82</span> 
+<span class='line'> 83</span> </span><span class="COMM">/**
+<span class='line'> 84</span>  * Returns a preview image for this media player.
+<span class='line'> 85</span>  *
+<span class='line'> 86</span>  * @param {object} file A {@link minplayer.file} object.
+<span class='line'> 87</span>  * @param {string} type The type of image.
+<span class='line'> 88</span>  * @param {function} callback Called when the image is retrieved.
+<span class='line'> 89</span>  */</span><span class="WHIT">
+<span class='line'> 90</span> </span><span class="NAME">minplayer.players.youtube.getImage</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">file</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">type</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">callback</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 91</span> </span><span class="WHIT">  </span><span class="NAME">type</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">type</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">'thumbnail'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="STRN">'1'</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'0'</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 92</span> </span><span class="WHIT">  </span><span class="NAME">callback</span><span class="PUNC">(</span><span class="STRN">'http://img.youtube.com/vi/'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">file.id</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'/'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">type</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'.jpg'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 93</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 94</span> 
+<span class='line'> 95</span> </span><span class="COMM">/**
+<span class='line'> 96</span>  * Translates the player state for the YouTube API player.
+<span class='line'> 97</span>  *
+<span class='line'> 98</span>  * @param {number} playerState The YouTube player state.
+<span class='line'> 99</span>  */</span><span class="WHIT">
+<span class='line'>100</span> </span><span class="NAME">minplayer.players.youtube.prototype.setPlayerState</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">playerState</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>101</span> </span><span class="WHIT">  </span><span class="KEYW">switch</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">playerState</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>102</span> </span><span class="WHIT">    </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">YT.PlayerState.CUED</span><span class="PUNC">:</span><span class="WHIT">
+<span class='line'>103</span> </span><span class="WHIT">      </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>104</span> </span><span class="WHIT">    </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">YT.PlayerState.BUFFERING</span><span class="PUNC">:</span><span class="WHIT">
+<span class='line'>105</span> </span><span class="WHIT">      </span><span class="NAME">this.onWaiting</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>106</span> </span><span class="WHIT">      </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>107</span> </span><span class="WHIT">    </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">YT.PlayerState.PAUSED</span><span class="PUNC">:</span><span class="WHIT">
+<span class='line'>108</span> </span><span class="WHIT">      </span><span class="NAME">this.onPaused</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>109</span> </span><span class="WHIT">      </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>110</span> </span><span class="WHIT">    </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">YT.PlayerState.PLAYING</span><span class="PUNC">:</span><span class="WHIT">
+<span class='line'>111</span> </span><span class="WHIT">      </span><span class="NAME">this.onPlaying</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>112</span> </span><span class="WHIT">      </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>113</span> </span><span class="WHIT">    </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">YT.PlayerState.ENDED</span><span class="PUNC">:</span><span class="WHIT">
+<span class='line'>114</span> </span><span class="WHIT">      </span><span class="NAME">this.onComplete</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>115</span> </span><span class="WHIT">      </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>116</span> </span><span class="WHIT">    </span><span class="KEYW">default</span><span class="PUNC">:</span><span class="WHIT">
+<span class='line'>117</span> </span><span class="WHIT">      </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>118</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>119</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>120</span> 
+<span class='line'>121</span> </span><span class="COMM">/**
+<span class='line'>122</span>  * Called when an error occurs.
+<span class='line'>123</span>  *
+<span class='line'>124</span>  * @param {string} event The onReady event that was triggered.
+<span class='line'>125</span>  */</span><span class="WHIT">
+<span class='line'>126</span> </span><span class="NAME">minplayer.players.youtube.prototype.onReady</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">event</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>127</span> </span><span class="WHIT">  </span><span class="NAME">minplayer.players.base.prototype.onReady.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>128</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.options.autoplay</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>129</span> </span><span class="WHIT">    </span><span class="NAME">this.pause</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>130</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>131</span> </span><span class="WHIT">  </span><span class="NAME">this.onLoaded</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>132</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>133</span> 
+<span class='line'>134</span> </span><span class="COMM">/**
+<span class='line'>135</span>  * Checks to see if this player can be found.
+<span class='line'>136</span>  * @return {bool} TRUE - Player is found, FALSE - otherwise.
+<span class='line'>137</span>  */</span><span class="WHIT">
+<span class='line'>138</span> </span><span class="NAME">minplayer.players.youtube.prototype.playerFound</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>139</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'iframe#'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.options.id</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'-player.youtube-player'</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>140</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">iframe</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.display.find</span><span class="PUNC">(</span><span class="NAME">id</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>141</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">iframe.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>142</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>143</span> 
+<span class='line'>144</span> </span><span class="COMM">/**
+<span class='line'>145</span>  * Called when the player state changes.
+<span class='line'>146</span>  *
+<span class='line'>147</span>  * @param {object} event A JavaScript Event.
+<span class='line'>148</span>  */</span><span class="WHIT">
+<span class='line'>149</span> </span><span class="NAME">minplayer.players.youtube.prototype.onPlayerStateChange</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">event</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>150</span> </span><span class="WHIT">  </span><span class="NAME">this.setPlayerState</span><span class="PUNC">(</span><span class="NAME">event.data</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>151</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>152</span> 
+<span class='line'>153</span> </span><span class="COMM">/**
+<span class='line'>154</span>  * Called when the player quality changes.
+<span class='line'>155</span>  *
+<span class='line'>156</span>  * @param {string} newQuality The new quality for the change.
+<span class='line'>157</span>  */</span><span class="WHIT">
+<span class='line'>158</span> </span><span class="NAME">minplayer.players.youtube.prototype.onQualityChange</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">newQuality</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>159</span> </span><span class="WHIT">  </span><span class="NAME">this.quality</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">newQuality.data</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>160</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>161</span> 
+<span class='line'>162</span> </span><span class="COMM">/**
+<span class='line'>163</span>  * Determines if the player should show the playloader.
+<span class='line'>164</span>  *
+<span class='line'>165</span>  * @param {string} preview The preview image.
+<span class='line'>166</span>  * @return {bool} If this player implements its own playLoader.
+<span class='line'>167</span>  */</span><span class="WHIT">
+<span class='line'>168</span> </span><span class="NAME">minplayer.players.youtube.prototype.hasPlayLoader</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">preview</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>169</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">minplayer.hasTouch</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">preview</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>170</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>171</span> 
+<span class='line'>172</span> </span><span class="COMM">/**
+<span class='line'>173</span>  * Determines if the player should show the controller.
+<span class='line'>174</span>  *
+<span class='line'>175</span>  * @return {bool} If this player implements its own playLoader.
+<span class='line'>176</span>  */</span><span class="WHIT">
+<span class='line'>177</span> </span><span class="NAME">minplayer.players.youtube.prototype.hasController</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>178</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">minplayer.isIDevice</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>179</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>180</span> 
+<span class='line'>181</span> </span><span class="COMM">/**
+<span class='line'>182</span>  * @see minplayer.players.base#create
+<span class='line'>183</span>  * @return {object} The media player entity.
+<span class='line'>184</span>  */</span><span class="WHIT">
+<span class='line'>185</span> </span><span class="NAME">minplayer.players.youtube.prototype.create</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>186</span> </span><span class="WHIT">  </span><span class="NAME">minplayer.players.base.prototype.create.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>187</span> 
+<span class='line'>188</span> </span><span class="WHIT">  </span><span class="COMM">// Insert the YouTube iframe API player.</span><span class="WHIT">
+<span class='line'>189</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">tag</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">document.createElement</span><span class="PUNC">(</span><span class="STRN">'script'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>190</span> </span><span class="WHIT">  </span><span class="NAME">tag.src</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'https://www.youtube.com/player_api'</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>191</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">firstScriptTag</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">document.getElementsByTagName</span><span class="PUNC">(</span><span class="STRN">'script'</span><span class="PUNC">)</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>192</span> </span><span class="WHIT">  </span><span class="NAME">firstScriptTag.parentNode.insertBefore</span><span class="PUNC">(</span><span class="NAME">tag</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">firstScriptTag</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>193</span> 
+<span class='line'>194</span> </span><span class="WHIT">  </span><span class="COMM">// Get the player ID.</span><span class="WHIT">
+<span class='line'>195</span> </span><span class="WHIT">  </span><span class="NAME">this.playerId</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.options.id</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'-player'</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>196</span> 
+<span class='line'>197</span> </span><span class="WHIT">  </span><span class="COMM">// Poll until the YouTube API is ready.</span><span class="WHIT">
+<span class='line'>198</span> </span><span class="WHIT">  </span><span class="NAME">this.poll</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">player</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>199</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>200</span> </span><span class="WHIT">      </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ready</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">jQuery</span><span class="PUNC">(</span><span class="STRN">'#'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">player.playerId</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>201</span> </span><span class="WHIT">      </span><span class="NAME">ready</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ready</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="STRN">'YT'</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">window</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>202</span> </span><span class="WHIT">      </span><span class="NAME">ready</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ready</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">YT.Player</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">'function'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>203</span> </span><span class="WHIT">      </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ready</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>204</span> </span><span class="WHIT">        </span><span class="COMM">// Determine the origin of this script.</span><span class="WHIT">
+<span class='line'>205</span> </span><span class="WHIT">        </span><span class="NAME">jQuery</span><span class="PUNC">(</span><span class="STRN">'#'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">player.playerId</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">addClass</span><span class="PUNC">(</span><span class="STRN">'youtube-player'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>206</span> </span><span class="WHIT">        </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">origin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">location.protocol</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>207</span> </span><span class="WHIT">        </span><span class="NAME">origin</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'//'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">location.hostname</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>208</span> </span><span class="WHIT">        </span><span class="NAME">origin</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">location.port</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="STRN">':'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">location.port</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>209</span> 
+<span class='line'>210</span> </span><span class="WHIT">        </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">playerVars</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>211</span> </span><span class="WHIT">        </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">minplayer.isIDevice</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>212</span> </span><span class="WHIT">          </span><span class="NAME">playerVars.origin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">origin</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>213</span> </span><span class="WHIT">        </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>214</span> </span><span class="WHIT">        </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>215</span> </span><span class="WHIT">          </span><span class="NAME">playerVars</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>216</span> </span><span class="WHIT">            </span><span class="NAME">enablejsapi</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">minplayer.isIDevice</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>217</span> </span><span class="WHIT">            </span><span class="NAME">origin</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">origin</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>218</span> </span><span class="WHIT">            </span><span class="NAME">wmode</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'opaque'</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>219</span> </span><span class="WHIT">            </span><span class="NAME">controls</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">minplayer.isAndroid</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="WHIT">
+<span class='line'>220</span> </span><span class="WHIT">          </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>221</span> </span><span class="WHIT">        </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>222</span> 
+<span class='line'>223</span> </span><span class="WHIT">        </span><span class="COMM">// Create the player.</span><span class="WHIT">
+<span class='line'>224</span> </span><span class="WHIT">        </span><span class="NAME">player.player</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">YT.Player</span><span class="PUNC">(</span><span class="NAME">player.playerId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>225</span> </span><span class="WHIT">          </span><span class="NAME">height</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'100%'</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>226</span> </span><span class="WHIT">          </span><span class="NAME">width</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'100%'</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>227</span> </span><span class="WHIT">          </span><span class="NAME">frameborder</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>228</span> </span><span class="WHIT">          </span><span class="NAME">videoId</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">player.mediaFile.id</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>229</span> </span><span class="WHIT">          </span><span class="NAME">playerVars</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">playerVars</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>230</span> </span><span class="WHIT">          </span><span class="NAME">events</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>231</span> </span><span class="WHIT">            </span><span class="STRN">'onReady'</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">event</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>232</span> </span><span class="WHIT">              </span><span class="NAME">player.onReady</span><span class="PUNC">(</span><span class="NAME">event</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>233</span> </span><span class="WHIT">            </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>234</span> </span><span class="WHIT">            </span><span class="STRN">'onStateChange'</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">event</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>235</span> </span><span class="WHIT">              </span><span class="NAME">player.onPlayerStateChange</span><span class="PUNC">(</span><span class="NAME">event</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>236</span> </span><span class="WHIT">            </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>237</span> </span><span class="WHIT">            </span><span class="STRN">'onPlaybackQualityChange'</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">newQuality</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>238</span> </span><span class="WHIT">              </span><span class="NAME">player.onQualityChange</span><span class="PUNC">(</span><span class="NAME">newQuality</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>239</span> </span><span class="WHIT">            </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>240</span> </span><span class="WHIT">            </span><span class="STRN">'onError'</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">errorCode</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>241</span> </span><span class="WHIT">              </span><span class="NAME">player.onError</span><span class="PUNC">(</span><span class="NAME">errorCode</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>242</span> </span><span class="WHIT">            </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>243</span> </span><span class="WHIT">          </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>244</span> </span><span class="WHIT">        </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>245</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>246</span> </span><span class="WHIT">      </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">ready</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>247</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>248</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">200</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>249</span> 
+<span class='line'>250</span> </span><span class="WHIT">  </span><span class="COMM">// Return the player.</span><span class="WHIT">
+<span class='line'>251</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">jQuery</span><span class="PUNC">(</span><span class="NAME">document.createElement</span><span class="PUNC">(</span><span class="STRN">'div'</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>252</span> </span><span class="WHIT">    </span><span class="NAME">id</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">this.playerId</span><span class="WHIT">
+<span class='line'>253</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>254</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>255</span> 
+<span class='line'>256</span> </span><span class="COMM">/**
+<span class='line'>257</span>  * @see minplayer.players.base#load
+<span class='line'>258</span>  * @return {boolean} If this action was performed.
+<span class='line'>259</span>  */</span><span class="WHIT">
+<span class='line'>260</span> </span><span class="NAME">minplayer.players.youtube.prototype.load</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">file</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>261</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">minplayer.players.base.prototype.load.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">file</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>262</span> </span><span class="WHIT">    </span><span class="NAME">this.player.loadVideoById</span><span class="PUNC">(</span><span class="NAME">file.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.quality</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>263</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>264</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>265</span> 
+<span class='line'>266</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>267</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>268</span> 
+<span class='line'>269</span> </span><span class="COMM">/**
+<span class='line'>270</span>  * @see minplayer.players.base#play
+<span class='line'>271</span>  * @return {boolean} If this action was performed.
+<span class='line'>272</span>  */</span><span class="WHIT">
+<span class='line'>273</span> </span><span class="NAME">minplayer.players.youtube.prototype.play</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>274</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">minplayer.players.base.prototype.play.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>275</span> </span><span class="WHIT">    </span><span class="NAME">this.onWaiting</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>276</span> </span><span class="WHIT">    </span><span class="NAME">this.player.playVideo</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>277</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>278</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>279</span> 
+<span class='line'>280</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>281</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>282</span> 
+<span class='line'>283</span> </span><span class="COMM">/**
+<span class='line'>284</span>  * @see minplayer.players.base#pause
+<span class='line'>285</span>  * @return {boolean} If this action was performed.
+<span class='line'>286</span>  */</span><span class="WHIT">
+<span class='line'>287</span> </span><span class="NAME">minplayer.players.youtube.prototype.pause</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>288</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">minplayer.players.base.prototype.pause.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>289</span> </span><span class="WHIT">    </span><span class="NAME">this.player.pauseVideo</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>290</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>291</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>292</span> 
+<span class='line'>293</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>294</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>295</span> 
+<span class='line'>296</span> </span><span class="COMM">/**
+<span class='line'>297</span>  * @see minplayer.players.base#stop
+<span class='line'>298</span>  * @return {boolean} If this action was performed.
+<span class='line'>299</span>  */</span><span class="WHIT">
+<span class='line'>300</span> </span><span class="NAME">minplayer.players.youtube.prototype.stop</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>301</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">minplayer.players.base.prototype.stop.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>302</span> </span><span class="WHIT">    </span><span class="NAME">this.player.stopVideo</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>303</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>304</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>305</span> 
+<span class='line'>306</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>307</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>308</span> 
+<span class='line'>309</span> </span><span class="COMM">/**
+<span class='line'>310</span>  * @see minplayer.players.base#seek
+<span class='line'>311</span>  * @return {boolean} If this action was performed.
+<span class='line'>312</span>  */</span><span class="WHIT">
+<span class='line'>313</span> </span><span class="NAME">minplayer.players.youtube.prototype.seek</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">pos</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>314</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">minplayer.players.base.prototype.seek.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pos</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>315</span> </span><span class="WHIT">    </span><span class="NAME">this.onWaiting</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>316</span> </span><span class="WHIT">    </span><span class="NAME">this.player.seekTo</span><span class="PUNC">(</span><span class="NAME">pos</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>317</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>318</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>319</span> 
+<span class='line'>320</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>321</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>322</span> 
+<span class='line'>323</span> </span><span class="COMM">/**
+<span class='line'>324</span>  * @see minplayer.players.base#setVolume
+<span class='line'>325</span>  * @return {boolean} If this action was performed.
+<span class='line'>326</span>  */</span><span class="WHIT">
+<span class='line'>327</span> </span><span class="NAME">minplayer.players.youtube.prototype.setVolume</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">vol</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>328</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">minplayer.players.base.prototype.setVolume.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">vol</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>329</span> </span><span class="WHIT">    </span><span class="NAME">this.player.setVolume</span><span class="PUNC">(</span><span class="NAME">vol</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NUMB">100</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>330</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>331</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>332</span> 
+<span class='line'>333</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>334</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>335</span> 
+<span class='line'>336</span> </span><span class="COMM">/**
+<span class='line'>337</span>  * @see minplayer.players.base#getVolume
+<span class='line'>338</span>  */</span><span class="WHIT">
+<span class='line'>339</span> </span><span class="NAME">minplayer.players.youtube.prototype.getVolume</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">callback</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>340</span> </span><span class="WHIT">  </span><span class="NAME">this.getValue</span><span class="PUNC">(</span><span class="STRN">'getVolume'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">callback</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>341</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>342</span> 
+<span class='line'>343</span> </span><span class="COMM">/**
+<span class='line'>344</span>  * @see minplayer.players.base#getDuration.
+<span class='line'>345</span>  */</span><span class="WHIT">
+<span class='line'>346</span> </span><span class="NAME">minplayer.players.youtube.prototype.getDuration</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">callback</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>347</span> </span><span class="WHIT">  </span><span class="NAME">this.getValue</span><span class="PUNC">(</span><span class="STRN">'getDuration'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">callback</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>348</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>349</span> 
+<span class='line'>350</span> </span><span class="COMM">/**
+<span class='line'>351</span>  * @see minplayer.players.base#getCurrentTime
+<span class='line'>352</span>  */</span><span class="WHIT">
+<span class='line'>353</span> </span><span class="NAME">minplayer.players.youtube.prototype.getCurrentTime</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">callback</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>354</span> </span><span class="WHIT">  </span><span class="NAME">this.getValue</span><span class="PUNC">(</span><span class="STRN">'getCurrentTime'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">callback</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>355</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>356</span> 
+<span class='line'>357</span> </span><span class="COMM">/**
+<span class='line'>358</span>  * @see minplayer.players.base#getBytesStart.
+<span class='line'>359</span>  */</span><span class="WHIT">
+<span class='line'>360</span> </span><span class="NAME">minplayer.players.youtube.prototype.getBytesStart</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">callback</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>361</span> </span><span class="WHIT">  </span><span class="NAME">this.getValue</span><span class="PUNC">(</span><span class="STRN">'getVideoStartBytes'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">callback</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>362</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>363</span> 
+<span class='line'>364</span> </span><span class="COMM">/**
+<span class='line'>365</span>  * @see minplayer.players.base#getBytesLoaded.
+<span class='line'>366</span>  */</span><span class="WHIT">
+<span class='line'>367</span> </span><span class="NAME">minplayer.players.youtube.prototype.getBytesLoaded</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">callback</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>368</span> </span><span class="WHIT">  </span><span class="NAME">this.getValue</span><span class="PUNC">(</span><span class="STRN">'getVideoBytesLoaded'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">callback</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>369</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>370</span> 
+<span class='line'>371</span> </span><span class="COMM">/**
+<span class='line'>372</span>  * @see minplayer.players.base#getBytesTotal.
+<span class='line'>373</span>  */</span><span class="WHIT">
+<span class='line'>374</span> </span><span class="NAME">minplayer.players.youtube.prototype.getBytesTotal</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">callback</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>375</span> </span><span class="WHIT">  </span><span class="NAME">this.getValue</span><span class="PUNC">(</span><span class="STRN">'getVideoBytesTotal'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">callback</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>376</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>377</span> </span></pre></body></html>
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/doc/symbols/src/minplayer_src_minplayer.plugin.js.html b/public/admin/js/osmplayer/doc/symbols/src/minplayer_src_minplayer.plugin.js.html
new file mode 100644
index 0000000000000000000000000000000000000000..0201da4e6290fa8185ad02e8ab5977e3c173f38b
--- /dev/null
+++ b/public/admin/js/osmplayer/doc/symbols/src/minplayer_src_minplayer.plugin.js.html
@@ -0,0 +1,639 @@
+<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
+	.KEYW {color: #933;}
+	.COMM {color: #bbb; font-style: italic;}
+	.NUMB {color: #393;}
+	.STRN {color: #393;}
+	.REGX {color: #339;}
+	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
+	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/** The minplayer namespace. */</span><span class="WHIT">
+<span class='line'>  2</span> </span><span class="NAME">minplayer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">minplayer</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>  3</span> 
+<span class='line'>  4</span> </span><span class="COMM">/** Static array to keep track of all plugins. */</span><span class="WHIT">
+<span class='line'>  5</span> </span><span class="NAME">minplayer.plugins</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">minplayer.plugins</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>  6</span> 
+<span class='line'>  7</span> </span><span class="COMM">/** Static array to keep track of queues. */</span><span class="WHIT">
+<span class='line'>  8</span> </span><span class="NAME">minplayer.queue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">minplayer.queue</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>  9</span> 
+<span class='line'> 10</span> </span><span class="COMM">/** Mutex lock to keep multiple triggers from occuring. */</span><span class="WHIT">
+<span class='line'> 11</span> </span><span class="NAME">minplayer.lock</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 12</span> 
+<span class='line'> 13</span> </span><span class="COMM">/**
+<span class='line'> 14</span>  * @constructor
+<span class='line'> 15</span>  * @class The base class for all plugins.
+<span class='line'> 16</span>  *
+<span class='line'> 17</span>  * @param {string} name The name of this plugin.
+<span class='line'> 18</span>  * @param {object} context The jQuery context.
+<span class='line'> 19</span>  * @param {object} options This components options.
+<span class='line'> 20</span>  * @param {object} queue The event queue to pass events around.
+<span class='line'> 21</span>  */</span><span class="WHIT">
+<span class='line'> 22</span> </span><span class="NAME">minplayer.plugin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">name</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">context</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">queue</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 23</span> 
+<span class='line'> 24</span> </span><span class="WHIT">  </span><span class="COMM">/** The name of this plugin. */</span><span class="WHIT">
+<span class='line'> 25</span> </span><span class="WHIT">  </span><span class="NAME">this.name</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">name</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 26</span> 
+<span class='line'> 27</span> </span><span class="WHIT">  </span><span class="COMM">/** The ready flag. */</span><span class="WHIT">
+<span class='line'> 28</span> </span><span class="WHIT">  </span><span class="NAME">this.pluginReady</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 29</span> 
+<span class='line'> 30</span> </span><span class="WHIT">  </span><span class="COMM">/** The options for this plugin. */</span><span class="WHIT">
+<span class='line'> 31</span> </span><span class="WHIT">  </span><span class="NAME">this.options</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 32</span> 
+<span class='line'> 33</span> </span><span class="WHIT">  </span><span class="COMM">/** The event queue. */</span><span class="WHIT">
+<span class='line'> 34</span> </span><span class="WHIT">  </span><span class="NAME">this.queue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">queue</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 35</span> 
+<span class='line'> 36</span> </span><span class="WHIT">  </span><span class="COMM">/** Keep track of already triggered events. */</span><span class="WHIT">
+<span class='line'> 37</span> </span><span class="WHIT">  </span><span class="NAME">this.triggered</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 38</span> 
+<span class='line'> 39</span> </span><span class="WHIT">  </span><span class="COMM">/** Create a queue lock. */</span><span class="WHIT">
+<span class='line'> 40</span> </span><span class="WHIT">  </span><span class="NAME">this.lock</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 41</span> 
+<span class='line'> 42</span> </span><span class="WHIT">  </span><span class="COMM">// Only call the constructor if we have a context.</span><span class="WHIT">
+<span class='line'> 43</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">context</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 44</span> 
+<span class='line'> 45</span> </span><span class="WHIT">    </span><span class="COMM">/** Say that we are active. */</span><span class="WHIT">
+<span class='line'> 46</span> </span><span class="WHIT">    </span><span class="NAME">this.active</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 47</span> 
+<span class='line'> 48</span> </span><span class="WHIT">    </span><span class="COMM">/** Keep track of the context. */</span><span class="WHIT">
+<span class='line'> 49</span> </span><span class="WHIT">    </span><span class="NAME">this.context</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">jQuery</span><span class="PUNC">(</span><span class="NAME">context</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 50</span> 
+<span class='line'> 51</span> </span><span class="WHIT">    </span><span class="COMM">// Construct this plugin.</span><span class="WHIT">
+<span class='line'> 52</span> </span><span class="WHIT">    </span><span class="NAME">this.construct</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 53</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 54</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 55</span> 
+<span class='line'> 56</span> </span><span class="COMM">/**
+<span class='line'> 57</span>  * The constructor which is called once the context is set.
+<span class='line'> 58</span>  * Any class deriving from the plugin class should place all context
+<span class='line'> 59</span>  * dependant functionality within this function instead of the standard
+<span class='line'> 60</span>  * constructor function since it is called on object derivation as well
+<span class='line'> 61</span>  * as object creation.
+<span class='line'> 62</span>  */</span><span class="WHIT">
+<span class='line'> 63</span> </span><span class="NAME">minplayer.plugin.prototype.construct</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 64</span> 
+<span class='line'> 65</span> </span><span class="WHIT">  </span><span class="COMM">// Adds this as a plugin.</span><span class="WHIT">
+<span class='line'> 66</span> </span><span class="WHIT">  </span><span class="NAME">this.addPlugin</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 67</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 68</span> 
+<span class='line'> 69</span> </span><span class="COMM">/**
+<span class='line'> 70</span>  * Destructor.
+<span class='line'> 71</span>  */</span><span class="WHIT">
+<span class='line'> 72</span> </span><span class="NAME">minplayer.plugin.prototype.destroy</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 73</span> 
+<span class='line'> 74</span> </span><span class="WHIT">  </span><span class="COMM">// Unbind all events.</span><span class="WHIT">
+<span class='line'> 75</span> </span><span class="WHIT">  </span><span class="NAME">this.active</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 76</span> </span><span class="WHIT">  </span><span class="NAME">this.unbind</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 77</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 78</span> 
+<span class='line'> 79</span> </span><span class="COMM">/**
+<span class='line'> 80</span>  * Creates a new plugin within this context.
+<span class='line'> 81</span>  *
+<span class='line'> 82</span>  * @param {string} name The name of the plugin you wish to create.
+<span class='line'> 83</span>  * @param {object} base The base object for this plugin.
+<span class='line'> 84</span>  * @param {object} context The context which you would like to create.
+<span class='line'> 85</span>  * @return {object} The new plugin object.
+<span class='line'> 86</span>  */</span><span class="WHIT">
+<span class='line'> 87</span> </span><span class="NAME">minplayer.plugin.prototype.create</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">name</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">base</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">context</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 88</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">plugin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 89</span> 
+<span class='line'> 90</span> </span><span class="WHIT">  </span><span class="COMM">// Make sure we have a base object.</span><span class="WHIT">
+<span class='line'> 91</span> </span><span class="WHIT">  </span><span class="NAME">base</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">base</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="STRN">'minplayer'</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 92</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">window</span><span class="PUNC">[</span><span class="NAME">base</span><span class="PUNC">]</span><span class="PUNC">[</span><span class="NAME">name</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 93</span> </span><span class="WHIT">    </span><span class="NAME">base</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'minplayer'</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 94</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 95</span> 
+<span class='line'> 96</span> </span><span class="WHIT">  </span><span class="COMM">// Make sure there is a context.</span><span class="WHIT">
+<span class='line'> 97</span> </span><span class="WHIT">  </span><span class="NAME">context</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">context</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">this.display</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 98</span> 
+<span class='line'> 99</span> </span><span class="WHIT">  </span><span class="COMM">// See if this plugin exists within this object.</span><span class="WHIT">
+<span class='line'>100</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">window</span><span class="PUNC">[</span><span class="NAME">base</span><span class="PUNC">]</span><span class="PUNC">[</span><span class="NAME">name</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>101</span> 
+<span class='line'>102</span> </span><span class="WHIT">    </span><span class="COMM">// Set the plugin.</span><span class="WHIT">
+<span class='line'>103</span> </span><span class="WHIT">    </span><span class="NAME">plugin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">window</span><span class="PUNC">[</span><span class="NAME">base</span><span class="PUNC">]</span><span class="PUNC">[</span><span class="NAME">name</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>104</span> 
+<span class='line'>105</span> </span><span class="WHIT">    </span><span class="COMM">// See if a template version of the plugin exists.</span><span class="WHIT">
+<span class='line'>106</span> </span><span class="WHIT">    </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">plugin</span><span class="PUNC">[</span><span class="NAME">this.options.template</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>107</span> 
+<span class='line'>108</span> </span><span class="WHIT">      </span><span class="NAME">plugin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">plugin</span><span class="PUNC">[</span><span class="NAME">this.options.template</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>109</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>110</span> 
+<span class='line'>111</span> </span><span class="WHIT">    </span><span class="COMM">// Make sure the plugin is a function.</span><span class="WHIT">
+<span class='line'>112</span> </span><span class="WHIT">    </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">plugin</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="STRN">'function'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>113</span> </span><span class="WHIT">      </span><span class="NAME">plugin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">window</span><span class="PUNC">[</span><span class="STRN">'minplayer'</span><span class="PUNC">]</span><span class="PUNC">[</span><span class="NAME">name</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>114</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>115</span> 
+<span class='line'>116</span> </span><span class="WHIT">    </span><span class="COMM">// Make sure it is a function.</span><span class="WHIT">
+<span class='line'>117</span> </span><span class="WHIT">    </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">plugin</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'function'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>118</span> </span><span class="WHIT">      </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">plugin</span><span class="PUNC">(</span><span class="NAME">context</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.options</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>119</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>120</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>121</span> 
+<span class='line'>122</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>123</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>124</span> 
+<span class='line'>125</span> </span><span class="COMM">/**
+<span class='line'>126</span>  * Plugins should call this method when they are ready.
+<span class='line'>127</span>  */</span><span class="WHIT">
+<span class='line'>128</span> </span><span class="NAME">minplayer.plugin.prototype.ready</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>129</span> 
+<span class='line'>130</span> </span><span class="WHIT">  </span><span class="COMM">// Keep this plugin from triggering multiple ready events.</span><span class="WHIT">
+<span class='line'>131</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.pluginReady</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>132</span> 
+<span class='line'>133</span> </span><span class="WHIT">    </span><span class="COMM">// Set the ready flag.</span><span class="WHIT">
+<span class='line'>134</span> </span><span class="WHIT">    </span><span class="NAME">this.pluginReady</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>135</span> 
+<span class='line'>136</span> </span><span class="WHIT">    </span><span class="COMM">// Now trigger that I am ready.</span><span class="WHIT">
+<span class='line'>137</span> </span><span class="WHIT">    </span><span class="NAME">this.trigger</span><span class="PUNC">(</span><span class="STRN">'ready'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>138</span> 
+<span class='line'>139</span> </span><span class="WHIT">    </span><span class="COMM">// Check the queue.</span><span class="WHIT">
+<span class='line'>140</span> </span><span class="WHIT">    </span><span class="NAME">this.checkQueue</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>141</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>142</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>143</span> 
+<span class='line'>144</span> </span><span class="COMM">/**
+<span class='line'>145</span>  * Returns if this component is valid.
+<span class='line'>146</span>  *
+<span class='line'>147</span>  * @return {boolean} TRUE if the plugin display is valid.
+<span class='line'>148</span>  */</span><span class="WHIT">
+<span class='line'>149</span> </span><span class="NAME">minplayer.plugin.prototype.isValid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>150</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="PUNC">!</span><span class="NAME">this.options.id</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">this.active</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>151</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>152</span> 
+<span class='line'>153</span> </span><span class="COMM">/**
+<span class='line'>154</span>  * Adds a new plugin to this player.
+<span class='line'>155</span>  *
+<span class='line'>156</span>  * @param {string} name The name of this plugin.
+<span class='line'>157</span>  * @param {object} plugin A new plugin object, derived from media.plugin.
+<span class='line'>158</span>  */</span><span class="WHIT">
+<span class='line'>159</span> </span><span class="NAME">minplayer.plugin.prototype.addPlugin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">name</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">plugin</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>160</span> </span><span class="WHIT">  </span><span class="NAME">name</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">name</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">this.name</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>161</span> </span><span class="WHIT">  </span><span class="NAME">plugin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">plugin</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>162</span> 
+<span class='line'>163</span> </span><span class="WHIT">  </span><span class="COMM">// Make sure the plugin is valid.</span><span class="WHIT">
+<span class='line'>164</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">plugin.isValid</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>165</span> 
+<span class='line'>166</span> </span><span class="WHIT">    </span><span class="COMM">// If the plugins for this instance do not exist.</span><span class="WHIT">
+<span class='line'>167</span> </span><span class="WHIT">    </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">minplayer.plugins</span><span class="PUNC">[</span><span class="NAME">this.options.id</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>168</span> 
+<span class='line'>169</span> </span><span class="WHIT">      </span><span class="COMM">// Initialize the plugins.</span><span class="WHIT">
+<span class='line'>170</span> </span><span class="WHIT">      </span><span class="NAME">minplayer.plugins</span><span class="PUNC">[</span><span class="NAME">this.options.id</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>171</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>172</span> 
+<span class='line'>173</span> </span><span class="WHIT">    </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">minplayer.plugins</span><span class="PUNC">[</span><span class="NAME">this.options.id</span><span class="PUNC">]</span><span class="PUNC">[</span><span class="NAME">name</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>174</span> 
+<span class='line'>175</span> </span><span class="WHIT">      </span><span class="COMM">// Add the plugins array.</span><span class="WHIT">
+<span class='line'>176</span> </span><span class="WHIT">      </span><span class="NAME">minplayer.plugins</span><span class="PUNC">[</span><span class="NAME">this.options.id</span><span class="PUNC">]</span><span class="PUNC">[</span><span class="NAME">name</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>177</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>178</span> 
+<span class='line'>179</span> </span><span class="WHIT">    </span><span class="COMM">// Add this plugin.</span><span class="WHIT">
+<span class='line'>180</span> </span><span class="WHIT">    </span><span class="NAME">minplayer.plugins</span><span class="PUNC">[</span><span class="NAME">this.options.id</span><span class="PUNC">]</span><span class="PUNC">[</span><span class="NAME">name</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">push</span><span class="PUNC">(</span><span class="NAME">plugin</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>181</span> 
+<span class='line'>182</span> </span><span class="WHIT">    </span><span class="COMM">// Now check the queue for this plugin.</span><span class="WHIT">
+<span class='line'>183</span> </span><span class="WHIT">    </span><span class="NAME">this.checkQueue</span><span class="PUNC">(</span><span class="NAME">plugin</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>184</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>185</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>186</span> 
+<span class='line'>187</span> </span><span class="COMM">/**
+<span class='line'>188</span>  * Create a polling timer.
+<span class='line'>189</span>  *
+<span class='line'>190</span>  * @param {function} callback The function to call when you poll.
+<span class='line'>191</span>  * @param {integer} interval The interval you would like to poll.
+<span class='line'>192</span>  */</span><span class="WHIT">
+<span class='line'>193</span> </span><span class="NAME">minplayer.plugin.prototype.poll</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">callback</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">interval</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>194</span> </span><span class="WHIT">  </span><span class="NAME">setTimeout</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">context</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>195</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">callLater</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>196</span> </span><span class="WHIT">      </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">callback.call</span><span class="PUNC">(</span><span class="NAME">context</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>197</span> </span><span class="WHIT">        </span><span class="NAME">setTimeout</span><span class="PUNC">(</span><span class="NAME">callLater</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">interval</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>198</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>199</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>200</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">interval</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>201</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>202</span> 
+<span class='line'>203</span> </span><span class="COMM">/**
+<span class='line'>204</span>  * Gets a plugin by name and calls callback when it is ready.
+<span class='line'>205</span>  *
+<span class='line'>206</span>  * @param {string} plugin The plugin of the plugin.
+<span class='line'>207</span>  * @param {function} callback Called when the plugin is ready.
+<span class='line'>208</span>  * @return {object} The plugin if no callback is provided.
+<span class='line'>209</span>  */</span><span class="WHIT">
+<span class='line'>210</span> </span><span class="NAME">minplayer.plugin.prototype.get</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">plugin</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">callback</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>211</span> 
+<span class='line'>212</span> </span><span class="WHIT">  </span><span class="COMM">// If they pass just a callback, then return all plugins when ready.</span><span class="WHIT">
+<span class='line'>213</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">plugin</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'function'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>214</span> </span><span class="WHIT">    </span><span class="NAME">callback</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">plugin</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>215</span> </span><span class="WHIT">    </span><span class="NAME">plugin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>216</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>217</span> 
+<span class='line'>218</span> </span><span class="WHIT">  </span><span class="COMM">// Return the minplayer.get equivalent.</span><span class="WHIT">
+<span class='line'>219</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">minplayer.get.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.options.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">plugin</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">callback</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>220</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>221</span> 
+<span class='line'>222</span> </span><span class="COMM">/**
+<span class='line'>223</span>  * Check the queue and execute it.
+<span class='line'>224</span>  *
+<span class='line'>225</span>  * @param {object} plugin The plugin object to check the queue against.
+<span class='line'>226</span>  */</span><span class="WHIT">
+<span class='line'>227</span> </span><span class="NAME">minplayer.plugin.prototype.checkQueue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">plugin</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>228</span> 
+<span class='line'>229</span> </span><span class="WHIT">  </span><span class="COMM">// Initialize our variables.</span><span class="WHIT">
+<span class='line'>230</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">q</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">check</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">newqueue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>231</span> 
+<span class='line'>232</span> </span><span class="WHIT">  </span><span class="COMM">// Normalize the plugin variable.</span><span class="WHIT">
+<span class='line'>233</span> </span><span class="WHIT">  </span><span class="NAME">plugin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">plugin</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>234</span> 
+<span class='line'>235</span> </span><span class="WHIT">  </span><span class="COMM">// Set the lock.</span><span class="WHIT">
+<span class='line'>236</span> </span><span class="WHIT">  </span><span class="NAME">minplayer.lock</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>237</span> 
+<span class='line'>238</span> </span><span class="WHIT">  </span><span class="COMM">// Iterate through all the queues.</span><span class="WHIT">
+<span class='line'>239</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">length</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">minplayer.queue.length</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>240</span> </span><span class="WHIT">  </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>241</span> </span><span class="WHIT">    </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">minplayer.queue.hasOwnProperty</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>242</span> </span><span class="WHIT">      </span><span class="COMM">// Get the queue.</span><span class="WHIT">
+<span class='line'>243</span> </span><span class="WHIT">      </span><span class="NAME">q</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">minplayer.queue</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>244</span> 
+<span class='line'>245</span> </span><span class="WHIT">      </span><span class="COMM">// Now check to see if this queue is about us.</span><span class="WHIT">
+<span class='line'>246</span> </span><span class="WHIT">      </span><span class="NAME">check</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">q.id</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">q.plugin</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>247</span> </span><span class="WHIT">      </span><span class="NAME">check</span><span class="WHIT"> </span><span class="PUNC">|</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">q.plugin</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">plugin.name</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>248</span> </span><span class="WHIT">      </span><span class="NAME">check</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">q.id</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">q.id</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">this.options.id</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>249</span> 
+<span class='line'>250</span> </span><span class="WHIT">      </span><span class="COMM">// If the check passes...</span><span class="WHIT">
+<span class='line'>251</span> </span><span class="WHIT">      </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">check</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>252</span> </span><span class="WHIT">        </span><span class="NAME">check</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">minplayer.bind.call</span><span class="PUNC">(</span><span class="WHIT">
+<span class='line'>253</span> </span><span class="WHIT">          </span><span class="NAME">q.context</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>254</span> </span><span class="WHIT">          </span><span class="NAME">q.event</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>255</span> </span><span class="WHIT">          </span><span class="NAME">this.options.id</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>256</span> </span><span class="WHIT">          </span><span class="NAME">plugin.name</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>257</span> </span><span class="WHIT">          </span><span class="NAME">q.callback</span><span class="WHIT">
+<span class='line'>258</span> </span><span class="WHIT">        </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>259</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>260</span> 
+<span class='line'>261</span> </span><span class="WHIT">      </span><span class="COMM">// Add the queue back if it doesn't check out.</span><span class="WHIT">
+<span class='line'>262</span> </span><span class="WHIT">      </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">check</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>263</span> 
+<span class='line'>264</span> </span><span class="WHIT">        </span><span class="COMM">// Add this back to the queue.</span><span class="WHIT">
+<span class='line'>265</span> </span><span class="WHIT">        </span><span class="NAME">newqueue.push</span><span class="PUNC">(</span><span class="NAME">q</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>266</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>267</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>268</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>269</span> 
+<span class='line'>270</span> </span><span class="WHIT">  </span><span class="COMM">// Set the old queue to the new queue.</span><span class="WHIT">
+<span class='line'>271</span> </span><span class="WHIT">  </span><span class="NAME">minplayer.queue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">newqueue</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>272</span> 
+<span class='line'>273</span> </span><span class="WHIT">  </span><span class="COMM">// Release the lock.</span><span class="WHIT">
+<span class='line'>274</span> </span><span class="WHIT">  </span><span class="NAME">minplayer.lock</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>275</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>276</span> 
+<span class='line'>277</span> </span><span class="COMM">/**
+<span class='line'>278</span>  * Trigger a media event.
+<span class='line'>279</span>  *
+<span class='line'>280</span>  * @param {string} type The event type.
+<span class='line'>281</span>  * @param {object} data The event data object.
+<span class='line'>282</span>  * @return {object} The plugin object.
+<span class='line'>283</span>  */</span><span class="WHIT">
+<span class='line'>284</span> </span><span class="NAME">minplayer.plugin.prototype.trigger</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">type</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>285</span> 
+<span class='line'>286</span> </span><span class="WHIT">  </span><span class="COMM">// Don't trigger if this plugin is inactive.</span><span class="WHIT">
+<span class='line'>287</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.active</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>288</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>289</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>290</span> 
+<span class='line'>291</span> </span><span class="WHIT">  </span><span class="COMM">// Add this to our triggered array.</span><span class="WHIT">
+<span class='line'>292</span> </span><span class="WHIT">  </span><span class="NAME">this.triggered</span><span class="PUNC">[</span><span class="NAME">type</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>293</span> 
+<span class='line'>294</span> </span><span class="WHIT">  </span><span class="COMM">// Check to make sure the queue for this type exists.</span><span class="WHIT">
+<span class='line'>295</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.queue.hasOwnProperty</span><span class="PUNC">(</span><span class="NAME">type</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>296</span> 
+<span class='line'>297</span> </span><span class="WHIT">    </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">queue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">queuetype</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.queue</span><span class="PUNC">[</span><span class="NAME">type</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>298</span> 
+<span class='line'>299</span> </span><span class="WHIT">    </span><span class="COMM">// Iterate through all the callbacks in this queue.</span><span class="WHIT">
+<span class='line'>300</span> </span><span class="WHIT">    </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">queuetype</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>301</span> 
+<span class='line'>302</span> </span><span class="WHIT">      </span><span class="COMM">// Check to make sure the queue index exists.</span><span class="WHIT">
+<span class='line'>303</span> </span><span class="WHIT">      </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">queuetype.hasOwnProperty</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>304</span> 
+<span class='line'>305</span> </span><span class="WHIT">        </span><span class="COMM">// Setup the event object, and call the callback.</span><span class="WHIT">
+<span class='line'>306</span> </span><span class="WHIT">        </span><span class="NAME">queue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">queuetype</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>307</span> </span><span class="WHIT">        </span><span class="NAME">queue.callback</span><span class="PUNC">(</span><span class="PUNC">{</span><span class="NAME">target</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">queue.data</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>308</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>309</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>310</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>311</span> 
+<span class='line'>312</span> </span><span class="WHIT">  </span><span class="COMM">// Return the plugin object.</span><span class="WHIT">
+<span class='line'>313</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>314</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>315</span> 
+<span class='line'>316</span> </span><span class="COMM">/**
+<span class='line'>317</span>  * Bind to a media event.
+<span class='line'>318</span>  *
+<span class='line'>319</span>  * @param {string} type The event type.
+<span class='line'>320</span>  * @param {object} data The data to bind with the event.
+<span class='line'>321</span>  * @param {function} fn The callback function.
+<span class='line'>322</span>  * @return {object} The plugin object.
+<span class='line'>323</span>  **/</span><span class="WHIT">
+<span class='line'>324</span> </span><span class="NAME">minplayer.plugin.prototype.bind</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">type</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">fn</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>325</span> 
+<span class='line'>326</span> </span><span class="WHIT">  </span><span class="COMM">// Only bind if active.</span><span class="WHIT">
+<span class='line'>327</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.active</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>328</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>329</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>330</span> 
+<span class='line'>331</span> </span><span class="WHIT">  </span><span class="COMM">// Allow the data to be the callback.</span><span class="WHIT">
+<span class='line'>332</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">data</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'function'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>333</span> </span><span class="WHIT">    </span><span class="NAME">fn</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>334</span> </span><span class="WHIT">    </span><span class="NAME">data</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>335</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>336</span> 
+<span class='line'>337</span> </span><span class="WHIT">  </span><span class="COMM">// You must bind to a specific event and have a callback.</span><span class="WHIT">
+<span class='line'>338</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">type</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">fn</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>339</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>340</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>341</span> 
+<span class='line'>342</span> </span><span class="WHIT">  </span><span class="COMM">// Initialize the queue for this type.</span><span class="WHIT">
+<span class='line'>343</span> </span><span class="WHIT">  </span><span class="NAME">this.queue</span><span class="PUNC">[</span><span class="NAME">type</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.queue</span><span class="PUNC">[</span><span class="NAME">type</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>344</span> 
+<span class='line'>345</span> </span><span class="WHIT">  </span><span class="COMM">// Unbind any existing equivalent events.</span><span class="WHIT">
+<span class='line'>346</span> </span><span class="WHIT">  </span><span class="NAME">this.unbind</span><span class="PUNC">(</span><span class="NAME">type</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">fn</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>347</span> 
+<span class='line'>348</span> </span><span class="WHIT">  </span><span class="COMM">// Now add this event to the queue.</span><span class="WHIT">
+<span class='line'>349</span> </span><span class="WHIT">  </span><span class="NAME">this.queue</span><span class="PUNC">[</span><span class="NAME">type</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">push</span><span class="PUNC">(</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>350</span> </span><span class="WHIT">    </span><span class="NAME">callback</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">fn</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>351</span> </span><span class="WHIT">    </span><span class="NAME">data</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">data</span><span class="WHIT">
+<span class='line'>352</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>353</span> 
+<span class='line'>354</span> </span><span class="WHIT">  </span><span class="COMM">// Now see if this event has already been triggered.</span><span class="WHIT">
+<span class='line'>355</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.triggered.hasOwnProperty</span><span class="PUNC">(</span><span class="NAME">type</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>356</span> 
+<span class='line'>357</span> </span><span class="WHIT">    </span><span class="COMM">// Go ahead and trigger the event.</span><span class="WHIT">
+<span class='line'>358</span> </span><span class="WHIT">    </span><span class="NAME">fn</span><span class="PUNC">(</span><span class="PUNC">{</span><span class="NAME">target</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.triggered</span><span class="PUNC">[</span><span class="NAME">type</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>359</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>360</span> 
+<span class='line'>361</span> </span><span class="WHIT">  </span><span class="COMM">// Return the plugin.</span><span class="WHIT">
+<span class='line'>362</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>363</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>364</span> 
+<span class='line'>365</span> </span><span class="COMM">/**
+<span class='line'>366</span>  * Unbind a media event.
+<span class='line'>367</span>  *
+<span class='line'>368</span>  * @param {string} type The event type.
+<span class='line'>369</span>  * @param {function} fn The callback function.
+<span class='line'>370</span>  * @return {object} The plugin object.
+<span class='line'>371</span>  **/</span><span class="WHIT">
+<span class='line'>372</span> </span><span class="NAME">minplayer.plugin.prototype.unbind</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">type</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">fn</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>373</span> 
+<span class='line'>374</span> </span><span class="WHIT">  </span><span class="COMM">// If this is locked then try again after 10ms.</span><span class="WHIT">
+<span class='line'>375</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.lock</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>376</span> </span><span class="WHIT">    </span><span class="NAME">setTimeout</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">plugin</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>377</span> </span><span class="WHIT">      </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>378</span> </span><span class="WHIT">        </span><span class="NAME">plugin.unbind</span><span class="PUNC">(</span><span class="NAME">type</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">fn</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>379</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>380</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">10</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>381</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>382</span> 
+<span class='line'>383</span> </span><span class="WHIT">  </span><span class="COMM">// Set the lock.</span><span class="WHIT">
+<span class='line'>384</span> </span><span class="WHIT">  </span><span class="NAME">this.lock</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>385</span> 
+<span class='line'>386</span> </span><span class="WHIT">  </span><span class="COMM">// Get the queue type.</span><span class="WHIT">
+<span class='line'>387</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">queuetype</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.queue.hasOwnProperty</span><span class="PUNC">(</span><span class="NAME">type</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">this.queue</span><span class="PUNC">[</span><span class="NAME">type</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>388</span> 
+<span class='line'>389</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">type</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>390</span> </span><span class="WHIT">    </span><span class="NAME">this.queue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>391</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>392</span> </span><span class="WHIT">  </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">fn</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>393</span> </span><span class="WHIT">    </span><span class="NAME">this.queue</span><span class="PUNC">[</span><span class="NAME">type</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>394</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>395</span> </span><span class="WHIT">  </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">queuetype</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>396</span> </span><span class="WHIT">    </span><span class="COMM">// Iterate through all the callbacks and search for equal callbacks.</span><span class="WHIT">
+<span class='line'>397</span> </span><span class="WHIT">    </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">queue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>398</span> </span><span class="WHIT">    </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">queuetype</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>399</span> </span><span class="WHIT">      </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">queuetype.hasOwnProperty</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>400</span> </span><span class="WHIT">        </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">queuetype</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">callback</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="NAME">fn</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>401</span> </span><span class="WHIT">          </span><span class="NAME">queue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.queue</span><span class="PUNC">[</span><span class="NAME">type</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">splice</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>402</span> </span><span class="WHIT">          </span><span class="KEYW">delete</span><span class="WHIT"> </span><span class="NAME">queue</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>403</span> </span><span class="WHIT">        </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>404</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>405</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>406</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>407</span> 
+<span class='line'>408</span> </span><span class="WHIT">  </span><span class="COMM">// Reset the lock.</span><span class="WHIT">
+<span class='line'>409</span> </span><span class="WHIT">  </span><span class="NAME">this.lock</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>410</span> 
+<span class='line'>411</span> </span><span class="WHIT">  </span><span class="COMM">// Return the plugin.</span><span class="WHIT">
+<span class='line'>412</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>413</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>414</span> 
+<span class='line'>415</span> </span><span class="COMM">/**
+<span class='line'>416</span>  * Adds an item to the queue.
+<span class='line'>417</span>  *
+<span class='line'>418</span>  * @param {object} context The context which this is called within.
+<span class='line'>419</span>  * @param {string} event The event to trigger on.
+<span class='line'>420</span>  * @param {string} id The player ID.
+<span class='line'>421</span>  * @param {string} plugin The name of the plugin.
+<span class='line'>422</span>  * @param {function} callback Called when the event occurs.
+<span class='line'>423</span>  */</span><span class="WHIT">
+<span class='line'>424</span> </span><span class="NAME">minplayer.addQueue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">context</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">event</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">plugin</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">callback</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>425</span> 
+<span class='line'>426</span> </span><span class="WHIT">  </span><span class="COMM">// See if it is locked...</span><span class="WHIT">
+<span class='line'>427</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">minplayer.lock</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>428</span> </span><span class="WHIT">    </span><span class="NAME">minplayer.queue.push</span><span class="PUNC">(</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>429</span> </span><span class="WHIT">      </span><span class="NAME">context</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">context</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>430</span> </span><span class="WHIT">      </span><span class="NAME">id</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">id</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>431</span> </span><span class="WHIT">      </span><span class="NAME">event</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">event</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>432</span> </span><span class="WHIT">      </span><span class="NAME">plugin</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">plugin</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>433</span> </span><span class="WHIT">      </span><span class="NAME">callback</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">callback</span><span class="WHIT">
+<span class='line'>434</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>435</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>436</span> </span><span class="WHIT">  </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>437</span> 
+<span class='line'>438</span> </span><span class="WHIT">    </span><span class="COMM">// If so, then try again after 10 milliseconds.</span><span class="WHIT">
+<span class='line'>439</span> </span><span class="WHIT">    </span><span class="NAME">setTimeout</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>440</span> </span><span class="WHIT">      </span><span class="NAME">minplayer.addQueue</span><span class="PUNC">(</span><span class="NAME">context</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">event</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">plugin</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">callback</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>441</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">10</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>442</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>443</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>444</span> 
+<span class='line'>445</span> </span><span class="COMM">/**
+<span class='line'>446</span>  * Binds an event to a plugin instance, and if it doesn't exist, then caches
+<span class='line'>447</span>  * it for a later time.
+<span class='line'>448</span>  *
+<span class='line'>449</span>  * @param {string} event The event to trigger on.
+<span class='line'>450</span>  * @param {string} id The player ID.
+<span class='line'>451</span>  * @param {string} plugin The name of the plugin.
+<span class='line'>452</span>  * @param {function} callback Called when the event occurs.
+<span class='line'>453</span>  * @return {boolean} If the bind was successful.
+<span class='line'>454</span>  * @this The object in context who called this method.
+<span class='line'>455</span>  */</span><span class="WHIT">
+<span class='line'>456</span> </span><span class="NAME">minplayer.bind</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">event</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">plugin</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">callback</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>457</span> 
+<span class='line'>458</span> </span><span class="WHIT">  </span><span class="COMM">// If no callback exists, then just return false.</span><span class="WHIT">
+<span class='line'>459</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">callback</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>460</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>461</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>462</span> 
+<span class='line'>463</span> </span><span class="WHIT">  </span><span class="COMM">// Get the plugins.</span><span class="WHIT">
+<span class='line'>464</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">plugins</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">minplayer.plugins</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>465</span> 
+<span class='line'>466</span> </span><span class="WHIT">  </span><span class="COMM">// Determine the selected plugins.</span><span class="WHIT">
+<span class='line'>467</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">selected</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>468</span> 
+<span class='line'>469</span> </span><span class="WHIT">  </span><span class="COMM">// Create a quick add.</span><span class="WHIT">
+<span class='line'>470</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">addSelected</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">plugin</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>471</span> </span><span class="WHIT">    </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">plugins.hasOwnProperty</span><span class="PUNC">(</span><span class="NAME">id</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">plugins</span><span class="PUNC">[</span><span class="NAME">id</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">hasOwnProperty</span><span class="PUNC">(</span><span class="NAME">plugin</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>472</span> </span><span class="WHIT">      </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">plugins</span><span class="PUNC">[</span><span class="NAME">id</span><span class="PUNC">]</span><span class="PUNC">[</span><span class="NAME">plugin</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">length</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>473</span> </span><span class="WHIT">      </span><span class="KEYW">while</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">--</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>474</span> </span><span class="WHIT">        </span><span class="NAME">selected.push</span><span class="PUNC">(</span><span class="NAME">plugins</span><span class="PUNC">[</span><span class="NAME">id</span><span class="PUNC">]</span><span class="PUNC">[</span><span class="NAME">plugin</span><span class="PUNC">]</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>475</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>476</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>477</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>478</span> 
+<span class='line'>479</span> </span><span class="WHIT">  </span><span class="COMM">// If they provide id && plugin</span><span class="WHIT">
+<span class='line'>480</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">plugin</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>481</span> </span><span class="WHIT">    </span><span class="NAME">addSelected</span><span class="PUNC">(</span><span class="NAME">id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">plugin</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>482</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>483</span> 
+<span class='line'>484</span> </span><span class="WHIT">  </span><span class="COMM">// If they provide no id but a plugin.</span><span class="WHIT">
+<span class='line'>485</span> </span><span class="WHIT">  </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">plugin</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>486</span> </span><span class="WHIT">    </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">id</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">plugins</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>487</span> </span><span class="WHIT">      </span><span class="NAME">addSelected</span><span class="PUNC">(</span><span class="NAME">id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">plugin</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>488</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>489</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>490</span> 
+<span class='line'>491</span> </span><span class="WHIT">  </span><span class="COMM">// If they provide an id but no plugin.</span><span class="WHIT">
+<span class='line'>492</span> </span><span class="WHIT">  </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">plugin</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">plugins</span><span class="PUNC">[</span><span class="NAME">id</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>493</span> </span><span class="WHIT">    </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">plugin</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">plugins</span><span class="PUNC">[</span><span class="NAME">id</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>494</span> </span><span class="WHIT">      </span><span class="NAME">addSelected</span><span class="PUNC">(</span><span class="NAME">id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">plugin</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>495</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>496</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>497</span> 
+<span class='line'>498</span> </span><span class="WHIT">  </span><span class="COMM">// If they provide niether an id or a plugin.</span><span class="WHIT">
+<span class='line'>499</span> </span><span class="WHIT">  </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">plugin</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>500</span> </span><span class="WHIT">    </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">id</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">plugins</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>501</span> </span><span class="WHIT">      </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">plugin</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">plugins</span><span class="PUNC">[</span><span class="NAME">id</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>502</span> </span><span class="WHIT">        </span><span class="NAME">addSelected</span><span class="PUNC">(</span><span class="NAME">id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">plugin</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>503</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>504</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>505</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>506</span> 
+<span class='line'>507</span> </span><span class="WHIT">  </span><span class="COMM">// Iterate through the selected plugins and bind.</span><span class="WHIT">
+<span class='line'>508</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">selected.length</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>509</span> </span><span class="WHIT">  </span><span class="KEYW">while</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">--</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>510</span> </span><span class="WHIT">    </span><span class="NAME">selected</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="NAME">event</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">context</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>511</span> </span><span class="WHIT">      </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">event</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>512</span> </span><span class="WHIT">        </span><span class="NAME">callback.call</span><span class="PUNC">(</span><span class="NAME">context</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">event.target</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>513</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>514</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>515</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>516</span> 
+<span class='line'>517</span> </span><span class="WHIT">  </span><span class="COMM">// Add it to the queue for post bindings...</span><span class="WHIT">
+<span class='line'>518</span> </span><span class="WHIT">  </span><span class="NAME">minplayer.addQueue</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">event</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">plugin</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">callback</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>519</span> 
+<span class='line'>520</span> </span><span class="WHIT">  </span><span class="COMM">// Return that this wasn't handled.</span><span class="WHIT">
+<span class='line'>521</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">selected.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>522</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>523</span> 
+<span class='line'>524</span> </span><span class="COMM">/**
+<span class='line'>525</span>  * The main API for minPlayer.
+<span class='line'>526</span>  *
+<span class='line'>527</span>  * Provided that this function takes three parameters, there are 8 different
+<span class='line'>528</span>  * ways to use this api.
+<span class='line'>529</span>  *
+<span class='line'>530</span>  *   id (0x100) - You want a specific player.
+<span class='line'>531</span>  *   plugin (0x010) - You want a specific plugin.
+<span class='line'>532</span>  *   callback (0x001) - You only want it when it is ready.
+<span class='line'>533</span>  *
+<span class='line'>534</span>  *   000 - You want all plugins from all players, ready or not.
+<span class='line'>535</span>  *
+<span class='line'>536</span>  *          var plugins = minplayer.get();
+<span class='line'>537</span>  *
+<span class='line'>538</span>  *   001 - You want all plugins from all players, but only when ready.
+<span class='line'>539</span>  *
+<span class='line'>540</span>  *          minplayer.get(function(plugin) {
+<span class='line'>541</span>  *            // Code goes here.
+<span class='line'>542</span>  *          });
+<span class='line'>543</span>  *
+<span class='line'>544</span>  *   010 - You want a specific plugin from all players, ready or not...
+<span class='line'>545</span>  *
+<span class='line'>546</span>  *          var medias = minplayer.get(null, 'media');
+<span class='line'>547</span>  *
+<span class='line'>548</span>  *   011 - You want a specific plugin from all players, but only when ready.
+<span class='line'>549</span>  *
+<span class='line'>550</span>  *          minplayer.get('player', function(player) {
+<span class='line'>551</span>  *            // Code goes here.
+<span class='line'>552</span>  *          });
+<span class='line'>553</span>  *
+<span class='line'>554</span>  *   100 - You want all plugins from a specific player, ready or not.
+<span class='line'>555</span>  *
+<span class='line'>556</span>  *          var plugins = minplayer.get('player_id');
+<span class='line'>557</span>  *
+<span class='line'>558</span>  *   101 - You want all plugins from a specific player, but only when ready.
+<span class='line'>559</span>  *
+<span class='line'>560</span>  *          minplayer.get('player_id', null, function(plugin) {
+<span class='line'>561</span>  *            // Code goes here.
+<span class='line'>562</span>  *          });
+<span class='line'>563</span>  *
+<span class='line'>564</span>  *   110 - You want a specific plugin from a specific player, ready or not.
+<span class='line'>565</span>  *
+<span class='line'>566</span>  *          var plugin = minplayer.get('player_id', 'media');
+<span class='line'>567</span>  *
+<span class='line'>568</span>  *   111 - You want a specific plugin from a specific player, only when ready.
+<span class='line'>569</span>  *
+<span class='line'>570</span>  *          minplayer.get('player_id', 'media', function(media) {
+<span class='line'>571</span>  *            // Code goes here.
+<span class='line'>572</span>  *          });
+<span class='line'>573</span>  *
+<span class='line'>574</span>  * @this The context in which this function was called.
+<span class='line'>575</span>  * @param {string} id The ID of the widget to get the plugins from.
+<span class='line'>576</span>  * @param {string} plugin The name of the plugin.
+<span class='line'>577</span>  * @param {function} callback Called when the plugin is ready.
+<span class='line'>578</span>  * @return {object} The plugin object if it is immediately available.
+<span class='line'>579</span>  */</span><span class="WHIT">
+<span class='line'>580</span> </span><span class="NAME">minplayer.get</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">plugin</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">callback</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>581</span> 
+<span class='line'>582</span> </span><span class="WHIT">  </span><span class="COMM">// Normalize the arguments for a better interface.</span><span class="WHIT">
+<span class='line'>583</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'function'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>584</span> </span><span class="WHIT">    </span><span class="NAME">callback</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">id</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>585</span> </span><span class="WHIT">    </span><span class="NAME">plugin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>586</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>587</span> 
+<span class='line'>588</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">plugin</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'function'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>589</span> </span><span class="WHIT">    </span><span class="NAME">callback</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">plugin</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>590</span> </span><span class="WHIT">    </span><span class="NAME">plugin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">id</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>591</span> </span><span class="WHIT">    </span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>592</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>593</span> 
+<span class='line'>594</span> </span><span class="WHIT">  </span><span class="COMM">// Make sure the callback is a callback.</span><span class="WHIT">
+<span class='line'>595</span> </span><span class="WHIT">  </span><span class="NAME">callback</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">callback</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'function'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">callback</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>596</span> 
+<span class='line'>597</span> </span><span class="WHIT">  </span><span class="COMM">// If a callback was provided, then just go ahead and bind.</span><span class="WHIT">
+<span class='line'>598</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">callback</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>599</span> </span><span class="WHIT">    </span><span class="NAME">minplayer.bind.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'ready'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">plugin</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">callback</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>600</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>601</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>602</span> 
+<span class='line'>603</span> </span><span class="WHIT">  </span><span class="COMM">// Get the plugins.</span><span class="WHIT">
+<span class='line'>604</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">plugins</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">minplayer.plugins</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>605</span> 
+<span class='line'>606</span> </span><span class="WHIT">  </span><span class="COMM">// 0x000</span><span class="WHIT">
+<span class='line'>607</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">plugin</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">callback</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>608</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">plugins</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>609</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>610</span> </span><span class="WHIT">  </span><span class="COMM">// 0x100</span><span class="WHIT">
+<span class='line'>611</span> </span><span class="WHIT">  </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">plugin</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">callback</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>612</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">plugins</span><span class="PUNC">[</span><span class="NAME">id</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>613</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>614</span> </span><span class="WHIT">  </span><span class="COMM">// 0x110</span><span class="WHIT">
+<span class='line'>615</span> </span><span class="WHIT">  </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">plugin</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">callback</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>616</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">plugins</span><span class="PUNC">[</span><span class="NAME">id</span><span class="PUNC">]</span><span class="PUNC">[</span><span class="NAME">plugin</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>617</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>618</span> </span><span class="WHIT">  </span><span class="COMM">// 0x010</span><span class="WHIT">
+<span class='line'>619</span> </span><span class="WHIT">  </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">plugin</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">callback</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>620</span> </span><span class="WHIT">    </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">plugin_types</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>621</span> </span><span class="WHIT">    </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">id</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">plugins</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>622</span> </span><span class="WHIT">      </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">plugins.hasOwnProperty</span><span class="PUNC">(</span><span class="NAME">id</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">plugins</span><span class="PUNC">[</span><span class="NAME">id</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">hasOwnProperty</span><span class="PUNC">(</span><span class="NAME">plugin</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>623</span> </span><span class="WHIT">        </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">plugins</span><span class="PUNC">[</span><span class="NAME">id</span><span class="PUNC">]</span><span class="PUNC">[</span><span class="NAME">plugin</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">length</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>624</span> </span><span class="WHIT">        </span><span class="KEYW">while</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">--</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>625</span> </span><span class="WHIT">          </span><span class="NAME">plugin_types.push</span><span class="PUNC">(</span><span class="NAME">plugins</span><span class="PUNC">[</span><span class="NAME">id</span><span class="PUNC">]</span><span class="PUNC">[</span><span class="NAME">plugin</span><span class="PUNC">]</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>626</span> </span><span class="WHIT">        </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>627</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>628</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>629</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">plugin_types</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>630</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>631</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>632</span> </span></pre></body></html>
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/doc/symbols/src/src_osmplayer.js.html b/public/admin/js/osmplayer/doc/symbols/src/src_osmplayer.js.html
new file mode 100644
index 0000000000000000000000000000000000000000..d8c0ee7e7b6ce2e874295b12f475338e6d29c2ee
--- /dev/null
+++ b/public/admin/js/osmplayer/doc/symbols/src/src_osmplayer.js.html
@@ -0,0 +1,276 @@
+<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
+	.KEYW {color: #933;}
+	.COMM {color: #bbb; font-style: italic;}
+	.NUMB {color: #393;}
+	.STRN {color: #393;}
+	.REGX {color: #339;}
+	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
+	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">// Add a way to instanciate using jQuery prototype.</span><span class="WHIT">
+<span class='line'>  2</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">jQuery.fn.osmplayer</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>  3</span> 
+<span class='line'>  4</span> </span><span class="WHIT">  </span><span class="COMM">/**
+<span class='line'>  5</span>    * @constructor
+<span class='line'>  6</span>    *
+<span class='line'>  7</span>    * Define a jQuery osmplayer prototype.
+<span class='line'>  8</span>    *
+<span class='line'>  9</span>    * @param {object} options The options for this jQuery prototype.
+<span class='line'> 10</span>    * @return {Array} jQuery object.
+<span class='line'> 11</span>    */</span><span class="WHIT">
+<span class='line'> 12</span> </span><span class="WHIT">  </span><span class="NAME">jQuery.fn.osmplayer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">options</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 13</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">jQuery</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">each</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 14</span> </span><span class="WHIT">      </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 15</span> </span><span class="WHIT">      </span><span class="NAME">options.id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">options.id</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">jQuery</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">'id'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">Math.random</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 16</span> </span><span class="WHIT">      </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">minplayer.plugins</span><span class="PUNC">[</span><span class="NAME">options.id</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 17</span> </span><span class="WHIT">        </span><span class="NAME">options.template</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">options.template</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="STRN">'default'</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 18</span> </span><span class="WHIT">        </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">osmplayer</span><span class="PUNC">[</span><span class="NAME">options.template</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 19</span> </span><span class="WHIT">          </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">osmplayer</span><span class="PUNC">[</span><span class="NAME">options.template</span><span class="PUNC">]</span><span class="PUNC">(</span><span class="NAME">jQuery</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 20</span> </span><span class="WHIT">        </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 21</span> </span><span class="WHIT">        </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 22</span> </span><span class="WHIT">          </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">osmplayer</span><span class="PUNC">(</span><span class="NAME">jQuery</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 23</span> </span><span class="WHIT">        </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 24</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 25</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 26</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 27</span> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 28</span> 
+<span class='line'> 29</span> </span><span class="COMM">/**
+<span class='line'> 30</span>  * @constructor
+<span class='line'> 31</span>  * @extends minplayer
+<span class='line'> 32</span>  * @class The main osmplayer class.
+<span class='line'> 33</span>  *
+<span class='line'> 34</span>  * &lt;p>&lt;strong>Usage:&lt;/strong>
+<span class='line'> 35</span>  * &lt;pre>&lt;code>
+<span class='line'> 36</span>  *
+<span class='line'> 37</span>  *   // Create a media player.
+<span class='line'> 38</span>  *   var player = jQuery("#player").osmplayer({
+<span class='line'> 39</span>  *
+<span class='line'> 40</span>  *   });
+<span class='line'> 41</span>  *
+<span class='line'> 42</span>  * &lt;/code>&lt;/pre>
+<span class='line'> 43</span>  * &lt;/p>
+<span class='line'> 44</span>  *
+<span class='line'> 45</span>  * @param {object} context The jQuery context.
+<span class='line'> 46</span>  * @param {object} options This components options.
+<span class='line'> 47</span>  */</span><span class="WHIT">
+<span class='line'> 48</span> </span><span class="NAME">osmplayer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">context</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 49</span> 
+<span class='line'> 50</span> </span><span class="WHIT">  </span><span class="COMM">// Derive from minplayer</span><span class="WHIT">
+<span class='line'> 51</span> </span><span class="WHIT">  </span><span class="NAME">minplayer.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">context</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 52</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 53</span> 
+<span class='line'> 54</span> </span><span class="COMM">/** Derive from minplayer. */</span><span class="WHIT">
+<span class='line'> 55</span> </span><span class="NAME">osmplayer.prototype</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">minplayer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 56</span> 
+<span class='line'> 57</span> </span><span class="COMM">/** Reset the constructor. */</span><span class="WHIT">
+<span class='line'> 58</span> </span><span class="NAME">osmplayer.prototype.constructor</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">osmplayer</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 59</span> 
+<span class='line'> 60</span> </span><span class="COMM">/**
+<span class='line'> 61</span>  * Creates a new plugin within this context.
+<span class='line'> 62</span>  *
+<span class='line'> 63</span>  * @param {string} name The name of the plugin you wish to create.
+<span class='line'> 64</span>  * @param {object} base The base object for this plugin.
+<span class='line'> 65</span>  * @param {object} context The context which you would like to create.
+<span class='line'> 66</span>  * @return {object} The new plugin object.
+<span class='line'> 67</span>  */</span><span class="WHIT">
+<span class='line'> 68</span> </span><span class="NAME">osmplayer.prototype.create</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">name</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">base</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">context</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 69</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">minplayer.prototype.create.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">name</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'osmplayer'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">context</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 70</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 71</span> 
+<span class='line'> 72</span> </span><span class="COMM">/**
+<span class='line'> 73</span>  * @see minplayer.plugin.construct
+<span class='line'> 74</span>  */</span><span class="WHIT">
+<span class='line'> 75</span> </span><span class="NAME">osmplayer.prototype.construct</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 76</span> 
+<span class='line'> 77</span> </span><span class="WHIT">  </span><span class="COMM">// Make sure we provide default options...</span><span class="WHIT">
+<span class='line'> 78</span> </span><span class="WHIT">  </span><span class="NAME">this.options</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">jQuery.extend</span><span class="PUNC">(</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 79</span> </span><span class="WHIT">    </span><span class="NAME">playlist</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 80</span> </span><span class="WHIT">    </span><span class="NAME">node</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 81</span> </span><span class="WHIT">    </span><span class="NAME">swfplayer</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'minplayer/flash/minplayer.swf'</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 82</span> </span><span class="WHIT">    </span><span class="NAME">logo</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'logo.png'</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 83</span> </span><span class="WHIT">    </span><span class="NAME">link</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'http://www.mediafront.org'</span><span class="WHIT">
+<span class='line'> 84</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.options</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 85</span> 
+<span class='line'> 86</span> </span><span class="WHIT">  </span><span class="COMM">// Call the minplayer display constructor.</span><span class="WHIT">
+<span class='line'> 87</span> </span><span class="WHIT">  </span><span class="NAME">minplayer.prototype.construct.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 88</span> 
+<span class='line'> 89</span> </span><span class="WHIT">  </span><span class="COMM">/** The play queue and index. */</span><span class="WHIT">
+<span class='line'> 90</span> </span><span class="WHIT">  </span><span class="NAME">this.playQueue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 91</span> </span><span class="WHIT">  </span><span class="NAME">this.playIndex</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 92</span> 
+<span class='line'> 93</span> </span><span class="WHIT">  </span><span class="COMM">/** The playlist for this media player. */</span><span class="WHIT">
+<span class='line'> 94</span> </span><span class="WHIT">  </span><span class="NAME">this.create</span><span class="PUNC">(</span><span class="STRN">'playlist'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'osmplayer'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 95</span> 
+<span class='line'> 96</span> </span><span class="WHIT">  </span><span class="COMM">/** Get the playlist or any other playlist that connects. */</span><span class="WHIT">
+<span class='line'> 97</span> </span><span class="WHIT">  </span><span class="NAME">this.get</span><span class="PUNC">(</span><span class="STRN">'playlist'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">playlist</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 98</span> </span><span class="WHIT">    </span><span class="NAME">playlist.bind</span><span class="PUNC">(</span><span class="STRN">'nodeLoad'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">player</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 99</span> </span><span class="WHIT">      </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">event</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>100</span> </span><span class="WHIT">        </span><span class="NAME">player.loadNode</span><span class="PUNC">(</span><span class="NAME">data</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>101</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>102</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>103</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>104</span> 
+<span class='line'>105</span> </span><span class="WHIT">  </span><span class="COMM">// Play each media sequentially...</span><span class="WHIT">
+<span class='line'>106</span> </span><span class="WHIT">  </span><span class="NAME">this.get</span><span class="PUNC">(</span><span class="STRN">'media'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">player</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>107</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">media</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>108</span> </span><span class="WHIT">      </span><span class="NAME">media.bind</span><span class="PUNC">(</span><span class="STRN">'ended'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>109</span> </span><span class="WHIT">        </span><span class="NAME">player.options.autoplay</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>110</span> </span><span class="WHIT">        </span><span class="NAME">player.playNext</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>111</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>112</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>113</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>114</span> 
+<span class='line'>115</span> </span><span class="WHIT">  </span><span class="COMM">// Load the node if one is provided.</span><span class="WHIT">
+<span class='line'>116</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.options.node</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>117</span> </span><span class="WHIT">    </span><span class="NAME">this.loadNode</span><span class="PUNC">(</span><span class="NAME">this.options.node</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>118</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>119</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>120</span> 
+<span class='line'>121</span> </span><span class="COMM">/**
+<span class='line'>122</span>  * Gets the full screen element.
+<span class='line'>123</span>  *
+<span class='line'>124</span>  * @return {object} The element that will go into fullscreen.
+<span class='line'>125</span>  */</span><span class="WHIT">
+<span class='line'>126</span> </span><span class="NAME">osmplayer.prototype.fullScreenElement</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>127</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.elements.minplayer</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>128</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>129</span> 
+<span class='line'>130</span> </span><span class="COMM">/**
+<span class='line'>131</span>  * The load node function.
+<span class='line'>132</span>  *
+<span class='line'>133</span>  * @param {object} node A media node object.
+<span class='line'>134</span>  */</span><span class="WHIT">
+<span class='line'>135</span> </span><span class="NAME">osmplayer.prototype.loadNode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>136</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">node</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">node.mediafiles</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>137</span> 
+<span class='line'>138</span> </span><span class="WHIT">    </span><span class="COMM">// Load the media files.</span><span class="WHIT">
+<span class='line'>139</span> </span><span class="WHIT">    </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">media</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">node.mediafiles.media</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>140</span> </span><span class="WHIT">    </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">media</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>141</span> </span><span class="WHIT">      </span><span class="NAME">this.playQueue.length</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>142</span> </span><span class="WHIT">      </span><span class="NAME">this.playQueue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>143</span> </span><span class="WHIT">      </span><span class="NAME">this.playIndex</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>144</span> </span><span class="WHIT">      </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">file</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>145</span> </span><span class="WHIT">      </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">types</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>146</span> 
+<span class='line'>147</span> </span><span class="WHIT">      </span><span class="COMM">// For mobile devices, we should only show the main media.</span><span class="WHIT">
+<span class='line'>148</span> </span><span class="WHIT">      </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">minplayer.isAndroid</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">minplayer.isIDevice</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>149</span> </span><span class="WHIT">        </span><span class="NAME">types</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="STRN">'media'</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>150</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>151</span> </span><span class="WHIT">      </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>152</span> </span><span class="WHIT">        </span><span class="NAME">types</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="STRN">'intro'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'commercial'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'prereel'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'media'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'postreel'</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>153</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>154</span> 
+<span class='line'>155</span> </span><span class="WHIT">      </span><span class="COMM">// Iterate through the types.</span><span class="WHIT">
+<span class='line'>156</span> </span><span class="WHIT">      </span><span class="NAME">jQuery.each</span><span class="PUNC">(</span><span class="NAME">types</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">player</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>157</span> </span><span class="WHIT">        </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">key</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">type</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>158</span> </span><span class="WHIT">          </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">file</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">player.addToQueue</span><span class="PUNC">(</span><span class="NAME">media</span><span class="PUNC">[</span><span class="NAME">type</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>159</span> </span><span class="WHIT">            </span><span class="NAME">file.queueType</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">type</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>160</span> </span><span class="WHIT">          </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>161</span> </span><span class="WHIT">        </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>162</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>163</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>164</span> 
+<span class='line'>165</span> </span><span class="WHIT">    </span><span class="COMM">// Load the preview image.</span><span class="WHIT">
+<span class='line'>166</span> </span><span class="WHIT">    </span><span class="NAME">osmplayer.getImage</span><span class="PUNC">(</span><span class="NAME">node.mediafiles</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'preview'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">player</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>167</span> </span><span class="WHIT">      </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">image</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>168</span> </span><span class="WHIT">        </span><span class="NAME">player.options.preview</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">image.path</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>169</span> </span><span class="WHIT">        </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">player.playLoader</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>170</span> </span><span class="WHIT">          </span><span class="NAME">player.playLoader.initialize</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>171</span> </span><span class="WHIT">        </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>172</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>173</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>174</span> 
+<span class='line'>175</span> </span><span class="WHIT">    </span><span class="COMM">// Play the next media</span><span class="WHIT">
+<span class='line'>176</span> </span><span class="WHIT">    </span><span class="NAME">this.playNext</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>177</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>178</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>179</span> 
+<span class='line'>180</span> </span><span class="COMM">/**
+<span class='line'>181</span>  * Adds a file to the play queue.
+<span class='line'>182</span>  *
+<span class='line'>183</span>  * @param {object} file The file to add to the queue.
+<span class='line'>184</span>  * @return {object} The file that was added to the queue.
+<span class='line'>185</span>  */</span><span class="WHIT">
+<span class='line'>186</span> </span><span class="NAME">osmplayer.prototype.addToQueue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">file</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>187</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">file</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">minplayer.getMediaFile</span><span class="PUNC">(</span><span class="NAME">file</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>188</span> </span><span class="WHIT">    </span><span class="NAME">this.playQueue.push</span><span class="PUNC">(</span><span class="NAME">file</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>189</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>190</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">file</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>191</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>192</span> 
+<span class='line'>193</span> </span><span class="COMM">/**
+<span class='line'>194</span>  * Plays the next media file in the queue.
+<span class='line'>195</span>  */</span><span class="WHIT">
+<span class='line'>196</span> </span><span class="NAME">osmplayer.prototype.playNext</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>197</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.playQueue.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NAME">this.playIndex</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>198</span> </span><span class="WHIT">    </span><span class="NAME">this.load</span><span class="PUNC">(</span><span class="NAME">this.playQueue</span><span class="PUNC">[</span><span class="NAME">this.playIndex</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>199</span> </span><span class="WHIT">    </span><span class="NAME">this.playIndex</span><span class="PUNC">++</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>200</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>201</span> </span><span class="WHIT">  </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.options.repeat</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>202</span> </span><span class="WHIT">    </span><span class="NAME">this.playIndex</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>203</span> </span><span class="WHIT">    </span><span class="NAME">this.playNext</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>204</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>205</span> </span><span class="WHIT">  </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.playQueue.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>206</span> </span><span class="WHIT">    </span><span class="COMM">// If there is no playlist, and no repeat, we will</span><span class="WHIT">
+<span class='line'>207</span> </span><span class="WHIT">    </span><span class="COMM">// just seek to the beginning and pause.</span><span class="WHIT">
+<span class='line'>208</span> </span><span class="WHIT">    </span><span class="NAME">this.options.autoplay</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>209</span> </span><span class="WHIT">    </span><span class="NAME">this.playIndex</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>210</span> </span><span class="WHIT">    </span><span class="NAME">this.playNext</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>211</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>212</span> </span><span class="WHIT">  </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.media</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>213</span> </span><span class="WHIT">    </span><span class="COMM">// Stop the player and unload.</span><span class="WHIT">
+<span class='line'>214</span> </span><span class="WHIT">    </span><span class="NAME">this.media.stop</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>215</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>216</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>217</span> 
+<span class='line'>218</span> </span><span class="COMM">/**
+<span class='line'>219</span>  * Returns an image provided image array.
+<span class='line'>220</span>  *
+<span class='line'>221</span>  * @param {object} mediafiles The mediafiles to search within.
+<span class='line'>222</span>  * @param {string} type The type of image to look for.
+<span class='line'>223</span>  * @param {function} callback Called when the image is retrieved.
+<span class='line'>224</span>  */</span><span class="WHIT">
+<span class='line'>225</span> </span><span class="NAME">osmplayer.getImage</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">mediafiles</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">type</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">callback</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>226</span> 
+<span class='line'>227</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">image</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>228</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">images</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">mediafiles.image</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>229</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">images</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>230</span> 
+<span class='line'>231</span> </span><span class="WHIT">    </span><span class="COMM">// If the image type exists, then just use that one...</span><span class="WHIT">
+<span class='line'>232</span> </span><span class="WHIT">    </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">images</span><span class="PUNC">[</span><span class="NAME">type</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>233</span> </span><span class="WHIT">      </span><span class="NAME">image</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">images</span><span class="PUNC">[</span><span class="NAME">type</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>234</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>235</span> </span><span class="WHIT">    </span><span class="COMM">// Or try the original image...</span><span class="WHIT">
+<span class='line'>236</span> </span><span class="WHIT">    </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">images</span><span class="PUNC">[</span><span class="STRN">'image'</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>237</span> </span><span class="WHIT">      </span><span class="NAME">image</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">images</span><span class="PUNC">[</span><span class="STRN">'image'</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>238</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>239</span> </span><span class="WHIT">    </span><span class="COMM">// Otherwise, just try ANY image...</span><span class="WHIT">
+<span class='line'>240</span> </span><span class="WHIT">    </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>241</span> 
+<span class='line'>242</span> </span><span class="WHIT">      </span><span class="COMM">// Or, just pick the first one available.</span><span class="WHIT">
+<span class='line'>243</span> </span><span class="WHIT">      </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">type</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">images</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>244</span> </span><span class="WHIT">        </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">images.hasOwnProperty</span><span class="PUNC">(</span><span class="NAME">type</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>245</span> </span><span class="WHIT">          </span><span class="NAME">image</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">images</span><span class="PUNC">[</span><span class="NAME">type</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>246</span> </span><span class="WHIT">          </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>247</span> </span><span class="WHIT">        </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>248</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>249</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>250</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>251</span> 
+<span class='line'>252</span> </span><span class="WHIT">  </span><span class="COMM">// If the image exists, then callback with that image.</span><span class="WHIT">
+<span class='line'>253</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">image</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>254</span> </span><span class="WHIT">    </span><span class="NAME">callback</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">minplayer.file</span><span class="PUNC">(</span><span class="NAME">image</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>255</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>256</span> </span><span class="WHIT">  </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>257</span> </span><span class="WHIT">    </span><span class="COMM">// Get the image from the media player...</span><span class="WHIT">
+<span class='line'>258</span> </span><span class="WHIT">    </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">mediaFile</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">minplayer.getMediaFile</span><span class="PUNC">(</span><span class="NAME">mediafiles.media.media</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>259</span> </span><span class="WHIT">    </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">mediaFile</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>260</span> </span><span class="WHIT">      </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">player</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">minplayer.players</span><span class="PUNC">[</span><span class="NAME">mediaFile.player</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>261</span> </span><span class="WHIT">      </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">player</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">player.getImage</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'function'</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>262</span> </span><span class="WHIT">        </span><span class="NAME">player.getImage</span><span class="PUNC">(</span><span class="NAME">mediaFile</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">type</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">src</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>263</span> </span><span class="WHIT">          </span><span class="NAME">callback</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">minplayer.file</span><span class="PUNC">(</span><span class="NAME">src</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>264</span> </span><span class="WHIT">        </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>265</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>266</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>267</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>268</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>269</span> </span></pre></body></html>
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/doc/symbols/src/src_osmplayer.pager.js.html b/public/admin/js/osmplayer/doc/symbols/src/src_osmplayer.pager.js.html
new file mode 100644
index 0000000000000000000000000000000000000000..b2f6a62e0ec573ac01faeac2ee7b77bf692327f1
--- /dev/null
+++ b/public/admin/js/osmplayer/doc/symbols/src/src_osmplayer.pager.js.html
@@ -0,0 +1,59 @@
+<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
+	.KEYW {color: #933;}
+	.COMM {color: #bbb; font-style: italic;}
+	.NUMB {color: #393;}
+	.STRN {color: #393;}
+	.REGX {color: #339;}
+	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
+	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/** The osmplayer namespace. */</span><span class="WHIT">
+<span class='line'>  2</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">osmplayer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">osmplayer</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>  3</span> 
+<span class='line'>  4</span> </span><span class="COMM">/**
+<span class='line'>  5</span>  * @constructor
+<span class='line'>  6</span>  * @extends minplayer.display
+<span class='line'>  7</span>  * @class This class provides pager functionality.
+<span class='line'>  8</span>  *
+<span class='line'>  9</span>  * @param {object} context The jQuery context.
+<span class='line'> 10</span>  * @param {object} options This components options.
+<span class='line'> 11</span>  */</span><span class="WHIT">
+<span class='line'> 12</span> </span><span class="NAME">osmplayer.pager</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">context</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 13</span> 
+<span class='line'> 14</span> </span><span class="WHIT">  </span><span class="COMM">// Derive from display</span><span class="WHIT">
+<span class='line'> 15</span> </span><span class="WHIT">  </span><span class="NAME">minplayer.display.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'pager'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">context</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 16</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 17</span> 
+<span class='line'> 18</span> </span><span class="COMM">/** Derive from minplayer.display. */</span><span class="WHIT">
+<span class='line'> 19</span> </span><span class="NAME">osmplayer.pager.prototype</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">minplayer.display</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 20</span> 
+<span class='line'> 21</span> </span><span class="COMM">/** Reset the constructor. */</span><span class="WHIT">
+<span class='line'> 22</span> </span><span class="NAME">osmplayer.pager.prototype.constructor</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">osmplayer.pager</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 23</span> 
+<span class='line'> 24</span> </span><span class="COMM">/**
+<span class='line'> 25</span>  * @see minplayer.plugin#construct
+<span class='line'> 26</span>  */</span><span class="WHIT">
+<span class='line'> 27</span> </span><span class="NAME">osmplayer.pager.prototype.construct</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 28</span> 
+<span class='line'> 29</span> </span><span class="WHIT">  </span><span class="COMM">// Call the minplayer plugin constructor.</span><span class="WHIT">
+<span class='line'> 30</span> </span><span class="WHIT">  </span><span class="NAME">minplayer.display.prototype.construct.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 31</span> 
+<span class='line'> 32</span> </span><span class="WHIT">  </span><span class="COMM">// Setup the prev button.</span><span class="WHIT">
+<span class='line'> 33</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.elements.prevPage</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 34</span> </span><span class="WHIT">    </span><span class="NAME">this.prevPage</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.elements.prevPage.click</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">pager</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 35</span> </span><span class="WHIT">      </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">event</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 36</span> </span><span class="WHIT">        </span><span class="NAME">event.preventDefault</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 37</span> </span><span class="WHIT">        </span><span class="NAME">pager.trigger</span><span class="PUNC">(</span><span class="STRN">'prevPage'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 38</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 39</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 40</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 41</span> 
+<span class='line'> 42</span> </span><span class="WHIT">  </span><span class="COMM">// Setup the next button.</span><span class="WHIT">
+<span class='line'> 43</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.elements.nextPage</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 44</span> </span><span class="WHIT">    </span><span class="NAME">this.nextPage</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.elements.nextPage.click</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">pager</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 45</span> </span><span class="WHIT">      </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">event</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 46</span> </span><span class="WHIT">        </span><span class="NAME">event.preventDefault</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 47</span> </span><span class="WHIT">        </span><span class="NAME">pager.trigger</span><span class="PUNC">(</span><span class="STRN">'nextPage'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 48</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 49</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 50</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 51</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 52</span> </span></pre></body></html>
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/doc/symbols/src/src_osmplayer.parser.asx.js.html b/public/admin/js/osmplayer/doc/symbols/src/src_osmplayer.parser.asx.js.html
new file mode 100644
index 0000000000000000000000000000000000000000..8c38c6ee74f1f1e9ffd4dc4114d169267034455b
--- /dev/null
+++ b/public/admin/js/osmplayer/doc/symbols/src/src_osmplayer.parser.asx.js.html
@@ -0,0 +1,52 @@
+<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
+	.KEYW {color: #933;}
+	.COMM {color: #bbb; font-style: italic;}
+	.NUMB {color: #393;}
+	.STRN {color: #393;}
+	.REGX {color: #339;}
+	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
+	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/** The osmplayer namespace. */</span><span class="WHIT">
+<span class='line'>  2</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">osmplayer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">osmplayer</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>  3</span> 
+<span class='line'>  4</span> </span><span class="COMM">/** The parser object. */</span><span class="WHIT">
+<span class='line'>  5</span> </span><span class="NAME">osmplayer.parser</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">osmplayer.parser</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>  6</span> 
+<span class='line'>  7</span> </span><span class="COMM">/**
+<span class='line'>  8</span>  * The asx parser object.
+<span class='line'>  9</span>  *
+<span class='line'> 10</span>  * @return {object} The asx parser.
+<span class='line'> 11</span>  **/</span><span class="WHIT">
+<span class='line'> 12</span> </span><span class="NAME">osmplayer.parser.asx</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 13</span> 
+<span class='line'> 14</span> </span><span class="WHIT">  </span><span class="COMM">// The priority for this parser.</span><span class="WHIT">
+<span class='line'> 15</span> </span><span class="WHIT">  </span><span class="NAME">priority</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 16</span> 
+<span class='line'> 17</span> </span><span class="WHIT">  </span><span class="COMM">// Return if this is a valid youtube feed.</span><span class="WHIT">
+<span class='line'> 18</span> </span><span class="WHIT">  </span><span class="NAME">valid</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">feed</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 19</span> </span><span class="WHIT">    </span><span class="NAME">feed</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">feed.replace</span><span class="PUNC">(</span><span class="REGX">/(.*)\??(.*)/i</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'$1'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 20</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">feed.match</span><span class="PUNC">(</span><span class="REGX">/\.asx$/i</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 21</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 22</span> 
+<span class='line'> 23</span> </span><span class="WHIT">  </span><span class="COMM">// Returns the type of request to make.</span><span class="WHIT">
+<span class='line'> 24</span> </span><span class="WHIT">  </span><span class="NAME">getType</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">feed</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 25</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="STRN">'xml'</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 26</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 27</span> 
+<span class='line'> 28</span> </span><span class="WHIT">  </span><span class="COMM">// Returns the feed provided the start and numItems.</span><span class="WHIT">
+<span class='line'> 29</span> </span><span class="WHIT">  </span><span class="NAME">getFeed</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">feed</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">start</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">numItems</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 30</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">feed</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 31</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 32</span> 
+<span class='line'> 33</span> </span><span class="WHIT">  </span><span class="COMM">// Parse the feed.</span><span class="WHIT">
+<span class='line'> 34</span> </span><span class="WHIT">  </span><span class="NAME">parse</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">data</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 35</span> </span><span class="WHIT">    </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">playlist</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 36</span> </span><span class="WHIT">      </span><span class="NAME">total_rows</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 37</span> </span><span class="WHIT">      </span><span class="NAME">nodes</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="WHIT">
+<span class='line'> 38</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 39</span> </span><span class="WHIT">    </span><span class="NAME">jQuery</span><span class="PUNC">(</span><span class="STRN">'asx entry'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">each</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">index</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 40</span> </span><span class="WHIT">      </span><span class="NAME">osmplayer.parser.rss.addRSSItem</span><span class="PUNC">(</span><span class="NAME">playlist</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">jQuery</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 41</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 42</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">playlist</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 43</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 44</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 45</span> </span></pre></body></html>
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/doc/symbols/src/src_osmplayer.parser.default.js.html b/public/admin/js/osmplayer/doc/symbols/src/src_osmplayer.parser.default.js.html
new file mode 100644
index 0000000000000000000000000000000000000000..9bbc95673f9c5e869a88785eb8626a0d756cbb78
--- /dev/null
+++ b/public/admin/js/osmplayer/doc/symbols/src/src_osmplayer.parser.default.js.html
@@ -0,0 +1,47 @@
+<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
+	.KEYW {color: #933;}
+	.COMM {color: #bbb; font-style: italic;}
+	.NUMB {color: #393;}
+	.STRN {color: #393;}
+	.REGX {color: #339;}
+	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
+	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/** The osmplayer namespace. */</span><span class="WHIT">
+<span class='line'>  2</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">osmplayer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">osmplayer</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>  3</span> 
+<span class='line'>  4</span> </span><span class="COMM">/** The parser object. */</span><span class="WHIT">
+<span class='line'>  5</span> </span><span class="NAME">osmplayer.parser</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">osmplayer.parser</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>  6</span> 
+<span class='line'>  7</span> </span><span class="COMM">/**
+<span class='line'>  8</span>  * The default parser object.
+<span class='line'>  9</span>  *
+<span class='line'> 10</span>  * @return {object} The default parser.
+<span class='line'> 11</span>  **/</span><span class="WHIT">
+<span class='line'> 12</span> </span><span class="NAME">osmplayer.parser</span><span class="PUNC">[</span><span class="STRN">'default'</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 13</span> 
+<span class='line'> 14</span> </span><span class="WHIT">  </span><span class="COMM">// The priority for this parser.</span><span class="WHIT">
+<span class='line'> 15</span> </span><span class="WHIT">  </span><span class="NAME">priority</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 16</span> 
+<span class='line'> 17</span> </span><span class="WHIT">  </span><span class="COMM">// This parser is always valid.</span><span class="WHIT">
+<span class='line'> 18</span> </span><span class="WHIT">  </span><span class="NAME">valid</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">feed</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 19</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 20</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 21</span> 
+<span class='line'> 22</span> </span><span class="WHIT">  </span><span class="COMM">// Returns the type of request to make.</span><span class="WHIT">
+<span class='line'> 23</span> </span><span class="WHIT">  </span><span class="NAME">getType</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">feed</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 24</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="STRN">'json'</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 25</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 26</span> 
+<span class='line'> 27</span> </span><span class="WHIT">  </span><span class="COMM">// Returns the feed provided the start and numItems.</span><span class="WHIT">
+<span class='line'> 28</span> </span><span class="WHIT">  </span><span class="NAME">getFeed</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">feed</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">start</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">numItems</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 29</span> </span><span class="WHIT">    </span><span class="NAME">feed</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">feed.replace</span><span class="PUNC">(</span><span class="REGX">/(.*)\??(.*)/i</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'$1'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 30</span> </span><span class="WHIT">    </span><span class="NAME">feed</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'?start-index='</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">start</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 31</span> </span><span class="WHIT">    </span><span class="NAME">feed</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'&max-results='</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">numItems</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 32</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">feed</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 33</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 34</span> 
+<span class='line'> 35</span> </span><span class="WHIT">  </span><span class="COMM">// Parse the feed.</span><span class="WHIT">
+<span class='line'> 36</span> </span><span class="WHIT">  </span><span class="NAME">parse</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">data</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 37</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 38</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 39</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 40</span> </span></pre></body></html>
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/doc/symbols/src/src_osmplayer.parser.rss.js.html b/public/admin/js/osmplayer/doc/symbols/src/src_osmplayer.parser.rss.js.html
new file mode 100644
index 0000000000000000000000000000000000000000..c216948c941118fd1e7069f8462b1aa49001ad4e
--- /dev/null
+++ b/public/admin/js/osmplayer/doc/symbols/src/src_osmplayer.parser.rss.js.html
@@ -0,0 +1,73 @@
+<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
+	.KEYW {color: #933;}
+	.COMM {color: #bbb; font-style: italic;}
+	.NUMB {color: #393;}
+	.STRN {color: #393;}
+	.REGX {color: #339;}
+	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
+	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/** The osmplayer namespace. */</span><span class="WHIT">
+<span class='line'>  2</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">osmplayer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">osmplayer</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>  3</span> 
+<span class='line'>  4</span> </span><span class="COMM">/** The parser object. */</span><span class="WHIT">
+<span class='line'>  5</span> </span><span class="NAME">osmplayer.parser</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">osmplayer.parser</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>  6</span> 
+<span class='line'>  7</span> </span><span class="COMM">/**
+<span class='line'>  8</span>  * The rss parser object.
+<span class='line'>  9</span>  *
+<span class='line'> 10</span>  * @return {object} The rss parser.
+<span class='line'> 11</span>  **/</span><span class="WHIT">
+<span class='line'> 12</span> </span><span class="NAME">osmplayer.parser.rss</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 13</span> 
+<span class='line'> 14</span> </span><span class="WHIT">  </span><span class="COMM">// The priority for this parser.</span><span class="WHIT">
+<span class='line'> 15</span> </span><span class="WHIT">  </span><span class="NAME">priority</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 16</span> 
+<span class='line'> 17</span> </span><span class="WHIT">  </span><span class="COMM">// Return if this is a valid youtube feed.</span><span class="WHIT">
+<span class='line'> 18</span> </span><span class="WHIT">  </span><span class="NAME">valid</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">feed</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 19</span> </span><span class="WHIT">    </span><span class="NAME">feed</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">feed.replace</span><span class="PUNC">(</span><span class="REGX">/(.*)\??(.*)/i</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'$1'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 20</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">feed.match</span><span class="PUNC">(</span><span class="REGX">/\.rss$/i</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 21</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 22</span> 
+<span class='line'> 23</span> </span><span class="WHIT">  </span><span class="COMM">// Returns the type of request to make.</span><span class="WHIT">
+<span class='line'> 24</span> </span><span class="WHIT">  </span><span class="NAME">getType</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">feed</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 25</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="STRN">'xml'</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 26</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 27</span> 
+<span class='line'> 28</span> </span><span class="WHIT">  </span><span class="COMM">// Returns the feed provided the start and numItems.</span><span class="WHIT">
+<span class='line'> 29</span> </span><span class="WHIT">  </span><span class="NAME">getFeed</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">feed</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">start</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">numItems</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 30</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">feed</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 31</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 32</span> 
+<span class='line'> 33</span> </span><span class="WHIT">  </span><span class="COMM">// Parse the feed.</span><span class="WHIT">
+<span class='line'> 34</span> </span><span class="WHIT">  </span><span class="NAME">parse</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">data</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 35</span> </span><span class="WHIT">    </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">playlist</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 36</span> </span><span class="WHIT">      </span><span class="NAME">total_rows</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 37</span> </span><span class="WHIT">      </span><span class="NAME">nodes</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="WHIT">
+<span class='line'> 38</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 39</span> </span><span class="WHIT">    </span><span class="NAME">jQuery</span><span class="PUNC">(</span><span class="STRN">'rss channel'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">find</span><span class="PUNC">(</span><span class="STRN">'item'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">each</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">index</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 40</span> </span><span class="WHIT">      </span><span class="NAME">osmplayer.parser.rss.addRSSItem</span><span class="PUNC">(</span><span class="NAME">playlist</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">jQuery</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 41</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 42</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">playlist</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 43</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 44</span> 
+<span class='line'> 45</span> </span><span class="WHIT">  </span><span class="COMM">// Parse an RSS item.</span><span class="WHIT">
+<span class='line'> 46</span> </span><span class="WHIT">  </span><span class="NAME">addRSSItem</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">playlist</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">item</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 47</span> </span><span class="WHIT">    </span><span class="NAME">playlist.total_rows</span><span class="PUNC">++</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 48</span> </span><span class="WHIT">    </span><span class="NAME">playlist.nodes.push</span><span class="PUNC">(</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 49</span> </span><span class="WHIT">      </span><span class="NAME">title</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">item.find</span><span class="PUNC">(</span><span class="STRN">'title'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">text</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 50</span> </span><span class="WHIT">      </span><span class="NAME">description</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">item.find</span><span class="PUNC">(</span><span class="STRN">'annotation'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">text</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 51</span> </span><span class="WHIT">      </span><span class="NAME">mediafiles</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 52</span> </span><span class="WHIT">        </span><span class="NAME">image</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 53</span> </span><span class="WHIT">          </span><span class="STRN">'image'</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 54</span> </span><span class="WHIT">            </span><span class="NAME">path</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">item.find</span><span class="PUNC">(</span><span class="STRN">'image'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">text</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT">
+<span class='line'> 55</span> </span><span class="WHIT">          </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 56</span> </span><span class="WHIT">        </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 57</span> </span><span class="WHIT">        </span><span class="NAME">media</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 58</span> </span><span class="WHIT">          </span><span class="STRN">'media'</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 59</span> </span><span class="WHIT">            </span><span class="NAME">path</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">item.find</span><span class="PUNC">(</span><span class="STRN">'location'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">text</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT">
+<span class='line'> 60</span> </span><span class="WHIT">          </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 61</span> </span><span class="WHIT">        </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 62</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 63</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 64</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 65</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 66</span> </span></pre></body></html>
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/doc/symbols/src/src_osmplayer.parser.xspf.js.html b/public/admin/js/osmplayer/doc/symbols/src/src_osmplayer.parser.xspf.js.html
new file mode 100644
index 0000000000000000000000000000000000000000..cdfdb18c4261d5701d38cb1c85e01c512bfe7b53
--- /dev/null
+++ b/public/admin/js/osmplayer/doc/symbols/src/src_osmplayer.parser.xspf.js.html
@@ -0,0 +1,52 @@
+<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
+	.KEYW {color: #933;}
+	.COMM {color: #bbb; font-style: italic;}
+	.NUMB {color: #393;}
+	.STRN {color: #393;}
+	.REGX {color: #339;}
+	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
+	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/** The osmplayer namespace. */</span><span class="WHIT">
+<span class='line'>  2</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">osmplayer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">osmplayer</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>  3</span> 
+<span class='line'>  4</span> </span><span class="COMM">/** The parser object. */</span><span class="WHIT">
+<span class='line'>  5</span> </span><span class="NAME">osmplayer.parser</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">osmplayer.parser</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>  6</span> 
+<span class='line'>  7</span> </span><span class="COMM">/**
+<span class='line'>  8</span>  * The xsfp parser object.
+<span class='line'>  9</span>  *
+<span class='line'> 10</span>  * @return {object} The xsfp parser.
+<span class='line'> 11</span>  **/</span><span class="WHIT">
+<span class='line'> 12</span> </span><span class="NAME">osmplayer.parser.xsfp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 13</span> 
+<span class='line'> 14</span> </span><span class="WHIT">  </span><span class="COMM">// The priority for this parser.</span><span class="WHIT">
+<span class='line'> 15</span> </span><span class="WHIT">  </span><span class="NAME">priority</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 16</span> 
+<span class='line'> 17</span> </span><span class="WHIT">  </span><span class="COMM">// Return if this is a valid youtube feed.</span><span class="WHIT">
+<span class='line'> 18</span> </span><span class="WHIT">  </span><span class="NAME">valid</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">feed</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 19</span> </span><span class="WHIT">    </span><span class="NAME">feed</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">feed.replace</span><span class="PUNC">(</span><span class="REGX">/(.*)\??(.*)/i</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'$1'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 20</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">feed.match</span><span class="PUNC">(</span><span class="REGX">/\.xml$/i</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 21</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 22</span> 
+<span class='line'> 23</span> </span><span class="WHIT">  </span><span class="COMM">// Returns the type of request to make.</span><span class="WHIT">
+<span class='line'> 24</span> </span><span class="WHIT">  </span><span class="NAME">getType</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">feed</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 25</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="STRN">'xml'</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 26</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 27</span> 
+<span class='line'> 28</span> </span><span class="WHIT">  </span><span class="COMM">// Returns the feed provided the start and numItems.</span><span class="WHIT">
+<span class='line'> 29</span> </span><span class="WHIT">  </span><span class="NAME">getFeed</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">feed</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">start</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">numItems</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 30</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">feed</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 31</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 32</span> 
+<span class='line'> 33</span> </span><span class="WHIT">  </span><span class="COMM">// Parse the feed.</span><span class="WHIT">
+<span class='line'> 34</span> </span><span class="WHIT">  </span><span class="NAME">parse</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">data</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 35</span> </span><span class="WHIT">    </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">playlist</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 36</span> </span><span class="WHIT">      </span><span class="NAME">total_rows</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 37</span> </span><span class="WHIT">      </span><span class="NAME">nodes</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="WHIT">
+<span class='line'> 38</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 39</span> </span><span class="WHIT">    </span><span class="NAME">jQuery</span><span class="PUNC">(</span><span class="STRN">'playlist trackList track'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">each</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">index</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 40</span> </span><span class="WHIT">      </span><span class="NAME">osmplayer.parser.rss.addRSSItem</span><span class="PUNC">(</span><span class="NAME">playlist</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">jQuery</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 41</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 42</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">playlist</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 43</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 44</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 45</span> </span></pre></body></html>
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/doc/symbols/src/src_osmplayer.parser.youtube.js.html b/public/admin/js/osmplayer/doc/symbols/src/src_osmplayer.parser.youtube.js.html
new file mode 100644
index 0000000000000000000000000000000000000000..a1a99bbe662f747f559fcadc4915b7251bad209d
--- /dev/null
+++ b/public/admin/js/osmplayer/doc/symbols/src/src_osmplayer.parser.youtube.js.html
@@ -0,0 +1,81 @@
+<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
+	.KEYW {color: #933;}
+	.COMM {color: #bbb; font-style: italic;}
+	.NUMB {color: #393;}
+	.STRN {color: #393;}
+	.REGX {color: #339;}
+	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
+	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/** The osmplayer namespace. */</span><span class="WHIT">
+<span class='line'>  2</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">osmplayer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">osmplayer</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>  3</span> 
+<span class='line'>  4</span> </span><span class="COMM">/** The parser object. */</span><span class="WHIT">
+<span class='line'>  5</span> </span><span class="NAME">osmplayer.parser</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">osmplayer.parser</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>  6</span> 
+<span class='line'>  7</span> </span><span class="COMM">/**
+<span class='line'>  8</span>  * The youtube parser object.
+<span class='line'>  9</span>  *
+<span class='line'> 10</span>  * @return {object} The youtube parser.
+<span class='line'> 11</span>  **/</span><span class="WHIT">
+<span class='line'> 12</span> </span><span class="NAME">osmplayer.parser.youtube</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 13</span> 
+<span class='line'> 14</span> </span><span class="WHIT">  </span><span class="COMM">// The priority for this parser.</span><span class="WHIT">
+<span class='line'> 15</span> </span><span class="WHIT">  </span><span class="NAME">priority</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">10</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 16</span> 
+<span class='line'> 17</span> </span><span class="WHIT">  </span><span class="COMM">// Return if this is a valid youtube feed.</span><span class="WHIT">
+<span class='line'> 18</span> </span><span class="WHIT">  </span><span class="NAME">valid</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">feed</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 19</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">feed.search</span><span class="PUNC">(</span><span class="REGX">/^http(s)?\:\/\/gdata\.youtube\.com/i</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 20</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 21</span> 
+<span class='line'> 22</span> </span><span class="WHIT">  </span><span class="COMM">// Returns the type of request to make.</span><span class="WHIT">
+<span class='line'> 23</span> </span><span class="WHIT">  </span><span class="NAME">getType</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">feed</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 24</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="STRN">'jsonp'</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 25</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 26</span> 
+<span class='line'> 27</span> </span><span class="WHIT">  </span><span class="COMM">// Returns the feed provided the start and numItems.</span><span class="WHIT">
+<span class='line'> 28</span> </span><span class="WHIT">  </span><span class="NAME">getFeed</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">feed</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">start</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">numItems</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 29</span> </span><span class="WHIT">    </span><span class="NAME">feed</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">feed.replace</span><span class="PUNC">(</span><span class="REGX">/(.*)\??(.*)/i</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'$1'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 30</span> </span><span class="WHIT">    </span><span class="NAME">feed</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'?start-index='</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">start</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 31</span> </span><span class="WHIT">    </span><span class="NAME">feed</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'&max-results='</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">numItems</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 32</span> </span><span class="WHIT">    </span><span class="NAME">feed</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'&v=2&alt=jsonc'</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 33</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">feed</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 34</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 35</span> 
+<span class='line'> 36</span> </span><span class="WHIT">  </span><span class="COMM">// Parse the feed.</span><span class="WHIT">
+<span class='line'> 37</span> </span><span class="WHIT">  </span><span class="NAME">parse</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">data</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 38</span> </span><span class="WHIT">    </span><span class="NAME">data</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">data.data</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 39</span> </span><span class="WHIT">    </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">playlist</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 40</span> </span><span class="WHIT">      </span><span class="NAME">total_rows</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">data.totalItems</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 41</span> </span><span class="WHIT">      </span><span class="NAME">nodes</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="WHIT">
+<span class='line'> 42</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 43</span> 
+<span class='line'> 44</span> </span><span class="WHIT">    </span><span class="COMM">// Iterate through the items and parse it.</span><span class="WHIT">
+<span class='line'> 45</span> </span><span class="WHIT">    </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">index</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">data.items</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 46</span> </span><span class="WHIT">      </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">data.items.hasOwnProperty</span><span class="PUNC">(</span><span class="NAME">index</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 47</span> </span><span class="WHIT">        </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">item</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">data.items</span><span class="PUNC">[</span><span class="NAME">index</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 48</span> </span><span class="WHIT">        </span><span class="NAME">playlist.nodes.push</span><span class="PUNC">(</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 49</span> </span><span class="WHIT">          </span><span class="NAME">title</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">item.title</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 50</span> </span><span class="WHIT">          </span><span class="NAME">description</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">item.description</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 51</span> </span><span class="WHIT">          </span><span class="NAME">mediafiles</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 52</span> </span><span class="WHIT">            </span><span class="NAME">image</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 53</span> </span><span class="WHIT">              </span><span class="STRN">'thumbnail'</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 54</span> </span><span class="WHIT">                </span><span class="NAME">path</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">item.thumbnail.sqDefault</span><span class="WHIT">
+<span class='line'> 55</span> </span><span class="WHIT">              </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 56</span> </span><span class="WHIT">              </span><span class="STRN">'image'</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 57</span> </span><span class="WHIT">                </span><span class="NAME">path</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">item.thumbnail.hqDefault</span><span class="WHIT">
+<span class='line'> 58</span> </span><span class="WHIT">              </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 59</span> </span><span class="WHIT">            </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 60</span> </span><span class="WHIT">            </span><span class="NAME">media</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 61</span> </span><span class="WHIT">              </span><span class="STRN">'media'</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 62</span> </span><span class="WHIT">                </span><span class="NAME">player</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'youtube'</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 63</span> </span><span class="WHIT">                </span><span class="NAME">id</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">item.id</span><span class="WHIT">
+<span class='line'> 64</span> </span><span class="WHIT">              </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 65</span> </span><span class="WHIT">            </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 66</span> </span><span class="WHIT">          </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 67</span> </span><span class="WHIT">        </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 68</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 69</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 70</span> 
+<span class='line'> 71</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">playlist</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 72</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 73</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 74</span> </span></pre></body></html>
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/doc/symbols/src/src_osmplayer.playlist.js.html b/public/admin/js/osmplayer/doc/symbols/src/src_osmplayer.playlist.js.html
new file mode 100644
index 0000000000000000000000000000000000000000..2129dedd25ca646e999f8c8fc91b5e6c46f44113
--- /dev/null
+++ b/public/admin/js/osmplayer/doc/symbols/src/src_osmplayer.playlist.js.html
@@ -0,0 +1,558 @@
+<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
+	.KEYW {color: #933;}
+	.COMM {color: #bbb; font-style: italic;}
+	.NUMB {color: #393;}
+	.STRN {color: #393;}
+	.REGX {color: #339;}
+	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
+	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/** The osmplayer namespace. */</span><span class="WHIT">
+<span class='line'>  2</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">osmplayer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">osmplayer</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>  3</span> 
+<span class='line'>  4</span> </span><span class="COMM">/**
+<span class='line'>  5</span>  * @constructor
+<span class='line'>  6</span>  * @extends minplayer.display
+<span class='line'>  7</span>  * @class This class creates the playlist functionality for the minplayer.
+<span class='line'>  8</span>  *
+<span class='line'>  9</span>  * @param {object} context The jQuery context.
+<span class='line'> 10</span>  * @param {object} options This components options.
+<span class='line'> 11</span>  */</span><span class="WHIT">
+<span class='line'> 12</span> </span><span class="NAME">osmplayer.playlist</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">context</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 13</span> 
+<span class='line'> 14</span> </span><span class="WHIT">  </span><span class="COMM">// Derive from display</span><span class="WHIT">
+<span class='line'> 15</span> </span><span class="WHIT">  </span><span class="NAME">minplayer.display.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'playlist'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">context</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 16</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 17</span> 
+<span class='line'> 18</span> </span><span class="COMM">/** Derive from minplayer.display. */</span><span class="WHIT">
+<span class='line'> 19</span> </span><span class="NAME">osmplayer.playlist.prototype</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">minplayer.display</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 20</span> 
+<span class='line'> 21</span> </span><span class="COMM">/** Reset the constructor. */</span><span class="WHIT">
+<span class='line'> 22</span> </span><span class="NAME">osmplayer.playlist.prototype.constructor</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">osmplayer.playlist</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 23</span> 
+<span class='line'> 24</span> </span><span class="COMM">/**
+<span class='line'> 25</span>  * @see minplayer.plugin#construct
+<span class='line'> 26</span>  */</span><span class="WHIT">
+<span class='line'> 27</span> </span><span class="NAME">osmplayer.playlist.prototype.construct</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 28</span> 
+<span class='line'> 29</span> </span><span class="WHIT">  </span><span class="COMM">// Make sure we provide default options...</span><span class="WHIT">
+<span class='line'> 30</span> </span><span class="WHIT">  </span><span class="NAME">this.options</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">jQuery.extend</span><span class="PUNC">(</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 31</span> </span><span class="WHIT">    </span><span class="NAME">vertical</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 32</span> </span><span class="WHIT">    </span><span class="NAME">playlist</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 33</span> </span><span class="WHIT">    </span><span class="NAME">pageLimit</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">10</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 34</span> </span><span class="WHIT">    </span><span class="NAME">autoNext</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 35</span> </span><span class="WHIT">    </span><span class="NAME">shuffle</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 36</span> </span><span class="WHIT">    </span><span class="NAME">loop</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 37</span> </span><span class="WHIT">    </span><span class="NAME">hysteresis</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">40</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 38</span> </span><span class="WHIT">    </span><span class="NAME">scrollSpeed</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">20</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 39</span> </span><span class="WHIT">    </span><span class="NAME">scrollMode</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'auto'</span><span class="WHIT">
+<span class='line'> 40</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.options</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 41</span> 
+<span class='line'> 42</span> </span><span class="WHIT">  </span><span class="COMM">// Call the minplayer plugin constructor.</span><span class="WHIT">
+<span class='line'> 43</span> </span><span class="WHIT">  </span><span class="NAME">minplayer.display.prototype.construct.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 44</span> 
+<span class='line'> 45</span> </span><span class="WHIT">  </span><span class="COMM">/** The nodes within this playlist. */</span><span class="WHIT">
+<span class='line'> 46</span> </span><span class="WHIT">  </span><span class="NAME">this.nodes</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 47</span> 
+<span class='line'> 48</span> </span><span class="WHIT">  </span><span class="COMM">// Current page.</span><span class="WHIT">
+<span class='line'> 49</span> </span><span class="WHIT">  </span><span class="NAME">this.page</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 50</span> 
+<span class='line'> 51</span> </span><span class="WHIT">  </span><span class="COMM">// The total amount of nodes.</span><span class="WHIT">
+<span class='line'> 52</span> </span><span class="WHIT">  </span><span class="NAME">this.totalItems</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 53</span> 
+<span class='line'> 54</span> </span><span class="WHIT">  </span><span class="COMM">// The current loaded item index.</span><span class="WHIT">
+<span class='line'> 55</span> </span><span class="WHIT">  </span><span class="NAME">this.currentItem</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 56</span> 
+<span class='line'> 57</span> </span><span class="WHIT">  </span><span class="COMM">// The play playqueue.</span><span class="WHIT">
+<span class='line'> 58</span> </span><span class="WHIT">  </span><span class="NAME">this.playqueue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 59</span> 
+<span class='line'> 60</span> </span><span class="WHIT">  </span><span class="COMM">// The playqueue position.</span><span class="WHIT">
+<span class='line'> 61</span> </span><span class="WHIT">  </span><span class="NAME">this.playqueuepos</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 62</span> 
+<span class='line'> 63</span> </span><span class="WHIT">  </span><span class="COMM">// The current playlist.</span><span class="WHIT">
+<span class='line'> 64</span> </span><span class="WHIT">  </span><span class="NAME">this.playlist</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.options.playlist</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 65</span> 
+<span class='line'> 66</span> </span><span class="WHIT">  </span><span class="COMM">// Create the scroll bar.</span><span class="WHIT">
+<span class='line'> 67</span> </span><span class="WHIT">  </span><span class="NAME">this.scroll</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 68</span> 
+<span class='line'> 69</span> </span><span class="WHIT">  </span><span class="COMM">// Create our orientation variable.</span><span class="WHIT">
+<span class='line'> 70</span> </span><span class="WHIT">  </span><span class="NAME">this.orient</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 71</span> </span><span class="WHIT">    </span><span class="NAME">pos</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">this.options.vertical</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="STRN">'y'</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'x'</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 72</span> </span><span class="WHIT">    </span><span class="NAME">pagePos</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">this.options.vertical</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="STRN">'pageY'</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'pageX'</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 73</span> </span><span class="WHIT">    </span><span class="NAME">offset</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">this.options.vertical</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="STRN">'top'</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'left'</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 74</span> </span><span class="WHIT">    </span><span class="NAME">wrapperSize</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">this.options.vertical</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="STRN">'wrapperH'</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'wrapperW'</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 75</span> </span><span class="WHIT">    </span><span class="NAME">minScroll</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">this.options.vertical</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="STRN">'minScrollY'</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'minScrollX'</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 76</span> </span><span class="WHIT">    </span><span class="NAME">maxScroll</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">this.options.vertical</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="STRN">'maxScrollY'</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'maxScrollX'</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 77</span> </span><span class="WHIT">    </span><span class="NAME">size</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">this.options.vertical</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="STRN">'height'</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'width'</span><span class="WHIT">
+<span class='line'> 78</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 79</span> 
+<span class='line'> 80</span> </span><span class="WHIT">  </span><span class="COMM">// Create the pager.</span><span class="WHIT">
+<span class='line'> 81</span> </span><span class="WHIT">  </span><span class="NAME">this.pager</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.create</span><span class="PUNC">(</span><span class="STRN">'pager'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'osmplayer'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 82</span> </span><span class="WHIT">  </span><span class="NAME">this.pager.bind</span><span class="PUNC">(</span><span class="STRN">'nextPage'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">playlist</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 83</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">event</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 84</span> </span><span class="WHIT">      </span><span class="NAME">playlist.nextPage</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 85</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 86</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 87</span> </span><span class="WHIT">  </span><span class="NAME">this.pager.bind</span><span class="PUNC">(</span><span class="STRN">'prevPage'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">playlist</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 88</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">event</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 89</span> </span><span class="WHIT">      </span><span class="NAME">playlist.prevPage</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 90</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 91</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 92</span> 
+<span class='line'> 93</span> </span><span class="WHIT">  </span><span class="COMM">// Load the "next" item.</span><span class="WHIT">
+<span class='line'> 94</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.next</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 95</span> 
+<span class='line'> 96</span> </span><span class="WHIT">    </span><span class="COMM">// Get the media.</span><span class="WHIT">
+<span class='line'> 97</span> </span><span class="WHIT">    </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.options.autoNext</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 98</span> </span><span class="WHIT">      </span><span class="NAME">this.get</span><span class="PUNC">(</span><span class="STRN">'media'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">media</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 99</span> </span><span class="WHIT">        </span><span class="NAME">media.bind</span><span class="PUNC">(</span><span class="STRN">'ended'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">playlist</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>100</span> </span><span class="WHIT">          </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">event</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>101</span> </span><span class="WHIT">            </span><span class="NAME">media.options.autoplay</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>102</span> </span><span class="WHIT">            </span><span class="NAME">playlist.next</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>103</span> </span><span class="WHIT">          </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>104</span> </span><span class="WHIT">        </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>105</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>106</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>107</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>108</span> 
+<span class='line'>109</span> </span><span class="WHIT">  </span><span class="COMM">// Say that we are ready.</span><span class="WHIT">
+<span class='line'>110</span> </span><span class="WHIT">  </span><span class="NAME">this.ready</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>111</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>112</span> 
+<span class='line'>113</span> </span><span class="COMM">/**
+<span class='line'>114</span>  * Wrapper around the scroll scrollTo method.
+<span class='line'>115</span>  *
+<span class='line'>116</span>  * @param {number} pos The position you would like to set the list.
+<span class='line'>117</span>  * @param {boolean} relative If this is a relative position change.
+<span class='line'>118</span>  */</span><span class="WHIT">
+<span class='line'>119</span> </span><span class="NAME">osmplayer.playlist.prototype.scrollTo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">pos</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">relative</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>120</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.scroll</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>121</span> </span><span class="WHIT">    </span><span class="NAME">this.scroll.options.hideScrollbar</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>122</span> </span><span class="WHIT">    </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.options.vertical</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>123</span> </span><span class="WHIT">      </span><span class="NAME">this.scroll.scrollTo</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pos</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">relative</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>124</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>125</span> </span><span class="WHIT">    </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>126</span> </span><span class="WHIT">      </span><span class="NAME">this.scroll.scrollTo</span><span class="PUNC">(</span><span class="NAME">pos</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">relative</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>127</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>128</span> </span><span class="WHIT">    </span><span class="NAME">this.scroll.options.hideScrollbar</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>129</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>130</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>131</span> 
+<span class='line'>132</span> </span><span class="COMM">/**
+<span class='line'>133</span>  * Refresh the scrollbar.
+<span class='line'>134</span>  */</span><span class="WHIT">
+<span class='line'>135</span> </span><span class="NAME">osmplayer.playlist.prototype.refreshScroll</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>136</span> 
+<span class='line'>137</span> </span><span class="WHIT">  </span><span class="COMM">// Make sure that our window has the addEventListener to keep IE happy.</span><span class="WHIT">
+<span class='line'>138</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">window.addEventListener</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>139</span> </span><span class="WHIT">    </span><span class="NAME">setTimeout</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">playlist</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>140</span> </span><span class="WHIT">      </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>141</span> </span><span class="WHIT">        </span><span class="NAME">playlist.refreshScroll.call</span><span class="PUNC">(</span><span class="NAME">playlist</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>142</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>143</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">200</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>144</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>145</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>146</span> 
+<span class='line'>147</span> </span><span class="WHIT">  </span><span class="COMM">// Check the size of the playlist.</span><span class="WHIT">
+<span class='line'>148</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">list</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.elements.list</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>149</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">scroll</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.elements.scroll</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>150</span> 
+<span class='line'>151</span> </span><span class="WHIT">  </span><span class="COMM">// Check to see if we should add a scroll bar functionality.</span><span class="WHIT">
+<span class='line'>152</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.scroll</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT">
+<span class='line'>153</span> </span><span class="WHIT">      </span><span class="PUNC">(</span><span class="NAME">list.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT">
+<span class='line'>154</span> </span><span class="WHIT">      </span><span class="PUNC">(</span><span class="NAME">scroll.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT">
+<span class='line'>155</span> </span><span class="WHIT">      </span><span class="PUNC">(</span><span class="NAME">list</span><span class="PUNC">[</span><span class="NAME">this.orient.size</span><span class="PUNC">]</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NAME">scroll</span><span class="PUNC">[</span><span class="NAME">this.orient.size</span><span class="PUNC">]</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>156</span> 
+<span class='line'>157</span> </span><span class="WHIT">    </span><span class="COMM">// Setup the iScroll component.</span><span class="WHIT">
+<span class='line'>158</span> </span><span class="WHIT">    </span><span class="NAME">this.scroll</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">iScroll</span><span class="PUNC">(</span><span class="NAME">this.elements.scroll.eq</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>159</span> </span><span class="WHIT">      </span><span class="NAME">hScroll</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">this.options.vertical</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>160</span> </span><span class="WHIT">      </span><span class="NAME">hScrollbar</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">this.options.vertical</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>161</span> </span><span class="WHIT">      </span><span class="NAME">vScroll</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">this.options.vertical</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>162</span> </span><span class="WHIT">      </span><span class="NAME">vScrollbar</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">this.options.vertical</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>163</span> </span><span class="WHIT">      </span><span class="NAME">hideScrollbar</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="WHIT">
+<span class='line'>164</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>165</span> 
+<span class='line'>166</span> </span><span class="WHIT">    </span><span class="COMM">// Use autoScroll for non-touch devices.</span><span class="WHIT">
+<span class='line'>167</span> </span><span class="WHIT">    </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">this.options.scrollMode</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">'auto'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">minplayer.hasTouch</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>168</span> 
+<span class='line'>169</span> </span><span class="WHIT">      </span><span class="COMM">// Bind to the mouse events for autoscrolling.</span><span class="WHIT">
+<span class='line'>170</span> </span><span class="WHIT">      </span><span class="NAME">this.elements.list.bind</span><span class="PUNC">(</span><span class="STRN">'mousemove'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">playlist</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>171</span> </span><span class="WHIT">        </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">event</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>172</span> </span><span class="WHIT">          </span><span class="NAME">event.preventDefault</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>173</span> </span><span class="WHIT">          </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">offset</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">playlist.display.offset</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">[</span><span class="NAME">playlist.orient.offset</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>174</span> </span><span class="WHIT">          </span><span class="NAME">playlist.mousePos</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">event</span><span class="PUNC">[</span><span class="NAME">playlist.orient.pagePos</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>175</span> </span><span class="WHIT">          </span><span class="NAME">playlist.mousePos</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">offset</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>176</span> </span><span class="WHIT">        </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>177</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="STRN">'mouseenter'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">playlist</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>178</span> </span><span class="WHIT">        </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">event</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>179</span> </span><span class="WHIT">          </span><span class="NAME">event.preventDefault</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>180</span> </span><span class="WHIT">          </span><span class="NAME">playlist.scrolling</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>181</span> </span><span class="WHIT">          </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">setScroll</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>182</span> </span><span class="WHIT">            </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">playlist.scrolling</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>183</span> </span><span class="WHIT">              </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">scrollSize</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">playlist.scroll</span><span class="PUNC">[</span><span class="NAME">playlist.orient.wrapperSize</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>184</span> </span><span class="WHIT">              </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">scrollMid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">scrollSize</span><span class="WHIT"> </span><span class="PUNC">/</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>185</span> </span><span class="WHIT">              </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">delta</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">playlist.mousePos</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">scrollMid</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>186</span> </span><span class="WHIT">              </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">Math.abs</span><span class="PUNC">(</span><span class="NAME">delta</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NAME">playlist.options.hysteresis</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>187</span> </span><span class="WHIT">                </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">hyst</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">playlist.options.hysteresis</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>188</span> </span><span class="WHIT">                </span><span class="NAME">hyst</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">delta</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>189</span> </span><span class="WHIT">                </span><span class="NAME">delta</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">playlist.options.scrollSpeed</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">delta</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">hyst</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>190</span> </span><span class="WHIT">                </span><span class="NAME">delta</span><span class="WHIT"> </span><span class="PUNC">/</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">scrollMid</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>191</span> </span><span class="WHIT">                </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pos</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">playlist.scroll</span><span class="PUNC">[</span><span class="NAME">playlist.orient.pos</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">delta</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>192</span> </span><span class="WHIT">                </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">min</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">playlist.scroll</span><span class="PUNC">[</span><span class="NAME">playlist.orient.minScroll</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>193</span> </span><span class="WHIT">                </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">max</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">playlist.scroll</span><span class="PUNC">[</span><span class="NAME">playlist.orient.maxScroll</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>194</span> </span><span class="WHIT">                </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">pos</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NAME">min</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>195</span> </span><span class="WHIT">                  </span><span class="NAME">playlist.scrollTo</span><span class="PUNC">(</span><span class="NAME">min</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>196</span> </span><span class="WHIT">                </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>197</span> </span><span class="WHIT">                </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">pos</span><span class="WHIT"> </span><span class="PUNC">&lt;=</span><span class="WHIT"> </span><span class="NAME">max</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>198</span> </span><span class="WHIT">                  </span><span class="NAME">playlist.scrollTo</span><span class="PUNC">(</span><span class="NAME">max</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>199</span> </span><span class="WHIT">                </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>200</span> </span><span class="WHIT">                </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>201</span> </span><span class="WHIT">                  </span><span class="NAME">playlist.scrollTo</span><span class="PUNC">(</span><span class="NAME">delta</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>202</span> </span><span class="WHIT">                </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>203</span> </span><span class="WHIT">              </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>204</span> 
+<span class='line'>205</span> </span><span class="WHIT">              </span><span class="COMM">// Set timeout to try again.</span><span class="WHIT">
+<span class='line'>206</span> </span><span class="WHIT">              </span><span class="NAME">setTimeout</span><span class="PUNC">(</span><span class="NAME">setScroll</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">30</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>207</span> </span><span class="WHIT">            </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>208</span> </span><span class="WHIT">          </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>209</span> </span><span class="WHIT">          </span><span class="NAME">setScroll</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>210</span> </span><span class="WHIT">        </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>211</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="STRN">'mouseleave'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">playlist</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>212</span> </span><span class="WHIT">        </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">event</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>213</span> </span><span class="WHIT">          </span><span class="NAME">event.preventDefault</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>214</span> </span><span class="WHIT">          </span><span class="NAME">playlist.scrolling</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>215</span> </span><span class="WHIT">        </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>216</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>217</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>218</span> 
+<span class='line'>219</span> </span><span class="WHIT">    </span><span class="COMM">// Need to force the width of the list.</span><span class="WHIT">
+<span class='line'>220</span> </span><span class="WHIT">    </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.options.vertical</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>221</span> </span><span class="WHIT">      </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">listSize</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>222</span> </span><span class="WHIT">      </span><span class="NAME">jQuery.each</span><span class="PUNC">(</span><span class="NAME">this.elements.list.children</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>223</span> </span><span class="WHIT">        </span><span class="NAME">listSize</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">jQuery</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">outerWidth</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>224</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>225</span> </span><span class="WHIT">      </span><span class="NAME">this.elements.list.width</span><span class="PUNC">(</span><span class="NAME">listSize</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>226</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>227</span> 
+<span class='line'>228</span> </span><span class="WHIT">    </span><span class="NAME">this.scroll.refresh</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>229</span> </span><span class="WHIT">    </span><span class="NAME">this.scroll.scrollTo</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">200</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>230</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>231</span> </span><span class="WHIT">  </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.scroll</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>232</span> 
+<span class='line'>233</span> </span><span class="WHIT">    </span><span class="COMM">// Disable the scroll bar.</span><span class="WHIT">
+<span class='line'>234</span> </span><span class="WHIT">    </span><span class="NAME">this.scroll.disable</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>235</span> </span><span class="WHIT">    </span><span class="NAME">this.elements.list</span><span class="WHIT">
+<span class='line'>236</span> </span><span class="WHIT">      </span><span class="PUNC">.</span><span class="NAME">unbind</span><span class="PUNC">(</span><span class="STRN">'mousemove'</span><span class="PUNC">)</span><span class="WHIT">
+<span class='line'>237</span> </span><span class="WHIT">      </span><span class="PUNC">.</span><span class="NAME">unbind</span><span class="PUNC">(</span><span class="STRN">'mouseenter'</span><span class="PUNC">)</span><span class="WHIT">
+<span class='line'>238</span> </span><span class="WHIT">      </span><span class="PUNC">.</span><span class="NAME">unbind</span><span class="PUNC">(</span><span class="STRN">'mouseleave'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>239</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>240</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>241</span> 
+<span class='line'>242</span> </span><span class="COMM">/**
+<span class='line'>243</span>  * Sets the playlist.
+<span class='line'>244</span>  *
+<span class='line'>245</span>  * @param {object} playlist The playlist object.
+<span class='line'>246</span>  * @param {integer} loadIndex The index of the item to load.
+<span class='line'>247</span>  */</span><span class="WHIT">
+<span class='line'>248</span> </span><span class="NAME">osmplayer.playlist.prototype.set</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">playlist</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">loadIndex</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>249</span> 
+<span class='line'>250</span> </span><span class="WHIT">  </span><span class="COMM">// Check to make sure the playlist is an object.</span><span class="WHIT">
+<span class='line'>251</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">playlist</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="STRN">'object'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>252</span> </span><span class="WHIT">    </span><span class="NAME">this.trigger</span><span class="PUNC">(</span><span class="STRN">'error'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'Playlist must be an object to set'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>253</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>254</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>255</span> 
+<span class='line'>256</span> </span><span class="WHIT">  </span><span class="COMM">// Check to make sure the playlist has correct format.</span><span class="WHIT">
+<span class='line'>257</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">playlist.hasOwnProperty</span><span class="PUNC">(</span><span class="STRN">'total_rows'</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>258</span> </span><span class="WHIT">    </span><span class="NAME">this.trigger</span><span class="PUNC">(</span><span class="STRN">'error'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'Unknown playlist format.'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>259</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>260</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>261</span> 
+<span class='line'>262</span> </span><span class="WHIT">  </span><span class="COMM">// Make sure the playlist has some rows.</span><span class="WHIT">
+<span class='line'>263</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">playlist.total_rows</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">playlist.nodes.length</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>264</span> 
+<span class='line'>265</span> </span><span class="WHIT">    </span><span class="COMM">// Set the total rows.</span><span class="WHIT">
+<span class='line'>266</span> </span><span class="WHIT">    </span><span class="NAME">this.totalItems</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">playlist.total_rows</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>267</span> </span><span class="WHIT">    </span><span class="NAME">this.currentItem</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>268</span> 
+<span class='line'>269</span> </span><span class="WHIT">    </span><span class="COMM">// Show or hide the next page if there is or is not a next page.</span><span class="WHIT">
+<span class='line'>270</span> </span><span class="WHIT">    </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">this.page</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NAME">this.options.pageLimit</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NAME">this.totalItems</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>271</span> </span><span class="WHIT">      </span><span class="NAME">this.pager.nextPage.hide</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>272</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>273</span> </span><span class="WHIT">    </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>274</span> </span><span class="WHIT">      </span><span class="NAME">this.pager.nextPage.show</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>275</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>276</span> 
+<span class='line'>277</span> </span><span class="WHIT">    </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">teaser</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>278</span> </span><span class="WHIT">    </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">numNodes</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">playlist.nodes.length</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>279</span> </span><span class="WHIT">    </span><span class="NAME">this.elements.list.empty</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>280</span> </span><span class="WHIT">    </span><span class="NAME">this.nodes</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>281</span> 
+<span class='line'>282</span> </span><span class="WHIT">    </span><span class="COMM">// Iterate through all the nodes.</span><span class="WHIT">
+<span class='line'>283</span> </span><span class="WHIT">    </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">index</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">index</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">numNodes</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">index</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>284</span> 
+<span class='line'>285</span> </span><span class="WHIT">      </span><span class="COMM">// Create the teaser object.</span><span class="WHIT">
+<span class='line'>286</span> </span><span class="WHIT">      </span><span class="NAME">teaser</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.create</span><span class="PUNC">(</span><span class="STRN">'teaser'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'osmplayer'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.elements.list</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>287</span> </span><span class="WHIT">      </span><span class="NAME">teaser.setNode</span><span class="PUNC">(</span><span class="NAME">playlist.nodes</span><span class="PUNC">[</span><span class="NAME">index</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>288</span> </span><span class="WHIT">      </span><span class="NAME">teaser.bind</span><span class="PUNC">(</span><span class="STRN">'nodeLoad'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">playlist</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">index</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>289</span> </span><span class="WHIT">        </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">event</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>290</span> </span><span class="WHIT">          </span><span class="NAME">playlist.loadItem</span><span class="PUNC">(</span><span class="NAME">index</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>291</span> </span><span class="WHIT">        </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>292</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">index</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>293</span> 
+<span class='line'>294</span> </span><span class="WHIT">      </span><span class="COMM">// Add this to our nodes array.</span><span class="WHIT">
+<span class='line'>295</span> </span><span class="WHIT">      </span><span class="NAME">this.nodes.push</span><span class="PUNC">(</span><span class="NAME">teaser</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>296</span> 
+<span class='line'>297</span> </span><span class="WHIT">      </span><span class="COMM">// If the index is equal to the loadIndex.</span><span class="WHIT">
+<span class='line'>298</span> </span><span class="WHIT">      </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">loadIndex</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="NAME">index</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>299</span> </span><span class="WHIT">        </span><span class="NAME">this.loadItem</span><span class="PUNC">(</span><span class="NAME">index</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>300</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>301</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>302</span> 
+<span class='line'>303</span> </span><span class="WHIT">    </span><span class="COMM">// Refresh the sizes.</span><span class="WHIT">
+<span class='line'>304</span> </span><span class="WHIT">    </span><span class="NAME">this.refreshScroll</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>305</span> 
+<span class='line'>306</span> </span><span class="WHIT">    </span><span class="COMM">// Trigger that the playlist has loaded.</span><span class="WHIT">
+<span class='line'>307</span> </span><span class="WHIT">    </span><span class="NAME">this.trigger</span><span class="PUNC">(</span><span class="STRN">'playlistLoad'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">playlist</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>308</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>309</span> 
+<span class='line'>310</span> </span><span class="WHIT">  </span><span class="COMM">// Show that we are no longer busy.</span><span class="WHIT">
+<span class='line'>311</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.elements.playlist_busy</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>312</span> </span><span class="WHIT">    </span><span class="NAME">this.elements.playlist_busy.hide</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>313</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>314</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>315</span> 
+<span class='line'>316</span> </span><span class="COMM">/**
+<span class='line'>317</span>  * Stores the current playlist state in the playqueue.
+<span class='line'>318</span>  */</span><span class="WHIT">
+<span class='line'>319</span> </span><span class="NAME">osmplayer.playlist.prototype.setQueue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>320</span> 
+<span class='line'>321</span> </span><span class="WHIT">  </span><span class="COMM">// Add this item to the playqueue.</span><span class="WHIT">
+<span class='line'>322</span> </span><span class="WHIT">  </span><span class="NAME">this.playqueue.push</span><span class="PUNC">(</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>323</span> </span><span class="WHIT">    </span><span class="NAME">page</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">this.page</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>324</span> </span><span class="WHIT">    </span><span class="NAME">item</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">this.currentItem</span><span class="WHIT">
+<span class='line'>325</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>326</span> 
+<span class='line'>327</span> </span><span class="WHIT">  </span><span class="COMM">// Store the current playqueue position.</span><span class="WHIT">
+<span class='line'>328</span> </span><span class="WHIT">  </span><span class="NAME">this.playqueuepos</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.playqueue.length</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>329</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>330</span> 
+<span class='line'>331</span> </span><span class="COMM">/**
+<span class='line'>332</span>  * Loads the next item.
+<span class='line'>333</span>  *
+<span class='line'>334</span>  * @return {boolean} TRUE if loaded, FALSE if not.
+<span class='line'>335</span>  */</span><span class="WHIT">
+<span class='line'>336</span> </span><span class="NAME">osmplayer.playlist.prototype.next</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>337</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">item</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">page</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.page</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>338</span> 
+<span class='line'>339</span> </span><span class="WHIT">  </span><span class="COMM">// See if we are at the front of the playqueue.</span><span class="WHIT">
+<span class='line'>340</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.playqueuepos</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NAME">this.playqueue.length</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>341</span> 
+<span class='line'>342</span> </span><span class="WHIT">    </span><span class="COMM">// If this is shuffle, then load a random item.</span><span class="WHIT">
+<span class='line'>343</span> </span><span class="WHIT">    </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.options.shuffle</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>344</span> </span><span class="WHIT">      </span><span class="NAME">item</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Math.floor</span><span class="PUNC">(</span><span class="NAME">Math.random</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NAME">this.totalItems</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>345</span> </span><span class="WHIT">      </span><span class="NAME">page</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Math.floor</span><span class="PUNC">(</span><span class="NAME">item</span><span class="WHIT"> </span><span class="PUNC">/</span><span class="WHIT"> </span><span class="NAME">this.options.pageLimit</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>346</span> </span><span class="WHIT">      </span><span class="NAME">item</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">item</span><span class="WHIT"> </span><span class="PUNC">%</span><span class="WHIT"> </span><span class="NAME">this.options.pageLimit</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>347</span> </span><span class="WHIT">      </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.load</span><span class="PUNC">(</span><span class="NAME">page</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">item</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>348</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>349</span> </span><span class="WHIT">    </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>350</span> 
+<span class='line'>351</span> </span><span class="WHIT">      </span><span class="COMM">// Otherwise, increment the current item by one.</span><span class="WHIT">
+<span class='line'>352</span> </span><span class="WHIT">      </span><span class="NAME">item</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.currentItem</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>353</span> </span><span class="WHIT">      </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">item</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NAME">this.nodes.length</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>354</span> </span><span class="WHIT">        </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.load</span><span class="PUNC">(</span><span class="NAME">page</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>355</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>356</span> </span><span class="WHIT">      </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>357</span> </span><span class="WHIT">        </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.loadItem</span><span class="PUNC">(</span><span class="NAME">item</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>358</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>359</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>360</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>361</span> </span><span class="WHIT">  </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>362</span> 
+<span class='line'>363</span> </span><span class="WHIT">    </span><span class="COMM">// Load the next item in the playqueue.</span><span class="WHIT">
+<span class='line'>364</span> </span><span class="WHIT">    </span><span class="NAME">this.playqueuepos</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.playqueuepos</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>365</span> </span><span class="WHIT">    </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">currentQueue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.playqueue</span><span class="PUNC">[</span><span class="NAME">this.playqueuepos</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>366</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.load</span><span class="PUNC">(</span><span class="NAME">currentQueue.page</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">currentQueue.item</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>367</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>368</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>369</span> 
+<span class='line'>370</span> </span><span class="COMM">/**
+<span class='line'>371</span>  * Loads the previous item.
+<span class='line'>372</span>  *
+<span class='line'>373</span>  * @return {boolean} TRUE if loaded, FALSE if not.
+<span class='line'>374</span>  */</span><span class="WHIT">
+<span class='line'>375</span> </span><span class="NAME">osmplayer.playlist.prototype.prev</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>376</span> 
+<span class='line'>377</span> </span><span class="WHIT">  </span><span class="COMM">// Move back into the playqueue.</span><span class="WHIT">
+<span class='line'>378</span> </span><span class="WHIT">  </span><span class="NAME">this.playqueuepos</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.playqueuepos</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>379</span> </span><span class="WHIT">  </span><span class="NAME">this.playqueuepos</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.playqueuepos</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">this.playqueuepos</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>380</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">currentQueue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.playqueue</span><span class="PUNC">[</span><span class="NAME">this.playqueuepos</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>381</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">currentQueue</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>382</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.load</span><span class="PUNC">(</span><span class="NAME">currentQueue.page</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">currentQueue.item</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>383</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>384</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>385</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>386</span> 
+<span class='line'>387</span> </span><span class="COMM">/**
+<span class='line'>388</span>  * Loads a playlist node.
+<span class='line'>389</span>  *
+<span class='line'>390</span>  * @param {number} index The index of the item you would like to load.
+<span class='line'>391</span>  * @return {boolean} TRUE if loaded, FALSE if not.
+<span class='line'>392</span>  */</span><span class="WHIT">
+<span class='line'>393</span> </span><span class="NAME">osmplayer.playlist.prototype.loadItem</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">index</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>394</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">index</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">this.nodes.length</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>395</span> </span><span class="WHIT">    </span><span class="NAME">this.setQueue</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>396</span> 
+<span class='line'>397</span> </span><span class="WHIT">    </span><span class="COMM">// Get the teaser at the current index and deselect it.</span><span class="WHIT">
+<span class='line'>398</span> </span><span class="WHIT">    </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">teaser</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.nodes</span><span class="PUNC">[</span><span class="NAME">this.currentItem</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>399</span> </span><span class="WHIT">    </span><span class="NAME">teaser.select</span><span class="PUNC">(</span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>400</span> </span><span class="WHIT">    </span><span class="NAME">this.currentItem</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">index</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>401</span> 
+<span class='line'>402</span> </span><span class="WHIT">    </span><span class="COMM">// Get the new teaser and select it.</span><span class="WHIT">
+<span class='line'>403</span> </span><span class="WHIT">    </span><span class="NAME">teaser</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.nodes</span><span class="PUNC">[</span><span class="NAME">index</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>404</span> </span><span class="WHIT">    </span><span class="NAME">teaser.select</span><span class="PUNC">(</span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>405</span> </span><span class="WHIT">    </span><span class="NAME">this.trigger</span><span class="PUNC">(</span><span class="STRN">'nodeLoad'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">teaser.node</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>406</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>407</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>408</span> 
+<span class='line'>409</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>410</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>411</span> 
+<span class='line'>412</span> </span><span class="COMM">/**
+<span class='line'>413</span>  * Loads the next page.
+<span class='line'>414</span>  *
+<span class='line'>415</span>  * @param {integer} loadIndex The index of the item to load.
+<span class='line'>416</span>  * @return {boolean} TRUE if loaded, FALSE if not.
+<span class='line'>417</span>  */</span><span class="WHIT">
+<span class='line'>418</span> </span><span class="NAME">osmplayer.playlist.prototype.nextPage</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">loadIndex</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>419</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.load</span><span class="PUNC">(</span><span class="NAME">this.page</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">loadIndex</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>420</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>421</span> 
+<span class='line'>422</span> </span><span class="COMM">/**
+<span class='line'>423</span>  * Loads the previous page.
+<span class='line'>424</span>  *
+<span class='line'>425</span>  * @param {integer} loadIndex The index of the item to load.
+<span class='line'>426</span>  * @return {boolean} TRUE if loaded, FALSE if not.
+<span class='line'>427</span>  */</span><span class="WHIT">
+<span class='line'>428</span> </span><span class="NAME">osmplayer.playlist.prototype.prevPage</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">loadIndex</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>429</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.load</span><span class="PUNC">(</span><span class="NAME">this.page</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">loadIndex</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>430</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>431</span> 
+<span class='line'>432</span> </span><span class="COMM">/**
+<span class='line'>433</span>  * Loads a playlist.
+<span class='line'>434</span>  *
+<span class='line'>435</span>  * @param {integer} page The page to load.
+<span class='line'>436</span>  * @param {integer} loadIndex The index of the item to load.
+<span class='line'>437</span>  * @return {boolean} TRUE if loaded, FALSE if not.
+<span class='line'>438</span>  */</span><span class="WHIT">
+<span class='line'>439</span> </span><span class="NAME">osmplayer.playlist.prototype.load</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">page</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">loadIndex</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>440</span> 
+<span class='line'>441</span> </span><span class="WHIT">  </span><span class="COMM">// If the playlist and pages are the same, then no need to load.</span><span class="WHIT">
+<span class='line'>442</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">this.playlist</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">this.options.playlist</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">page</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">this.page</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>443</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.loadItem</span><span class="PUNC">(</span><span class="NAME">loadIndex</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>444</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>445</span> 
+<span class='line'>446</span> </span><span class="WHIT">  </span><span class="COMM">// Set the new playlist.</span><span class="WHIT">
+<span class='line'>447</span> </span><span class="WHIT">  </span><span class="NAME">this.playlist</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.options.playlist</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>448</span> 
+<span class='line'>449</span> </span><span class="WHIT">  </span><span class="COMM">// Return if there aren't any playlists to play.</span><span class="WHIT">
+<span class='line'>450</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.playlist</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>451</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>452</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>453</span> 
+<span class='line'>454</span> </span><span class="WHIT">  </span><span class="COMM">// Determine if we need to loop.</span><span class="WHIT">
+<span class='line'>455</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">maxPages</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Math.floor</span><span class="PUNC">(</span><span class="NAME">this.totalItems</span><span class="WHIT"> </span><span class="PUNC">/</span><span class="WHIT"> </span><span class="NAME">this.options.pageLimit</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>456</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">page</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NAME">maxPages</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>457</span> </span><span class="WHIT">    </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.options.loop</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>458</span> </span><span class="WHIT">      </span><span class="NAME">page</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>459</span> </span><span class="WHIT">      </span><span class="NAME">loadIndex</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>460</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>461</span> </span><span class="WHIT">    </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>462</span> </span><span class="WHIT">      </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>463</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>464</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>465</span> 
+<span class='line'>466</span> </span><span class="WHIT">  </span><span class="COMM">// Say that we are busy.</span><span class="WHIT">
+<span class='line'>467</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.elements.playlist_busy</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>468</span> </span><span class="WHIT">    </span><span class="NAME">this.elements.playlist_busy.show</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>469</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>470</span> 
+<span class='line'>471</span> </span><span class="WHIT">  </span><span class="COMM">// Normalize the page.</span><span class="WHIT">
+<span class='line'>472</span> </span><span class="WHIT">  </span><span class="NAME">page</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">page</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>473</span> </span><span class="WHIT">  </span><span class="NAME">page</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">page</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">page</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>474</span> 
+<span class='line'>475</span> </span><span class="WHIT">  </span><span class="COMM">// Set the queue.</span><span class="WHIT">
+<span class='line'>476</span> </span><span class="WHIT">  </span><span class="NAME">this.setQueue</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>477</span> 
+<span class='line'>478</span> </span><span class="WHIT">  </span><span class="COMM">// Set the new page.</span><span class="WHIT">
+<span class='line'>479</span> </span><span class="WHIT">  </span><span class="NAME">this.page</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">page</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>480</span> 
+<span class='line'>481</span> </span><span class="WHIT">  </span><span class="COMM">// Hide or show the page based on if we are on the first page.</span><span class="WHIT">
+<span class='line'>482</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.page</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>483</span> </span><span class="WHIT">    </span><span class="NAME">this.pager.prevPage.hide</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>484</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>485</span> </span><span class="WHIT">  </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>486</span> </span><span class="WHIT">    </span><span class="NAME">this.pager.prevPage.show</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>487</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>488</span> 
+<span class='line'>489</span> </span><span class="WHIT">  </span><span class="COMM">// If the playlist is an object, then go ahead and set it.</span><span class="WHIT">
+<span class='line'>490</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">this.playlist</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">'object'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>491</span> </span><span class="WHIT">    </span><span class="NAME">this.set</span><span class="PUNC">(</span><span class="NAME">this.playlist</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">loadIndex</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>492</span> </span><span class="WHIT">    </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.playlist.endpoint</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>493</span> </span><span class="WHIT">      </span><span class="NAME">this.playlist</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.options.playlist</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.playlist.endpoint</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>494</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>495</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>496</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>497</span> 
+<span class='line'>498</span> </span><span class="WHIT">  </span><span class="COMM">// Get the highest priority parser.</span><span class="WHIT">
+<span class='line'>499</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">parser</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">osmplayer.parser</span><span class="PUNC">[</span><span class="STRN">'default'</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>500</span> </span><span class="WHIT">  </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">name</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">osmplayer.parser</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>501</span> </span><span class="WHIT">    </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">osmplayer.parser.hasOwnProperty</span><span class="PUNC">(</span><span class="NAME">name</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>502</span> </span><span class="WHIT">      </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">osmplayer.parser</span><span class="PUNC">[</span><span class="NAME">name</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">valid</span><span class="PUNC">(</span><span class="NAME">this.playlist</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>503</span> </span><span class="WHIT">        </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">osmplayer.parser</span><span class="PUNC">[</span><span class="NAME">name</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">priority</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NAME">parser.priority</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>504</span> </span><span class="WHIT">          </span><span class="NAME">parser</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">osmplayer.parser</span><span class="PUNC">[</span><span class="NAME">name</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>505</span> </span><span class="WHIT">        </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>506</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>507</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>508</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>509</span> 
+<span class='line'>510</span> </span><span class="WHIT">  </span><span class="COMM">// The start index.</span><span class="WHIT">
+<span class='line'>511</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">start</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.page</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NAME">this.options.pageLimit</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>512</span> 
+<span class='line'>513</span> </span><span class="WHIT">  </span><span class="COMM">// Get the feed from the parser.</span><span class="WHIT">
+<span class='line'>514</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">feed</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">parser.getFeed</span><span class="PUNC">(</span><span class="WHIT">
+<span class='line'>515</span> </span><span class="WHIT">    </span><span class="NAME">this.playlist</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>516</span> </span><span class="WHIT">    </span><span class="NAME">start</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>517</span> </span><span class="WHIT">    </span><span class="NAME">this.options.pageLimit</span><span class="WHIT">
+<span class='line'>518</span> </span><span class="WHIT">  </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>519</span> 
+<span class='line'>520</span> </span><span class="WHIT">  </span><span class="COMM">// Build our request.</span><span class="WHIT">
+<span class='line'>521</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">request</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>522</span> </span><span class="WHIT">    </span><span class="NAME">type</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'GET'</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>523</span> </span><span class="WHIT">    </span><span class="NAME">url</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">feed</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>524</span> </span><span class="WHIT">    </span><span class="NAME">success</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">playlist</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>525</span> </span><span class="WHIT">      </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">data</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>526</span> </span><span class="WHIT">        </span><span class="NAME">playlist.set</span><span class="PUNC">(</span><span class="NAME">parser.parse</span><span class="PUNC">(</span><span class="NAME">data</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">loadIndex</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>527</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>528</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>529</span> </span><span class="WHIT">    </span><span class="NAME">error</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">playlist</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>530</span> </span><span class="WHIT">      </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">XMLHttpRequest</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">textStatus</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">errorThrown</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>531</span> </span><span class="WHIT">        </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">playlist.elements.playlist_busy</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>532</span> </span><span class="WHIT">          </span><span class="NAME">playlist.elements.playlist_busy.hide</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>533</span> </span><span class="WHIT">        </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>534</span> </span><span class="WHIT">        </span><span class="NAME">playlist.trigger</span><span class="PUNC">(</span><span class="STRN">'error'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">textStatus</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>535</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>536</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="WHIT">
+<span class='line'>537</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>538</span> 
+<span class='line'>539</span> </span><span class="WHIT">  </span><span class="COMM">// Set the data if applicable.</span><span class="WHIT">
+<span class='line'>540</span> </span><span class="WHIT">  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dataType</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>541</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">dataType</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">parser.getType</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>542</span> </span><span class="WHIT">    </span><span class="NAME">request.dataType</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">dataType</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>543</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>544</span> 
+<span class='line'>545</span> </span><span class="WHIT">  </span><span class="COMM">// Perform an ajax callback.</span><span class="WHIT">
+<span class='line'>546</span> </span><span class="WHIT">  </span><span class="NAME">jQuery.ajax</span><span class="PUNC">(</span><span class="NAME">request</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>547</span> 
+<span class='line'>548</span> </span><span class="WHIT">  </span><span class="COMM">// Return that we did something.</span><span class="WHIT">
+<span class='line'>549</span> </span><span class="WHIT">  </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>550</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>551</span> </span></pre></body></html>
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/doc/symbols/src/src_osmplayer.scroll.js.html b/public/admin/js/osmplayer/doc/symbols/src/src_osmplayer.scroll.js.html
new file mode 100644
index 0000000000000000000000000000000000000000..99ffddccefeea21d1b934f15f21303b3109947e9
--- /dev/null
+++ b/public/admin/js/osmplayer/doc/symbols/src/src_osmplayer.scroll.js.html
@@ -0,0 +1,291 @@
+<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
+	.KEYW {color: #933;}
+	.COMM {color: #bbb; font-style: italic;}
+	.NUMB {color: #393;}
+	.STRN {color: #393;}
+	.REGX {color: #339;}
+	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
+	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/** The osmplayer namespace. */</span><span class="WHIT">
+<span class='line'>  2</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">osmplayer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">osmplayer</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>  3</span> 
+<span class='line'>  4</span> </span><span class="COMM">/**
+<span class='line'>  5</span>  * @constructor
+<span class='line'>  6</span>  * @extends minplayer.display
+<span class='line'>  7</span>  * @class This class provides the scroll functionality for the playlists.
+<span class='line'>  8</span>  *
+<span class='line'>  9</span>  * We can calculate how the scrollbar controls the playlist using the
+<span class='line'> 10</span>  * following diagram / equations.
+<span class='line'> 11</span>  *  ___ ____________
+<span class='line'> 12</span>  *  |  |            |\
+<span class='line'> 13</span>  *  |  |    list    | \
+<span class='line'> 14</span>  *  |  |            |y \
+<span class='line'> 15</span>  *  |  |            |   \
+<span class='line'> 16</span>  *  |  |____________|    \ _ _____
+<span class='line'> 17</span>  *  |  |            |\    | |    |
+<span class='line'> 18</span>  *  |  |            | \   | |    |
+<span class='line'> 19</span>  *  |  |            |  \  | |x   |
+<span class='line'> 20</span>  *  |  |            |   \ | |    |
+<span class='line'> 21</span>  *  |  |            |    \|_|_   |
+<span class='line'> 22</span>  *  |  |            |     | | |  |
+<span class='line'> 23</span>  *  l  |   window   |     | | h  w
+<span class='line'> 24</span>  *  |  |            |     |_|_|  |
+<span class='line'> 25</span>  *  |  |            |    /| |    |
+<span class='line'> 26</span>  *  |  |            |   / | |    |
+<span class='line'> 27</span>  *  |  |            |  / v| |    |
+<span class='line'> 28</span>  *  |  |            | /   | |    |
+<span class='line'> 29</span>  *  |  |____________|/    |_|____|
+<span class='line'> 30</span>  *  |  |            |    /
+<span class='line'> 31</span>  *  |  |            |   /
+<span class='line'> 32</span>  *  |  |            |  /
+<span class='line'> 33</span>  *  |  |            | /
+<span class='line'> 34</span>  *  |__|____________|/
+<span class='line'> 35</span>  *
+<span class='line'> 36</span>  *  l - The list height.
+<span class='line'> 37</span>  *  h - Handle Bar height.
+<span class='line'> 38</span>  *  w - Window height.
+<span class='line'> 39</span>  *  x - The distance from top of window to the top of the handle.
+<span class='line'> 40</span>  *  y - The disatnce from the top of the list to the top of the window.
+<span class='line'> 41</span>  *  v - The distance from bottom of window to the bottom of the handle.
+<span class='line'> 42</span>  *
+<span class='line'> 43</span>  *  jQuery UI provides "v".  We already know "l", "h", "w".  We can then
+<span class='line'> 44</span>  *  calculate the relationship between the scroll bar handle position to the
+<span class='line'> 45</span>  *  list position using the following equations.
+<span class='line'> 46</span>  *
+<span class='line'> 47</span>  *  x = (w - (v + h))
+<span class='line'> 48</span>  *  y = ((l - w)/(w - h)) * x
+<span class='line'> 49</span>  *
+<span class='line'> 50</span>  *   -- or --
+<span class='line'> 51</span>  *
+<span class='line'> 52</span>  *  y = ((l - w)/(w - h)) * (w - (v + h))
+<span class='line'> 53</span>  *
+<span class='line'> 54</span>  *  We can statically calculate the ((l - w)/(w - h)) as a ratio and use
+<span class='line'> 55</span>  *  that to speed up calculations as follows.
+<span class='line'> 56</span>  *
+<span class='line'> 57</span>  *  ratio = ((l - w)/(w - h));
+<span class='line'> 58</span>  *
+<span class='line'> 59</span>  *  So, our translation equations are as follows...
+<span class='line'> 60</span>  *
+<span class='line'> 61</span>  *    y = ratio * (w - (v + h))
+<span class='line'> 62</span>  *    v = w - (h + (y / ratio))
+<span class='line'> 63</span>  *
+<span class='line'> 64</span>  *
+<span class='line'> 65</span>  * @param {object} context The jQuery context.
+<span class='line'> 66</span>  * @param {object} options This components options.
+<span class='line'> 67</span>  */</span><span class="WHIT">
+<span class='line'> 68</span> </span><span class="NAME">osmplayer.scroll</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">context</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 69</span> 
+<span class='line'> 70</span> </span><span class="WHIT">  </span><span class="COMM">// Derive from display</span><span class="WHIT">
+<span class='line'> 71</span> </span><span class="WHIT">  </span><span class="NAME">minplayer.display.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'scroll'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">context</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 72</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 73</span> 
+<span class='line'> 74</span> </span><span class="COMM">/** Derive from minplayer.display. */</span><span class="WHIT">
+<span class='line'> 75</span> </span><span class="NAME">osmplayer.scroll.prototype</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">minplayer.display</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 76</span> 
+<span class='line'> 77</span> </span><span class="COMM">/** Reset the constructor. */</span><span class="WHIT">
+<span class='line'> 78</span> </span><span class="NAME">osmplayer.scroll.prototype.constructor</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">osmplayer.scroll</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 79</span> 
+<span class='line'> 80</span> </span><span class="COMM">/**
+<span class='line'> 81</span>  * @see minplayer.plugin#construct
+<span class='line'> 82</span>  */</span><span class="WHIT">
+<span class='line'> 83</span> </span><span class="NAME">osmplayer.scroll.prototype.construct</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 84</span> 
+<span class='line'> 85</span> </span><span class="WHIT">  </span><span class="COMM">// Make sure we provide default options...</span><span class="WHIT">
+<span class='line'> 86</span> </span><span class="WHIT">  </span><span class="NAME">this.options</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">jQuery.extend</span><span class="PUNC">(</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 87</span> </span><span class="WHIT">    </span><span class="NAME">vertical</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 88</span> </span><span class="WHIT">    </span><span class="NAME">hysteresis</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">40</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 89</span> </span><span class="WHIT">    </span><span class="NAME">scrollSpeed</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">20</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 90</span> </span><span class="WHIT">    </span><span class="NAME">scrollMode</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'auto'</span><span class="WHIT">
+<span class='line'> 91</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.options</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 92</span> 
+<span class='line'> 93</span> </span><span class="WHIT">  </span><span class="COMM">// Call the minplayer plugin constructor.</span><span class="WHIT">
+<span class='line'> 94</span> </span><span class="WHIT">  </span><span class="NAME">minplayer.display.prototype.construct.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 95</span> 
+<span class='line'> 96</span> </span><span class="WHIT">  </span><span class="COMM">// Make this component orientation agnostic.</span><span class="WHIT">
+<span class='line'> 97</span> </span><span class="WHIT">  </span><span class="NAME">this.pos</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.options.vertical</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="STRN">'pageY'</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'pageX'</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 98</span> </span><span class="WHIT">  </span><span class="NAME">this.offset</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.options.vertical</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="STRN">'top'</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'left'</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 99</span> </span><span class="WHIT">  </span><span class="NAME">this.margin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.options.vertical</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="STRN">'marginTop'</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'marginLeft'</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>100</span> </span><span class="WHIT">  </span><span class="NAME">this.size</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.options.vertical</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="STRN">'height'</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'width'</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>101</span> </span><span class="WHIT">  </span><span class="NAME">this.outer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.options.vertical</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="STRN">'outerHeight'</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'outerWidth'</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>102</span> 
+<span class='line'>103</span> </span><span class="WHIT">  </span><span class="NAME">this.getMousePos</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">event</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>104</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">event</span><span class="PUNC">[</span><span class="NAME">this.pos</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">this.display.offset</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">[</span><span class="NAME">this.offset</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>105</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>106</span> </span><span class="WHIT">  </span><span class="NAME">this.getPos</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">handlePos</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>107</span> </span><span class="WHIT">    </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.options.vertical</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>108</span> </span><span class="WHIT">      </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.ratio</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.scrollSize</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">handlePos</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.handleSize</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>109</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>110</span> </span><span class="WHIT">    </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>111</span> </span><span class="WHIT">      </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.ratio</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NAME">handlePos</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>112</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>113</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>114</span> </span><span class="WHIT">  </span><span class="NAME">this.getHandlePos</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">pos</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>115</span> </span><span class="WHIT">    </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.options.vertical</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>116</span> </span><span class="WHIT">      </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.scrollSize</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.handleSize</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">pos</span><span class="WHIT"> </span><span class="PUNC">/</span><span class="WHIT"> </span><span class="NAME">this.ratio</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>117</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>118</span> </span><span class="WHIT">    </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>119</span> </span><span class="WHIT">      </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">pos</span><span class="WHIT"> </span><span class="PUNC">/</span><span class="WHIT"> </span><span class="NAME">this.ratio</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>120</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>121</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>122</span> 
+<span class='line'>123</span> </span><span class="WHIT">  </span><span class="COMM">// If they have a scroll bar.</span><span class="WHIT">
+<span class='line'>124</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.elements.scroll</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>125</span> 
+<span class='line'>126</span> </span><span class="WHIT">    </span><span class="COMM">// Get the values of our variables.</span><span class="WHIT">
+<span class='line'>127</span> </span><span class="WHIT">    </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">scroll</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.elements.scroll</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>128</span> </span><span class="WHIT">    </span><span class="NAME">this.handleSize</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>129</span> </span><span class="WHIT">    </span><span class="NAME">this.scrollTop</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>130</span> </span><span class="WHIT">    </span><span class="NAME">this.mousePos</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>131</span> 
+<span class='line'>132</span> </span><span class="WHIT">    </span><span class="COMM">// Refresh the scroll.</span><span class="WHIT">
+<span class='line'>133</span> </span><span class="WHIT">    </span><span class="NAME">this.refresh</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>134</span> 
+<span class='line'>135</span> </span><span class="WHIT">    </span><span class="COMM">// Create the scroll bar slider control.</span><span class="WHIT">
+<span class='line'>136</span> </span><span class="WHIT">    </span><span class="NAME">this.scroll</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">scroll.slider</span><span class="PUNC">(</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>137</span> </span><span class="WHIT">      </span><span class="NAME">orientation</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">this.options.vertical</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="STRN">'vertical'</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'horizontal'</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>138</span> </span><span class="WHIT">      </span><span class="NAME">max</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">this.scrollSize</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>139</span> </span><span class="WHIT">      </span><span class="NAME">create</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">scroll</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">vertical</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>140</span> </span><span class="WHIT">        </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">event</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ui</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>141</span> </span><span class="WHIT">          </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">handle</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">jQuery</span><span class="PUNC">(</span><span class="STRN">'.ui-slider-handle'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">event.target</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>142</span> </span><span class="WHIT">          </span><span class="NAME">scroll.handleSize</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">handle</span><span class="PUNC">[</span><span class="NAME">scroll.outer</span><span class="PUNC">]</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>143</span> </span><span class="WHIT">          </span><span class="NAME">scroll.scrollTop</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">scroll.scrollSize</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">scroll.handleSize</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>144</span> </span><span class="WHIT">          </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">initValue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">vertical</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">scroll.scrollTop</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>145</span> </span><span class="WHIT">          </span><span class="NAME">jQuery</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">slider</span><span class="PUNC">(</span><span class="STRN">'option'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'value'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">initValue</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>146</span> </span><span class="WHIT">        </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>147</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.options.vertical</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>148</span> </span><span class="WHIT">      </span><span class="NAME">slide</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">scroll</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">vertical</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>149</span> </span><span class="WHIT">        </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">event</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ui</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>150</span> </span><span class="WHIT">          </span><span class="COMM">// Get the new position.</span><span class="WHIT">
+<span class='line'>151</span> </span><span class="WHIT">          </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pos</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">scroll.getPos</span><span class="PUNC">(</span><span class="NAME">ui.value</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>152</span> 
+<span class='line'>153</span> </span><span class="WHIT">          </span><span class="COMM">// Ensure it doesn't go over the limits.</span><span class="WHIT">
+<span class='line'>154</span> </span><span class="WHIT">          </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">vertical</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">pos</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>155</span> </span><span class="WHIT">            </span><span class="NAME">scroll.scroll.slider</span><span class="PUNC">(</span><span class="STRN">'option'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'value'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">scroll.scrollTop</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>156</span> </span><span class="WHIT">            </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>157</span> </span><span class="WHIT">          </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>158</span> </span><span class="WHIT">          </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">vertical</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ui.value</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NAME">scroll.scrollTop</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>159</span> </span><span class="WHIT">            </span><span class="NAME">scroll.scroll.slider</span><span class="PUNC">(</span><span class="STRN">'option'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'value'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">scroll.scrollTop</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>160</span> </span><span class="WHIT">            </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>161</span> </span><span class="WHIT">          </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>162</span> 
+<span class='line'>163</span> </span><span class="WHIT">          </span><span class="COMM">// Set our list position.</span><span class="WHIT">
+<span class='line'>164</span> </span><span class="WHIT">          </span><span class="NAME">scroll.elements.list.css</span><span class="PUNC">(</span><span class="NAME">scroll.margin</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NAME">pos</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'px'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>165</span> </span><span class="WHIT">          </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>166</span> </span><span class="WHIT">        </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>167</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.options.vertical</span><span class="PUNC">)</span><span class="WHIT">
+<span class='line'>168</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>169</span> 
+<span class='line'>170</span> </span><span class="WHIT">    </span><span class="COMM">// If they wish to have auto scroll mode.</span><span class="WHIT">
+<span class='line'>171</span> </span><span class="WHIT">    </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.options.scrollMode</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">'auto'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>172</span> 
+<span class='line'>173</span> </span><span class="WHIT">      </span><span class="COMM">// Bind to the mouse events.</span><span class="WHIT">
+<span class='line'>174</span> </span><span class="WHIT">      </span><span class="NAME">this.elements.list.bind</span><span class="PUNC">(</span><span class="STRN">'mousemove'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">scroll</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>175</span> 
+<span class='line'>176</span> </span><span class="WHIT">        </span><span class="COMM">// Return our event function.</span><span class="WHIT">
+<span class='line'>177</span> </span><span class="WHIT">        </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">event</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>178</span> </span><span class="WHIT">          </span><span class="NAME">event.preventDefault</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>179</span> </span><span class="WHIT">          </span><span class="NAME">scroll.mousePos</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">event</span><span class="PUNC">[</span><span class="NAME">scroll.pos</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>180</span> </span><span class="WHIT">          </span><span class="NAME">scroll.mousePos</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">scroll.display.offset</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">[</span><span class="NAME">scroll.offset</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>181</span> </span><span class="WHIT">        </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>182</span> 
+<span class='line'>183</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="STRN">'mouseenter'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">scroll</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>184</span> 
+<span class='line'>185</span> </span><span class="WHIT">        </span><span class="COMM">// Return our event function.</span><span class="WHIT">
+<span class='line'>186</span> </span><span class="WHIT">        </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">event</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>187</span> </span><span class="WHIT">          </span><span class="NAME">event.preventDefault</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>188</span> </span><span class="WHIT">          </span><span class="NAME">scroll.scrolling</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>189</span> </span><span class="WHIT">          </span><span class="NAME">setTimeout</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">setScroll</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>190</span> </span><span class="WHIT">            </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">scroll.scrolling</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>191</span> 
+<span class='line'>192</span> </span><span class="WHIT">              </span><span class="COMM">// Get the delta.</span><span class="WHIT">
+<span class='line'>193</span> </span><span class="WHIT">              </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">delta</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">scroll.mousePos</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">scroll.scrollMid</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>194</span> 
+<span class='line'>195</span> </span><span class="WHIT">              </span><span class="COMM">// Determine if we are within our hysteresis.</span><span class="WHIT">
+<span class='line'>196</span> </span><span class="WHIT">              </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">Math.abs</span><span class="PUNC">(</span><span class="NAME">delta</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NAME">scroll.options.hysteresis</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>197</span> 
+<span class='line'>198</span> </span><span class="WHIT">                </span><span class="COMM">// Get the hysteresis and delta.</span><span class="WHIT">
+<span class='line'>199</span> </span><span class="WHIT">                </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">hyst</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">scroll.options.hysteresis</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>200</span> </span><span class="WHIT">                </span><span class="NAME">hyst</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">delta</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>201</span> </span><span class="WHIT">                </span><span class="NAME">delta</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">scroll.options.scrollSpeed</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">delta</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">hyst</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>202</span> </span><span class="WHIT">                </span><span class="NAME">delta</span><span class="WHIT"> </span><span class="PUNC">/</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">scroll.scrollMid</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>203</span> 
+<span class='line'>204</span> </span><span class="WHIT">                </span><span class="COMM">// Get the scroll position.</span><span class="WHIT">
+<span class='line'>205</span> </span><span class="WHIT">                </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pos</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">scroll.elements.list.css</span><span class="PUNC">(</span><span class="NAME">scroll.margin</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>206</span> </span><span class="WHIT">                </span><span class="NAME">pos</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">parseFloat</span><span class="PUNC">(</span><span class="NAME">pos</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">delta</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>207</span> </span><span class="WHIT">                </span><span class="NAME">pos</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">pos</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">pos</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>208</span> 
+<span class='line'>209</span> </span><span class="WHIT">                </span><span class="COMM">// Get the maximum top position.</span><span class="WHIT">
+<span class='line'>210</span> </span><span class="WHIT">                </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">top</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NAME">scroll.listSize</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">scroll.scrollSize</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>211</span> </span><span class="WHIT">                </span><span class="NAME">pos</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">pos</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">top</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">top</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">pos</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>212</span> 
+<span class='line'>213</span> </span><span class="WHIT">                </span><span class="COMM">// Set the new scroll position.</span><span class="WHIT">
+<span class='line'>214</span> </span><span class="WHIT">                </span><span class="NAME">scroll.elements.list.css</span><span class="PUNC">(</span><span class="NAME">scroll.margin</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pos</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'px'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>215</span> 
+<span class='line'>216</span> </span><span class="WHIT">                </span><span class="COMM">// Set the scroll position.</span><span class="WHIT">
+<span class='line'>217</span> </span><span class="WHIT">                </span><span class="NAME">pos</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">scroll.getHandlePos</span><span class="PUNC">(</span><span class="PUNC">-</span><span class="NAME">pos</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>218</span> </span><span class="WHIT">                </span><span class="NAME">scroll.scroll.slider</span><span class="PUNC">(</span><span class="STRN">'option'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'value'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pos</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>219</span> </span><span class="WHIT">              </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>220</span> 
+<span class='line'>221</span> </span><span class="WHIT">              </span><span class="COMM">// Set timeout to try again.</span><span class="WHIT">
+<span class='line'>222</span> </span><span class="WHIT">              </span><span class="NAME">setTimeout</span><span class="PUNC">(</span><span class="NAME">setScroll</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">20</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>223</span> </span><span class="WHIT">            </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>224</span> </span><span class="WHIT">          </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">20</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>225</span> </span><span class="WHIT">        </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>226</span> 
+<span class='line'>227</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="STRN">'mouseleave'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">scroll</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>228</span> 
+<span class='line'>229</span> </span><span class="WHIT">        </span><span class="COMM">// Return our event function.</span><span class="WHIT">
+<span class='line'>230</span> </span><span class="WHIT">        </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">event</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>231</span> </span><span class="WHIT">          </span><span class="NAME">event.preventDefault</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>232</span> </span><span class="WHIT">          </span><span class="NAME">scroll.scrolling</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>233</span> </span><span class="WHIT">        </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>234</span> 
+<span class='line'>235</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>236</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>237</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>238</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>239</span> 
+<span class='line'>240</span> </span><span class="COMM">/**
+<span class='line'>241</span>  * Refreshes the scroll list.
+<span class='line'>242</span>  */</span><span class="WHIT">
+<span class='line'>243</span> </span><span class="NAME">osmplayer.scroll.prototype.refresh</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>244</span> 
+<span class='line'>245</span> </span><span class="WHIT">  </span><span class="COMM">// The list size.</span><span class="WHIT">
+<span class='line'>246</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.options.vertical</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>247</span> </span><span class="WHIT">    </span><span class="NAME">this.listSize</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.elements.list.height</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>248</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>249</span> </span><span class="WHIT">  </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>250</span> </span><span class="WHIT">    </span><span class="NAME">this.listSize</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>251</span> </span><span class="WHIT">    </span><span class="NAME">jQuery.each</span><span class="PUNC">(</span><span class="NAME">this.elements.list.children</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">scroll</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>252</span> </span><span class="WHIT">      </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>253</span> </span><span class="WHIT">        </span><span class="NAME">scroll.listSize</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">jQuery</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">[</span><span class="NAME">scroll.outer</span><span class="PUNC">]</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>254</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>255</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>256</span> 
+<span class='line'>257</span> </span><span class="WHIT">    </span><span class="COMM">// Set the list size.</span><span class="WHIT">
+<span class='line'>258</span> </span><span class="WHIT">    </span><span class="NAME">this.elements.list</span><span class="PUNC">[</span><span class="NAME">this.size</span><span class="PUNC">]</span><span class="PUNC">(</span><span class="NAME">this.listSize</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>259</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>260</span> 
+<span class='line'>261</span> </span><span class="WHIT">  </span><span class="COMM">// Refresh the list.</span><span class="WHIT">
+<span class='line'>262</span> </span><span class="WHIT">  </span><span class="NAME">this.onResize</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>263</span> 
+<span class='line'>264</span> </span><span class="WHIT">  </span><span class="COMM">// Set the scroll position.</span><span class="WHIT">
+<span class='line'>265</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.scroll</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>266</span> </span><span class="WHIT">    </span><span class="NAME">this.elements.list.css</span><span class="PUNC">(</span><span class="NAME">this.margin</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'0px'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>267</span> </span><span class="WHIT">    </span><span class="NAME">this.scroll.slider</span><span class="PUNC">(</span><span class="STRN">'option'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'value'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.getHandlePos</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>268</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>269</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>270</span> 
+<span class='line'>271</span> </span><span class="COMM">/**
+<span class='line'>272</span>  * Refresh all the variables that may change.
+<span class='line'>273</span>  */</span><span class="WHIT">
+<span class='line'>274</span> </span><span class="NAME">osmplayer.scroll.prototype.onResize</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>275</span> </span><span class="WHIT">  </span><span class="NAME">this.scrollSize</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.elements.scroll</span><span class="PUNC">[</span><span class="NAME">this.size</span><span class="PUNC">]</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>276</span> </span><span class="WHIT">  </span><span class="NAME">this.scrollMid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.scrollSize</span><span class="WHIT"> </span><span class="PUNC">/</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>277</span> </span><span class="WHIT">  </span><span class="NAME">this.scrollTop</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.scrollSize</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">this.handleSize</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>278</span> </span><span class="WHIT">  </span><span class="NAME">this.ratio</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.listSize</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">this.scrollSize</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>279</span> </span><span class="WHIT">  </span><span class="NAME">this.ratio</span><span class="WHIT"> </span><span class="PUNC">/</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.scrollSize</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">this.handleSize</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>280</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.scroll</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>281</span> </span><span class="WHIT">    </span><span class="NAME">this.scroll.slider</span><span class="PUNC">(</span><span class="STRN">'option'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'max'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.scrollSize</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>282</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>283</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>284</span> </span></pre></body></html>
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/doc/symbols/src/src_osmplayer.teaser.js.html b/public/admin/js/osmplayer/doc/symbols/src/src_osmplayer.teaser.js.html
new file mode 100644
index 0000000000000000000000000000000000000000..8337d8e979d89f7bfb119a1a530b2b478f12161b
--- /dev/null
+++ b/public/admin/js/osmplayer/doc/symbols/src/src_osmplayer.teaser.js.html
@@ -0,0 +1,76 @@
+<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
+	.KEYW {color: #933;}
+	.COMM {color: #bbb; font-style: italic;}
+	.NUMB {color: #393;}
+	.STRN {color: #393;}
+	.REGX {color: #339;}
+	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
+	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/** The osmplayer namespace. */</span><span class="WHIT">
+<span class='line'>  2</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">osmplayer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">osmplayer</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>  3</span> 
+<span class='line'>  4</span> </span><span class="COMM">/**
+<span class='line'>  5</span>  * @constructor
+<span class='line'>  6</span>  * @extends minplayer.display
+<span class='line'>  7</span>  * @class This class provides teaser functionality.
+<span class='line'>  8</span>  *
+<span class='line'>  9</span>  * @param {object} context The jQuery context.
+<span class='line'> 10</span>  * @param {object} options This components options.
+<span class='line'> 11</span>  */</span><span class="WHIT">
+<span class='line'> 12</span> </span><span class="NAME">osmplayer.teaser</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">context</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 13</span> 
+<span class='line'> 14</span> </span><span class="WHIT">  </span><span class="COMM">/** The preview image. */</span><span class="WHIT">
+<span class='line'> 15</span> </span><span class="WHIT">  </span><span class="NAME">this.preview</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 16</span> 
+<span class='line'> 17</span> </span><span class="WHIT">  </span><span class="COMM">// Derive from display</span><span class="WHIT">
+<span class='line'> 18</span> </span><span class="WHIT">  </span><span class="NAME">minplayer.display.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'teaser'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">context</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 19</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 20</span> 
+<span class='line'> 21</span> </span><span class="COMM">/** Derive from minplayer.display. */</span><span class="WHIT">
+<span class='line'> 22</span> </span><span class="NAME">osmplayer.teaser.prototype</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">minplayer.display</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 23</span> 
+<span class='line'> 24</span> </span><span class="COMM">/** Reset the constructor. */</span><span class="WHIT">
+<span class='line'> 25</span> </span><span class="NAME">osmplayer.teaser.prototype.constructor</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">osmplayer.teaser</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 26</span> 
+<span class='line'> 27</span> </span><span class="COMM">/**
+<span class='line'> 28</span>  * Selects the teaser.
+<span class='line'> 29</span>  *
+<span class='line'> 30</span>  * @param {boolean} selected TRUE if selected, FALSE otherwise.
+<span class='line'> 31</span>  */</span><span class="WHIT">
+<span class='line'> 32</span> </span><span class="NAME">osmplayer.teaser.prototype.select</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">selected</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 33</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 34</span> 
+<span class='line'> 35</span> </span><span class="COMM">/**
+<span class='line'> 36</span>  * Sets the node.
+<span class='line'> 37</span>  *
+<span class='line'> 38</span>  * @param {object} node The node object to set.
+<span class='line'> 39</span>  */</span><span class="WHIT">
+<span class='line'> 40</span> </span><span class="NAME">osmplayer.teaser.prototype.setNode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 41</span> 
+<span class='line'> 42</span> </span><span class="WHIT">  </span><span class="COMM">// Add this to the node info for this teaser.</span><span class="WHIT">
+<span class='line'> 43</span> </span><span class="WHIT">  </span><span class="NAME">this.node</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">node</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 44</span> 
+<span class='line'> 45</span> </span><span class="WHIT">  </span><span class="COMM">// Set the title of the teaser.</span><span class="WHIT">
+<span class='line'> 46</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.elements.title</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 47</span> </span><span class="WHIT">    </span><span class="NAME">this.elements.title.text</span><span class="PUNC">(</span><span class="NAME">node.title</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 48</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 49</span> 
+<span class='line'> 50</span> </span><span class="WHIT">  </span><span class="COMM">// Load the thumbnail image if it exists.</span><span class="WHIT">
+<span class='line'> 51</span> </span><span class="WHIT">  </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">node.mediafiles</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">node.mediafiles.image</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 52</span> </span><span class="WHIT">    </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">image</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">osmplayer.getImage</span><span class="PUNC">(</span><span class="NAME">node.mediafiles</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'thumbnail'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 53</span> </span><span class="WHIT">    </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">image</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 54</span> </span><span class="WHIT">      </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.elements.image</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 55</span> </span><span class="WHIT">        </span><span class="NAME">this.preview</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">minplayer.image</span><span class="PUNC">(</span><span class="NAME">this.elements.image</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 56</span> </span><span class="WHIT">        </span><span class="NAME">this.preview.load</span><span class="PUNC">(</span><span class="NAME">image</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 57</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 58</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 59</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 60</span> 
+<span class='line'> 61</span> </span><span class="WHIT">  </span><span class="COMM">// Bind when they click on this teaser.</span><span class="WHIT">
+<span class='line'> 62</span> </span><span class="WHIT">  </span><span class="NAME">this.display.unbind</span><span class="PUNC">(</span><span class="STRN">'click'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">click</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">teaser</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 63</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">event</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 64</span> </span><span class="WHIT">      </span><span class="NAME">event.preventDefault</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 65</span> </span><span class="WHIT">      </span><span class="NAME">teaser.trigger</span><span class="PUNC">(</span><span class="STRN">'nodeLoad'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">teaser.node</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 66</span> </span><span class="WHIT">    </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 67</span> </span><span class="WHIT">  </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 68</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 69</span> </span></pre></body></html>
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/index.html b/public/admin/js/osmplayer/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..c2e2f029859eaa14466d44e0c5f2a2815766905a
--- /dev/null
+++ b/public/admin/js/osmplayer/index.html
@@ -0,0 +1,66 @@
+
+<html>
+  <head>
+    <title>Open Standard Media (OSM) Player: PHP Demo</title>
+    <script type='text/javascript' src="https://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.js"></script>
+    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.js"></script>
+
+    <!-- Many more themes to chose from... go to http://jqueryui.com/themeroller! -->
+    <link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/dark-hive/jquery-ui.css">
+
+    <!-- The compressed osmplayer script. -->
+    <!--<script type="text/javascript" src="bin/osmplayer.compressed.js"></script> -->
+    <script type="text/javascript" src="minplayer/src/minplayer.compatibility.js"></script>
+    <script type="text/javascript" src="minplayer/src/minplayer.flags.js"></script>
+    <script type="text/javascript" src="minplayer/src/minplayer.async.js"></script>
+    <script type="text/javascript" src="minplayer/src/minplayer.plugin.js"></script>
+    <script type="text/javascript" src="minplayer/src/minplayer.display.js"></script>
+    <script type="text/javascript" src="minplayer/src/minplayer.js"></script>
+    <script type="text/javascript" src="minplayer/src/minplayer.image.js"></script>
+    <script type="text/javascript" src="minplayer/src/minplayer.file.js"></script>
+    <script type="text/javascript" src="minplayer/src/minplayer.playLoader.js"></script>
+    <script type="text/javascript" src="minplayer/src/minplayer.players.base.js"></script>
+    <script type="text/javascript" src="minplayer/src/minplayer.players.html5.js"></script>
+    <script type="text/javascript" src="minplayer/src/minplayer.players.flash.js"></script>
+    <script type="text/javascript" src="minplayer/src/minplayer.players.minplayer.js"></script>
+    <script type="text/javascript" src="minplayer/src/minplayer.players.youtube.js"></script>
+    <script type="text/javascript" src="minplayer/src/minplayer.players.vimeo.js"></script>
+    <script type="text/javascript" src="minplayer/src/minplayer.controller.js"></script>
+    <script type="text/javascript" src="src/osmplayer.js"></script>
+    <script type="text/javascript" src="src/osmplayer.parser.default.js"></script>
+    <script type="text/javascript" src="src/osmplayer.parser.youtube.js"></script>
+    <script type="text/javascript" src="src/osmplayer.parser.rss.js"></script>
+    <script type="text/javascript" src="src/osmplayer.parser.asx.js"></script>
+    <script type="text/javascript" src="src/osmplayer.parser.xspf.js"></script>
+    <script type="text/javascript" src="src/osmplayer.playlist.js"></script>
+    <script type="text/javascript" src="src/iscroll/src/iscroll.js"></script>
+    <script type="text/javascript" src="src/osmplayer.pager.js"></script>
+    <script type="text/javascript" src="src/osmplayer.teaser.js"></script>
+
+    <!-- Include the OSM Player template files. -->
+    <link rel="stylesheet" href="templates/default/css/osmplayer_default.css">
+    <script type="text/javascript" src="templates/default/js/osmplayer.default.js"></script>
+    <script type="text/javascript" src="templates/default/js/osmplayer.controller.default.js"></script>
+    <script type="text/javascript" src="templates/default/js/osmplayer.pager.default.js"></script>
+    <script type="text/javascript" src="templates/default/js/osmplayer.playLoader.default.js"></script>
+    <script type="text/javascript" src="templates/default/js/osmplayer.playlist.default.js"></script>
+    <script type="text/javascript" src="templates/default/js/osmplayer.teaser.default.js"></script>
+
+    <!-- Here is how you make it come alive... -->
+    <script type="text/javascript">
+      $(function() {
+        $("#osmplayer").osmplayer({
+          width: '600px',
+          height: '400px',
+          playlist: 'playlist.xml'
+        });
+      });
+    </script>
+  </head>
+  <body>
+    <div id="osmplayer"></div>
+
+    <!-- Or you can get a feed directly from youtube like so... -->
+    <!--<video id="osmplayer" playlist="http://gdata.youtube.com/feeds/api/videos"></video>-->
+  </body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/jquery-ui/Aristo/Aristo.css b/public/admin/js/osmplayer/jquery-ui/Aristo/Aristo.css
new file mode 100644
index 0000000000000000000000000000000000000000..16c2f1aba729237d2f54c9901f2363af036dbc6c
--- /dev/null
+++ b/public/admin/js/osmplayer/jquery-ui/Aristo/Aristo.css
@@ -0,0 +1,735 @@
+/*
+ * jQuery UI CSS Framework 1.8.7
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ */
+
+/* Layout helpers
+----------------------------------*/
+.ui-helper-hidden { display: none; }
+.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
+.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
+.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
+.ui-helper-clearfix { display: inline-block; }
+/* required comment for clearfix to work in Opera \*/
+* html .ui-helper-clearfix { height:1%; }
+.ui-helper-clearfix { display:block; }
+/* end clearfix */
+.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
+
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-disabled { cursor: default !important; }
+
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
+
+
+/*
+ * jQuery UI CSS Framework 1.8.7
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ *
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?ctl=themeroller
+ */
+
+
+/* Component containers
+----------------------------------*/
+.ui-widget { font-family: Arial,sans-serif; font-size: 1.1em; }
+.ui-widget .ui-widget { font-size: 1em; }
+.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Arial,sans-serif; font-size: 1em; }
+.ui-widget-content { border: 1px solid #B6B6B6; background: #ffffff; color: #4F4F4F; }
+.ui-widget-content a { color: #4F4F4F; }
+.ui-widget-header { border: 1px solid #B6B6B6; color: #4F4F4F; font-weight: bold; }
+.ui-widget-header {
+	background: #ededed url(images/bg_fallback.png) 0 0 repeat-x; /* Old browsers */
+		background: -moz-linear-gradient(top, #ededed 0%, #c4c4c4 100%); /* FF3.6+ */
+		background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ededed), color-stop(100%,#c4c4c4)); /* Chrome,Safari4+ */
+		background: -webkit-linear-gradient(top, #ededed 0%,#c4c4c4 100%); /* Chrome10+,Safari5.1+ */
+		background: -o-linear-gradient(top, #ededed 0%,#c4c4c4 100%); /* Opera11.10+ */
+		background: -ms-linear-gradient(top, #ededed 0%,#c4c4c4 100%); /* IE10+ */
+		background: linear-gradient(top, #ededed 0%,#c4c4c4 100%); /* W3C */
+}
+.ui-widget-header a { color: #4F4F4F; }
+
+/* Interaction states
+----------------------------------*/
+.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #B6B6B6; font-weight: normal; color: #4F4F4F; }
+.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { 
+	background: #ededed url(images/bg_fallback.png) 0 0 repeat-x; /* Old browsers */
+		background: -moz-linear-gradient(top, #ededed 0%, #c4c4c4 100%); /* FF3.6+ */
+		background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ededed), color-stop(100%,#c4c4c4)); /* Chrome,Safari4+ */
+		background: -webkit-linear-gradient(top, #ededed 0%,#c4c4c4 100%); /* Chrome10+,Safari5.1+ */
+		background: -o-linear-gradient(top, #ededed 0%,#c4c4c4 100%); /* Opera11.10+ */
+		background: -ms-linear-gradient(top, #ededed 0%,#c4c4c4 100%); /* IE10+ */
+		background: linear-gradient(top, #ededed 0%,#c4c4c4 100%); /* W3C */
+	-webkit-box-shadow: 0 1px 0 rgba(255,255,255,0.6) inset;
+	-moz-box-shadow: 0 1px 0 rgba(255,255,255,0.6) inset;
+	box-shadow: 0 1px 0 rgba(255,255,255,0.6) inset;
+}
+.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #4F4F4F; text-decoration: none; }
+.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #9D9D9D; font-weight: normal; color: #313131; }
+.ui-state-hover a, .ui-state-hover a:hover { color: #313131; text-decoration: none; }
+.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { 
+	outline: none;
+	color: #1c4257; border: 1px solid #7096ab;
+	background: #ededed url(images/bg_fallback.png) 0 -50px repeat-x; /* Old browsers */
+		background: -moz-linear-gradient(top, #b9e0f5 0%, #92bdd6 100%); /* FF3.6+ */
+		background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#b9e0f5), color-stop(100%,#92bdd6)); /* Chrome,Safari4+ */
+		background: -webkit-linear-gradient(top, #b9e0f5 0%,#92bdd6 100%); /* Chrome10+,Safari5.1+ */
+		background: -o-linear-gradient(top, #b9e0f5 0%,#92bdd6 100%); /* Opera11.10+ */
+		background: -ms-linear-gradient(top, #b9e0f5 0%,#92bdd6 100%); /* IE10+ */
+		background: linear-gradient(top, #b9e0f5 0%,#92bdd6 100%); /* W3C */
+	-webkit-box-shadow: none;
+	-moz-box-shadow: none;
+	box-shadow: none;
+}
+.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #313131; text-decoration: none; }
+.ui-widget :active { outline: none; }
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight  { border: 1px solid #d2dbf4; background: #f4f8fd; color: #0d2054; -moz-border-radius: 0 !important; -webkit-border-radius: 0 !important; border-radius: 0 !important; }
+.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
+.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error { border: 1px solid #e2d0d0; background: #fcf0f0; color: #280b0b; -moz-border-radius: 0 !important; -webkit-border-radius: 0 !important; border-radius: 0 !important; }
+.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; }
+.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; }
+.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
+.ui-priority-secondary, .ui-widget-content .ui-priority-secondary,  .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
+.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); }
+.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
+.ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
+.ui-state-default .ui-icon { background-image: url(images/ui-icons_454545_256x240.png); }
+.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
+.ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
+.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
+.ui-state-error .ui-icon, .ui-state-error-text .ui-icon { background: url(images/icon_sprite.png) -16px 0 no-repeat !important; }
+.ui-state-highlight .ui-icon, .ui-state-error .ui-icon { margin-top: -1px; }
+
+/* positioning */
+.ui-icon-carat-1-n { background-position: 0 0; }
+.ui-icon-carat-1-ne { background-position: -16px 0; }
+.ui-icon-carat-1-e { background-position: -32px 0; }
+.ui-icon-carat-1-se { background-position: -48px 0; }
+.ui-icon-carat-1-s { background-position: -64px 0; }
+.ui-icon-carat-1-sw { background-position: -80px 0; }
+.ui-icon-carat-1-w { background-position: -96px 0; }
+.ui-icon-carat-1-nw { background-position: -112px 0; }
+.ui-icon-carat-2-n-s { background-position: -128px 0; }
+.ui-icon-carat-2-e-w { background-position: -144px 0; }
+.ui-icon-triangle-1-n { background-position: 0 -16px; }
+.ui-icon-triangle-1-ne { background-position: -16px -16px; }
+.ui-icon-triangle-1-e { background-position: -32px -16px; }
+.ui-icon-triangle-1-se { background-position: -48px -16px; }
+.ui-icon-triangle-1-s { background-position: -64px -16px; }
+.ui-icon-triangle-1-sw { background-position: -80px -16px; }
+.ui-icon-triangle-1-w { background-position: -96px -16px; }
+.ui-icon-triangle-1-nw { background-position: -112px -16px; }
+.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
+.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
+.ui-icon-arrow-1-n { background-position: 0 -32px; }
+.ui-icon-arrow-1-ne { background-position: -16px -32px; }
+.ui-icon-arrow-1-e { background-position: -32px -32px; }
+.ui-icon-arrow-1-se { background-position: -48px -32px; }
+.ui-icon-arrow-1-s { background-position: -64px -32px; }
+.ui-icon-arrow-1-sw { background-position: -80px -32px; }
+.ui-icon-arrow-1-w { background-position: -96px -32px; }
+.ui-icon-arrow-1-nw { background-position: -112px -32px; }
+.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
+.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
+.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
+.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
+.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
+.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
+.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
+.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
+.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
+.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
+.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
+.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
+.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
+.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
+.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
+.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
+.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
+.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
+.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
+.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
+.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
+.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
+.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
+.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
+.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
+.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
+.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
+.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
+.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
+.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
+.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
+.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
+.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
+.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
+.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
+.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
+.ui-icon-arrow-4 { background-position: 0 -80px; }
+.ui-icon-arrow-4-diag { background-position: -16px -80px; }
+.ui-icon-extlink { background-position: -32px -80px; }
+.ui-icon-newwin { background-position: -48px -80px; }
+.ui-icon-refresh { background-position: -64px -80px; }
+.ui-icon-shuffle { background-position: -80px -80px; }
+.ui-icon-transfer-e-w { background-position: -96px -80px; }
+.ui-icon-transferthick-e-w { background-position: -112px -80px; }
+.ui-icon-folder-collapsed { background-position: 0 -96px; }
+.ui-icon-folder-open { background-position: -16px -96px; }
+.ui-icon-document { background-position: -32px -96px; }
+.ui-icon-document-b { background-position: -48px -96px; }
+.ui-icon-note { background-position: -64px -96px; }
+.ui-icon-mail-closed { background-position: -80px -96px; }
+.ui-icon-mail-open { background-position: -96px -96px; }
+.ui-icon-suitcase { background-position: -112px -96px; }
+.ui-icon-comment { background-position: -128px -96px; }
+.ui-icon-person { background-position: -144px -96px; }
+.ui-icon-print { background-position: -160px -96px; }
+.ui-icon-trash { background-position: -176px -96px; }
+.ui-icon-locked { background-position: -192px -96px; }
+.ui-icon-unlocked { background-position: -208px -96px; }
+.ui-icon-bookmark { background-position: -224px -96px; }
+.ui-icon-tag { background-position: -240px -96px; }
+.ui-icon-home { background-position: 0 -112px; }
+.ui-icon-flag { background-position: -16px -112px; }
+.ui-icon-calendar { background-position: -32px -112px; }
+.ui-icon-cart { background-position: -48px -112px; }
+.ui-icon-pencil { background-position: -64px -112px; }
+.ui-icon-clock { background-position: -80px -112px; }
+.ui-icon-disk { background-position: -96px -112px; }
+.ui-icon-calculator { background-position: -112px -112px; }
+.ui-icon-zoomin { background-position: -128px -112px; }
+.ui-icon-zoomout { background-position: -144px -112px; }
+.ui-icon-search { background-position: -160px -112px; }
+.ui-icon-wrench { background-position: -176px -112px; }
+.ui-icon-gear { background-position: -192px -112px; }
+.ui-icon-heart { background-position: -208px -112px; }
+.ui-icon-star { background-position: -224px -112px; }
+.ui-icon-link { background-position: -240px -112px; }
+.ui-icon-cancel { background-position: 0 -128px; }
+.ui-icon-plus { background-position: -16px -128px; }
+.ui-icon-plusthick { background-position: -32px -128px; }
+.ui-icon-minus { background-position: -48px -128px; }
+.ui-icon-minusthick { background-position: -64px -128px; }
+.ui-icon-close { background-position: -80px -128px; }
+.ui-icon-closethick { background-position: -96px -128px; }
+.ui-icon-key { background-position: -112px -128px; }
+.ui-icon-lightbulb { background-position: -128px -128px; }
+.ui-icon-scissors { background-position: -144px -128px; }
+.ui-icon-clipboard { background-position: -160px -128px; }
+.ui-icon-copy { background-position: -176px -128px; }
+.ui-icon-contact { background-position: -192px -128px; }
+.ui-icon-image { background-position: -208px -128px; }
+.ui-icon-video { background-position: -224px -128px; }
+.ui-icon-script { background-position: -240px -128px; }
+.ui-icon-alert { background-position: 0 -144px; }
+.ui-icon-info { background: url(images/icon_sprite.png) 0 0 no-repeat !important; }
+.ui-icon-notice { background-position: -32px -144px; }
+.ui-icon-help { background-position: -48px -144px; }
+.ui-icon-check { background-position: -64px -144px; }
+.ui-icon-bullet { background-position: -80px -144px; }
+.ui-icon-radio-off { background-position: -96px -144px; }
+.ui-icon-radio-on { background-position: -112px -144px; }
+.ui-icon-pin-w { background-position: -128px -144px; }
+.ui-icon-pin-s { background-position: -144px -144px; }
+.ui-icon-play { background-position: 0 -160px; }
+.ui-icon-pause { background-position: -16px -160px; }
+.ui-icon-seek-next { background-position: -32px -160px; }
+.ui-icon-seek-prev { background-position: -48px -160px; }
+.ui-icon-seek-end { background-position: -64px -160px; }
+.ui-icon-seek-start { background-position: -80px -160px; }
+/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
+.ui-icon-seek-first { background-position: -80px -160px; }
+.ui-icon-stop { background-position: -96px -160px; }
+.ui-icon-eject { background-position: -112px -160px; }
+.ui-icon-volume-off { background-position: -128px -160px; }
+.ui-icon-volume-on { background-position: -144px -160px; }
+.ui-icon-power { background-position: 0 -176px; }
+.ui-icon-signal-diag { background-position: -16px -176px; }
+.ui-icon-signal { background-position: -32px -176px; }
+.ui-icon-battery-0 { background-position: -48px -176px; }
+.ui-icon-battery-1 { background-position: -64px -176px; }
+.ui-icon-battery-2 { background-position: -80px -176px; }
+.ui-icon-battery-3 { background-position: -96px -176px; }
+.ui-icon-circle-plus { background-position: 0 -192px; }
+.ui-icon-circle-minus { background-position: -16px -192px; }
+.ui-icon-circle-close { background-position: -32px -192px; }
+.ui-icon-circle-triangle-e { background-position: -48px -192px; }
+.ui-icon-circle-triangle-s { background-position: -64px -192px; }
+.ui-icon-circle-triangle-w { background-position: -80px -192px; }
+.ui-icon-circle-triangle-n { background-position: -96px -192px; }
+.ui-icon-circle-arrow-e { background-position: -112px -192px; }
+.ui-icon-circle-arrow-s { background-position: -128px -192px; }
+.ui-icon-circle-arrow-w { background-position: -144px -192px; }
+.ui-icon-circle-arrow-n { background-position: -160px -192px; }
+.ui-icon-circle-zoomin { background-position: -176px -192px; }
+.ui-icon-circle-zoomout { background-position: -192px -192px; }
+.ui-icon-circle-check { background-position: -208px -192px; }
+.ui-icon-circlesmall-plus { background-position: 0 -208px; }
+.ui-icon-circlesmall-minus { background-position: -16px -208px; }
+.ui-icon-circlesmall-close { background-position: -32px -208px; }
+.ui-icon-squaresmall-plus { background-position: -48px -208px; }
+.ui-icon-squaresmall-minus { background-position: -64px -208px; }
+.ui-icon-squaresmall-close { background-position: -80px -208px; }
+.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
+.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
+.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
+.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
+.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
+.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Corner radius */
+.ui-corner-tl { -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; border-top-left-radius: 3px; }
+.ui-corner-tr { -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; border-top-right-radius: 3px; }
+.ui-corner-bl { -moz-border-radius-bottomleft: 3px; -webkit-border-bottom-left-radius: 3px; border-bottom-left-radius: 3px; }
+.ui-corner-br { -moz-border-radius-bottomright: 3px; -webkit-border-bottom-right-radius: 3px; border-bottom-right-radius: 3px; }
+.ui-corner-top { -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; border-top-left-radius: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; border-top-right-radius: 3px; }
+.ui-corner-bottom { -moz-border-radius-bottomleft: 3px; -webkit-border-bottom-left-radius: 3px; border-bottom-left-radius: 3px; -moz-border-radius-bottomright: 3px; -webkit-border-bottom-right-radius: 3px; border-bottom-right-radius: 3px; }
+.ui-corner-right {  -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; border-top-right-radius: 3px; -moz-border-radius-bottomright: 3px; -webkit-border-bottom-right-radius: 3px; border-bottom-right-radius: 3px; }
+.ui-corner-left { -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; border-top-left-radius: 3px; -moz-border-radius-bottomleft: 3px; -webkit-border-bottom-left-radius: 3px; border-bottom-left-radius: 3px; }
+.ui-corner-all { -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; }
+
+/* Overlays */
+.ui-widget-overlay { background: #262b33; opacity: .70;filter:Alpha(Opacity=70); }
+.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #000000; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/*
+ * jQuery UI Resizable 1.8.7
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Resizable#theming
+ */
+.ui-resizable { position: relative;}
+.ui-resizable-handle { position: absolute; font-size: 0.1px; z-index: 999; display: block;}
+.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
+.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
+.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
+.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
+.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
+.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
+.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
+.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
+.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/*
+ * jQuery UI Selectable 1.8.7
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Selectable#theming
+ */
+.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }
+/*
+ * jQuery UI Accordion 1.8.7
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Accordion#theming
+ */
+/* IE/Win - Fix animation bug - #4615 */
+.ui-accordion { width: 100%; }
+.ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
+.ui-accordion .ui-accordion-header, .ui-accordion .ui-accordion-content { -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; }
+.ui-accordion .ui-accordion-li-fix { display: inline; }
+.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
+.ui-accordion .ui-accordion-header a { display: block; font-size: 12px; font-weight: bold; padding: .5em .5em .5em .7em; }
+.ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; }
+.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
+.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; }
+.ui-accordion .ui-accordion-content-active { display: block; }/*
+ * jQuery UI Autocomplete 1.8.7
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Autocomplete#theming
+ */
+.ui-autocomplete {
+	position: absolute; cursor: default; z-index: 3;
+		-moz-border-radius: 0; 
+		-webkit-border-radius: 0;
+		border-radius: 0;
+			-moz-box-shadow: 0 1px 5px rgba(0,0,0,0.3);
+			-webkit-box-shadow: 0 1px 5px rgba(0,0,0,0.3);
+			box-shadow: 0 1px 5px rgba(0,0,0,0.3);
+}	
+
+/* workarounds */
+* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
+
+/*
+ * jQuery UI Menu 1.8.7
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Menu#theming
+ */
+.ui-menu {
+	list-style:none;
+	padding: 2px;
+	margin: 0;
+	display:block;
+	float: left;
+}
+.ui-menu .ui-menu {
+	margin-top: -3px;
+}
+.ui-menu .ui-menu-item {
+	margin:0;
+	padding: 0;
+	zoom: 1;
+	float: left;
+	clear: left;
+	width: 100%;
+}
+.ui-menu .ui-menu-item a {
+	text-decoration:none;
+	display:block;
+	padding:.2em .4em;
+	line-height:1.5;
+	zoom:1;
+}
+.ui-menu .ui-menu-item a.ui-state-hover,
+.ui-menu .ui-menu-item a.ui-state-active {
+	font-weight: normal;
+	margin: -1px;
+	background: #5f83b9;
+	color: #FFFFFF;
+	text-shadow: 0px 1px 1px #234386;
+	border-color: #466086;
+		-moz-border-radius: 0; 
+		-webkit-border-radius: 0;
+		border-radius: 0;
+}
+/*
+ * jQuery UI Button 1.8.7
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Button#theming
+ */
+.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; -webkit-user-select: none; -moz-user-select: none; user-select: none; } /* the overflow property removes extra width in IE */
+.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
+button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
+.ui-button-icons-only { width: 3.4em; } 
+button.ui-button-icons-only { width: 3.7em; } 
+
+/* button animation properties */
+.ui-button {
+    -webkit-transition: -webkit-box-shadow 0.25s ease-in-out;
+    -moz-transition: -moz-box-shadow 0.25s ease-in-out;
+    -o-transition: -o-box-shadow 0.25s ease-in-out;
+}
+
+/*states*/
+.ui-button.ui-state-hover { 
+	-moz-box-shadow: 0 0 8px rgba(0, 0, 0, 0.15), 0 1px 0 rgba(255,255,255,0.8) inset; 
+	-webkit-box-shadow: 0 0 8px rgba(0, 0, 0, 0.15), 0 1px 0 rgba(255,255,255,0.8) inset;
+	box-shadow: 0 0 8px rgba(0, 0, 0, 0.15), 0 1px 0 rgba(255,255,255,0.8) inset;
+}
+.ui-button.ui-state-focus {
+	outline: none;
+	color: #1c4257;
+	border-color: #7096ab;
+	background: #ededed url(images/bg_fallback.png) 0 -50px repeat-x; /* Old browsers */
+		background: -moz-linear-gradient(top, #b9e0f5 0%, #92bdd6 100%); /* FF3.6+ */
+		background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#b9e0f5), color-stop(100%,#92bdd6)); /* Chrome,Safari4+ */
+		background: -webkit-linear-gradient(top, #b9e0f5 0%,#92bdd6 100%); /* Chrome10+,Safari5.1+ */
+		background: -o-linear-gradient(top, #b9e0f5 0%,#92bdd6 100%); /* Opera11.10+ */
+		background: -ms-linear-gradient(top, #b9e0f5 0%,#92bdd6 100%); /* IE10+ */
+		background: linear-gradient(top, #b9e0f5 0%,#92bdd6 100%); /* W3C */
+	-moz-box-shadow: 0 0 8px rgba(0, 0, 0, 0.15), 0 1px 0 rgba(255,255,255,0.8) inset; 
+	-webkit-box-shadow: 0 0 8px rgba(0, 0, 0, 0.15), 0 1px 0 rgba(255,255,255,0.8) inset;
+	box-shadow: 0 0 8px rgba(0, 0, 0, 0.15), 0 1px 0 rgba(255,255,255,0.8) inset;
+}
+ 
+/*button text element */
+.ui-button .ui-button-text { display: block; line-height: 1.4; font-size: 14px; font-weight: bold; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.6); }
+.ui-button-text-only .ui-button-text { padding: .4em 1em; }
+.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
+.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
+.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }
+.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }
+/* no icon support for input elements, provide padding by default */
+input.ui-button { font-size: 14px; font-weight: bold; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.6); padding: 0 1em !important; height: 33px; }
+/*remove submit button internal padding in Firefox*/ 
+input.ui-button::-moz-focus-inner { 
+    border: 0;
+    padding: 0;
+}
+/* fix webkits handling of the box model */
+@media screen and (-webkit-min-device-pixel-ratio:0) {
+	input.ui-button {
+		height: 31px !important;
+	}
+}
+
+
+/*button icon element(s) */
+.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
+.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
+.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
+.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
+.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
+
+/*button sets*/
+.ui-buttonset { margin-right: 7px; }
+.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }
+.ui-buttonset .ui-button.ui-state-active { color: #1c4257; border-color: #7096ab; }
+.ui-buttonset .ui-button.ui-state-active {
+	background: #ededed url(images/bg_fallback.png) 0 -50px repeat-x; /* Old browsers */
+		background: -moz-linear-gradient(top, #b9e0f5 0%, #92bdd6 100%); /* FF3.6+ */
+		background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#b9e0f5), color-stop(100%,#92bdd6)); /* Chrome,Safari4+ */
+		background: -webkit-linear-gradient(top, #b9e0f5 0%,#92bdd6 100%); /* Chrome10+,Safari5.1+ */
+		background: -o-linear-gradient(top, #b9e0f5 0%,#92bdd6 100%); /* Opera11.10+ */
+		background: -ms-linear-gradient(top, #b9e0f5 0%,#92bdd6 100%); /* IE10+ */
+		background: linear-gradient(top, #b9e0f5 0%,#92bdd6 100%); /* W3C */
+	-webkit-box-shadow: none;
+	-moz-box-shadow: none;
+	box-shadow: none;
+}
+
+/* workarounds */
+button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
+/*
+ * jQuery UI Dialog 1.8.7
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Dialog#theming
+ */
+.ui-dialog { position: absolute; padding: 0; width: 300px; overflow: hidden; }
+.ui-dialog {
+	-webkit-box-shadow: 0 2px 12px rgba(0,0,0,0.6);
+	-moz-box-shadow: 0 2px 12px rgba(0,0,0,0.6);
+}
+.ui-dialog .ui-dialog-titlebar { padding: 0.7em 1em 0.6em 1em; position: relative; border: none; border-bottom: 1px solid #979797; -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0;  }
+.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .2em 0; font-size: 14px; text-shadow: 0 1px 0 rgba(255,255,255,0.5); } 
+.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .8em; top: 55%; width: 16px; margin: -10px 0 0 0; padding: 0; height: 16px; }
+.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; background: url(images/icon_sprite.png) 0 -16px no-repeat; }
+.ui-dialog .ui-dialog-titlebar-close:hover span { background-position: -16px -16px; }
+.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; border: 0; }
+.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
+.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
+.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
+.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
+.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
+.ui-draggable .ui-dialog-titlebar { cursor: move; }
+/*
+ * jQuery UI Slider 1.8.7
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Slider#theming
+ */
+.ui-slider { position: relative; text-align: left; background: #d7d7d7; z-index: 1; }
+.ui-slider { -moz-box-shadow: 0 1px 2px rgba(0,0,0,0.5) inset; -webkit-box-shadow: 0 1px 2px rgba(0,0,0,0.5) inset; box-shadow: 0 1px 2px rgba(0,0,0,0.5) inset; }
+.ui-slider .ui-slider-handle { background: url(images/slider_handles.png) 0px -23px no-repeat; position: absolute; z-index: 2; width: 23px; height: 23px; cursor: default; border: none; outline: none; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none; }
+.ui-slider  .ui-state-hover, .ui-slider  .ui-state-active { background-position: 0 0; }
+.ui-slider .ui-slider-range { background: #a3cae0; position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
+.ui-slider .ui-slider-range { -moz-box-shadow: 0 1px 2px rgba(17,35,45,0.6) inset; -webkit-box-shadow: 0 1px 2px rgba(17,35,45,0.6) inset; box-shadow: 0 1px 2px rgba(17,35,45,0.6) inset; }
+
+
+.ui-slider-horizontal { height: 5px; }
+.ui-slider-horizontal .ui-slider-handle { top: -8px; margin-left: -13px; }
+.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
+.ui-slider-horizontal .ui-slider-range-min { left: 0; }
+.ui-slider-horizontal .ui-slider-range-max { right: 0; }
+
+.ui-slider-vertical { width: 5px; height: 100px; }
+.ui-slider-vertical .ui-slider-handle { left: -8px; margin-left: 0; margin-bottom: -13px; }
+.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
+.ui-slider-vertical .ui-slider-range-min { bottom: 0; }
+.ui-slider-vertical .ui-slider-range-max { top: 0; }/*
+ * jQuery UI Tabs 1.8.7
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Tabs#theming
+ */
+.ui-tabs { position: relative; zoom: 1; border: 0; background: transparent; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
+.ui-tabs .ui-tabs-nav { margin: 0; padding: 0; background: transparent; border-width: 0 0 1px 0; }
+.ui-tabs .ui-tabs-nav { 
+	-moz-border-radius: 0;
+	-webkit-border-radius: 0;
+	border-radius: 0;
+}
+.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
+.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; font-size: 12px; font-weight: bold; text-shadow: 0 1px 0 rgba(255,255,255,0.5); }
+.ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; background: #fff; border-color: #B6B6B6; }
+.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; outline: none; }
+.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
+.ui-tabs .ui-tabs-panel { display: block; border-width: 0 1px 1px 1px; padding: 1em 1.4em; background: none; }
+.ui-tabs .ui-tabs-panel { background: #FFF;
+	-moz-border-radius: 0;
+	-webkit-border-radius: 0;
+	border-radius: 0;
+}
+.ui-tabs .ui-tabs-hide { display: none !important; }
+/*
+ * jQuery UI Datepicker 1.8.7
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Datepicker#theming
+ */
+.ui-datepicker { width: 17em; padding: 0; display: none; border-color: #DDDDDD; }
+.ui-datepicker {
+	-moz-box-shadow: 0 4px 8px rgba(0,0,0,0.5);
+	-webkit-box-shadow: 0 4px 8px rgba(0,0,0,0.5);
+	box-shadow: 0 4px 8px rgba(0,0,0,0.5);
+}
+.ui-datepicker .ui-datepicker-header { position:relative; padding:.35em 0; border: none; border-bottom: 1px solid #B6B6B6; -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; }
+.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 6px; width: 1.8em; height: 1.8em; }
+.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { border: 1px none; }
+.ui-datepicker .ui-datepicker-prev { left:2px; }
+.ui-datepicker .ui-datepicker-next { right:2px; }
+.ui-datepicker .ui-datepicker-prev span { background-position: 0px -32px !important; }
+.ui-datepicker .ui-datepicker-next span { background-position: -16px -32px !important; }
+.ui-datepicker .ui-datepicker-prev-hover span { background-position: 0px -48px !important; }
+.ui-datepicker .ui-datepicker-next-hover span { background-position: -16px -48px !important; }
+.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; background: url(images/icon_sprite.png) no-repeat; }
+.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; font-size: 12px; text-shadow: 0 1px 0 rgba(255,255,255,0.6); }
+.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
+.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
+.ui-datepicker select.ui-datepicker-month, 
+.ui-datepicker select.ui-datepicker-year { width: 49%;}
+.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
+.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0;  }
+.ui-datepicker td { border: 0; padding: 1px; }
+.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
+.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
+.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
+.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
+.ui-datepicker table .ui-state-highlight { border-color: #5F83B9; }
+.ui-datepicker table .ui-state-hover { background: #5F83B9; color: #FFF; font-weight: bold; text-shadow: 0 1px 1px #234386; -webkit-box-shadow: 0 0px 0 rgba(255,255,255,0.6) inset; -moz-box-shadow: 0 0px 0 rgba(255,255,255,0.6) inset; box-shadow: 0 0px 0 rgba(255,255,255,0.6) inset; border-color: #5F83B9; }
+.ui-datepicker-calendar .ui-state-default { background: transparent; border-color: #FFF; }
+.ui-datepicker-calendar .ui-state-active { background: #5F83B9; border-color: #5F83B9; color: #FFF; font-weight: bold; text-shadow: 0 1px 1px #234386; }
+
+/* with multiple calendars */
+.ui-datepicker.ui-datepicker-multi { width:auto; }
+.ui-datepicker-multi .ui-datepicker-group { float:left; }
+.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
+.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
+.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
+.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
+.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
+.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
+.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
+.ui-datepicker-row-break { clear:both; width:100%; }
+
+/* RTL support */
+.ui-datepicker-rtl { direction: rtl; }
+.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
+.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
+.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
+.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
+.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
+.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
+.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
+.ui-datepicker-rtl .ui-datepicker-group { float:right; }
+.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+
+/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
+.ui-datepicker-cover {
+    display: none; /*sorry for IE5*/
+    display/**/: block; /*sorry for IE5*/
+    position: absolute; /*must have*/
+    z-index: -1; /*must have*/
+    filter: mask(); /*must have*/
+    top: -4px; /*must have*/
+    left: -4px; /*must have*/
+    width: 200px; /*must have*/
+    height: 200px; /*must have*/
+}/*
+ * jQuery UI Progressbar 1.8.7
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Progressbar#theming
+ */
+.ui-progressbar { height: 12px; text-align: left; background: #FFF url(images/progress_bar.gif) 0 -14px repeat-x; }
+.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; background: url(images/progress_bar.gif) 0 0 repeat-x; }
+
+/* Extra Input Field Styling */
+.ui-form textarea, .ui-form input:not([type="submit"]):not([type="button"]):not([type="checkbox"]):not([type="radio"]):not([type="file"]):not([type="range"]) {
+	padding: 3px;
+	-webkit-border-radius: 2px;
+	-moz-border-radius: 2px;
+	border-radius: 2px;
+	border: 1px solid #cecece;
+	outline: none;
+	-webkit-box-shadow: 0 1px 3px rgba(0,0,0,0.1) inset, 0 1px 0 rgba(255,255,255,0.2);
+	-moz-box-shadow: 0 1px 3px rgba(0,0,0,0.1) inset, 0 1px 0 rgba(255,255,255,0.2);
+	box-shadow: 0 1px 3px rgba(0,0,0,0.1) inset, 0 1px 0 rgba(255,255,255,0.2);
+    -webkit-transition: all 0.25s ease-in-out;
+    -moz-transition: all 0.25 ease-in-out;
+    -o-transition: all 0.25s ease-in-out;
+}
+.ui-form textarea:hover, .ui-form input:not([type="submit"]):not([type="button"]):not([type="checkbox"]):not([type="radio"]):not([type="file"]):not([type="range"]):hover {
+	border: 1px solid #bdbdbd;
+	-webkit-box-shadow: 0 1px 3px rgba(0,0,0,0.2) inset, 0 1px 0 rgba(255,255,255,0.2);
+	-moz-box-shadow: 0 1px 3px rgba(0,0,0,0.2) inset, 0 1px 0 rgba(255,255,255,0.2);
+	box-shadow: 0 1px 3px rgba(0,0,0,0.2) inset, 0 1px 0 rgba(255,255,255,0.2);
+}
+.ui-form textarea:focus, .ui-form input:not([type="submit"]):not([type="button"]):not([type="checkbox"]):not([type="radio"]):not([type="file"]):not([type="range"]):focus {
+	border: 1px solid #95bdd4;
+	-webkit-box-shadow: 0 2px 3px rgba(161,202,226,0.5) inset, 0 1px 0 rgba(255,255,255,0.2);
+	-moz-box-shadow: 0 2px 3px rgba(161,202,226,0.5) inset, 0 1px 0 rgba(255,255,255,0.2);
+	box-shadow: 0 2px 3px rgba(161,202,226,0.5) inset, 0 1px 0 rgba(255,255,255,0.2);
+}
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/jquery-ui/Aristo/images/bg_fallback.png b/public/admin/js/osmplayer/jquery-ui/Aristo/images/bg_fallback.png
new file mode 100644
index 0000000000000000000000000000000000000000..4b2754b8040e4bb430bd910225bb9760d25e8794
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/Aristo/images/bg_fallback.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/Aristo/images/icon_sprite.png b/public/admin/js/osmplayer/jquery-ui/Aristo/images/icon_sprite.png
new file mode 100644
index 0000000000000000000000000000000000000000..636c80f221621c2461cb2f78764b21a1d5ce2f5a
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/Aristo/images/icon_sprite.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/Aristo/images/progress_bar.gif b/public/admin/js/osmplayer/jquery-ui/Aristo/images/progress_bar.gif
new file mode 100644
index 0000000000000000000000000000000000000000..156fbb53137ff519901e8b1021e2468974131c39
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/Aristo/images/progress_bar.gif differ
diff --git a/public/admin/js/osmplayer/jquery-ui/Aristo/images/slider_handles.png b/public/admin/js/osmplayer/jquery-ui/Aristo/images/slider_handles.png
new file mode 100644
index 0000000000000000000000000000000000000000..b95a46eca97b9001da25067948cb05a0021be2a1
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/Aristo/images/slider_handles.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/Aristo/images/ui-icons_222222_256x240.png b/public/admin/js/osmplayer/jquery-ui/Aristo/images/ui-icons_222222_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..b273ff111d219c9b9a8b96d57683d0075fb7871a
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/Aristo/images/ui-icons_222222_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/Aristo/images/ui-icons_454545_256x240.png b/public/admin/js/osmplayer/jquery-ui/Aristo/images/ui-icons_454545_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..59bd45b907c4fd965697774ce8c5fc6b2fd9c105
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/Aristo/images/ui-icons_454545_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/README.md b/public/admin/js/osmplayer/jquery-ui/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..e26b1ceb19ea1f1a38c7a6cffc7bb9e54de03d4c
--- /dev/null
+++ b/public/admin/js/osmplayer/jquery-ui/README.md
@@ -0,0 +1,4 @@
+You can place new themes in this folder.
+
+When you generate a new theme, make sure to set the CSS Scope to '.player-ui' within the
+Advanced Theme Settings.
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/jquery-ui/absolution/README.md b/public/admin/js/osmplayer/jquery-ui/absolution/README.md
new file mode 100755
index 0000000000000000000000000000000000000000..6a10ee2027402528f3fd9a6f1f37e8ca5ac6ec36
--- /dev/null
+++ b/public/admin/js/osmplayer/jquery-ui/absolution/README.md
@@ -0,0 +1,42 @@
+# Absolution Theme #
+
+* You are free to redistribute or change the theme.
+* You can change the theme, but you should keep the references to contributors!
+
+Copyright 2010, Michael Vanderheeren  
+http://www.michaelvanderheeren.be
+
+jQuery UI CSS Framework, Copyright 2010, http://jqueryui.com/about  
+Dual licensed under the MIT or GPL Version 2 licenses.  
+http://jquery.org/license  
+http://docs.jquery.com/UI/Theming/API
+
+## Donate ##
+
+I designed and coded this theme in my spare time, which I now and then like to spend having a drink. Keeping this hosting up also costs money. If you like the Absolution theme then think about contributing to it and maybe provide me with a drink, or an extra month of hosting by giving me a small donation through PayPal. You can also Flattr the theme through the button below.
+
+[![Flattr this git repo](http://api.flattr.com/button/flattr-badge-large.png)](https://flattr.com/submit/auto?user_id=MichaelVdheeren&url=https://github.com/michaelvanderheeren/Absolution&title=Absolution&language=en_GB&tags=github&category=software)
+
+## Q&A ##
+
+**How do I install the theme?**  
+Download the latest version from the gitHub repository and add a text/css type link in the pages where you want to use the theme. You should set the href to the *absolution.blue.css* file! Do not forget the images folder!  
+Example: <link type="text/css" href="absolution.blue.css" rel="stylesheet" />  
+
+**But I want a different color!**  
+No problem, if it is already generated then just replace the name of the file above. Otherwise, you have to change the color values in the .less files and either recompile the file or include the LESS javascript in the page where you're using the theme.
+
+**What about Wijmo support?**  
+There is no need anymore to include the Wijmo css stylesheets as they are the foundation for our Wijmo support. Currently the following widgets are fully supported: Expander, Slider, Accordion, Tree.
+
+**The theme looks ugly!**  
+Either you have a different taste or an old browser. This theme uses full CSS3 power in every way possible. Gradients, border-radius and box-shadows are just a simple example. There is no way that I will support legacy browsers. Repeated backgrounds limit the font-size and thus limits freedom for the theme user. This is a user-interface theme, and not a font one. Therefore all unneeded font restricting will be removed over time and replaced with inherits where needed.
+
+**Why did you remove the option to include separate widgets?**  
+Sometimes I like to push new technologies. The usage of LESS was a huge improvement for the readability of the code and the ability to change it fast. This came however at the cost of compiling which I do in a minimized single file to make the file smaller. There is however the option to include the necessary LESS files in your page along with the LESS javascript which will process those files.
+
+**Where can I find LESS?**  
+You are a no brainer aren't you? http://LMGTFY.com/?q=less
+
+**How can I support the theme development?**  
+If you have a Flattr account, then click on the button above.
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/jquery-ui/absolution/absolution.blue.css b/public/admin/js/osmplayer/jquery-ui/absolution/absolution.blue.css
new file mode 100644
index 0000000000000000000000000000000000000000..0e0848fb3a5b2559b75989f0f7328b22876c664e
--- /dev/null
+++ b/public/admin/js/osmplayer/jquery-ui/absolution/absolution.blue.css
@@ -0,0 +1,819 @@
+.ui-widget{font-family:Trebuchet MS,Tahoma,Verdana,Arial,sans-serif;font-size:1.1em;}.ui-widget a{color:inherit;}
+.ui-widget .ui-widget{font-size:1em;}
+.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:inherit;font-size:1em;}
+.ui-widget-content{border-color:#a9a9a9;background:#eeeeee;border-style:solid;border-width:1px;}
+.ui-widget-header{border-style:solid;border-width:1px;}
+.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default,.ui-widget-header{color:#333333;border-color:#a9a9a9;background:#ffffff;filter:expression("progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdfdfd',endColorstr='#ececec')");-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdfdfd',endColorstr='#ececec')";background:-moz-linear-gradient(0% 100% 90deg, #ececec, #fdfdfd);background:-webkit-gradient(linear, left top, left bottom, from(#fdfdfd), to(#ececec));background:-o-linear-gradient(0% 100% 90deg, #ececec, #fdfdfd);}
+.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover{color:#ffffff;border-color:#2e63a5;background:#93ffff;filter:expression("progid:DXImageTransform.Microsoft.gradient(startColorstr='#5e9ae2',endColorstr='#3570b8')");-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr='#5e9ae2',endColorstr='#3570b8')";background:-moz-linear-gradient(0% 100% 90deg, #3570b8, #5e9ae2);background:-webkit-gradient(linear, left top, left bottom, from(#5e9ae2), to(#3570b8));background:-o-linear-gradient(0% 100% 90deg, #3570b8, #5e9ae2);}
+.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{color:#ffffff;border-color:#2e63a5;background:#93ffff;filter:expression("progid:DXImageTransform.Microsoft.gradient(startColorstr='#5e9ae2',endColorstr='#3570b8')");-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr='#5e9ae2',endColorstr='#3570b8')";background:-moz-linear-gradient(0% 100% 90deg, #3570b8, #5e9ae2);background:-webkit-gradient(linear, left top, left bottom, from(#5e9ae2), to(#3570b8));background:-o-linear-gradient(0% 100% 90deg, #3570b8, #5e9ae2);}
+.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{color:#ffffff;border-color:#2e63a5;background:#93ffff;filter:expression("progid:DXImageTransform.Microsoft.gradient(startColorstr='#3570b8',endColorstr='#5e9ae2')");-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr='#3570b8',endColorstr='#5e9ae2')";background:-moz-linear-gradient(0% 100% 90deg, #5e9ae2, #3570b8);background:-webkit-gradient(linear, left top, left bottom, from(#3570b8), to(#5e9ae2));background:-o-linear-gradient(0% 100% 90deg, #5e9ae2, #3570b8);}
+.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default,.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus,.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border-style:solid;border-width:1px;}
+.ui-state-default a,.ui-state-hover a,.ui-state-active a{color:inherit;text-decoration:none;}
+.ui-widget:active{outline:none;}
+.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #8b9fc2;background:#7cc5e3;}
+.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:inherit;}
+.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #953737;background:#f35757;}
+.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:inherit;}
+.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#363636;}
+.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:alpha(opacity=70);}
+.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:alpha(opacity=35);background-image:none;}
+.ui-icon{width:16px;height:16px;background-image:url(images/ui-icons_222222_256x240.png);}
+.ui-widget-content .ui-icon{background-image:url(images/ui-icons_222222_256x240.png);}
+.ui-widget-header .ui-icon{background-image:url(images/ui-icons_222222_256x240.png);}
+.ui-state-default .ui-icon{background-image:url(images/ui-icons_222222_256x240.png);}
+.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url(images/ui-icons_ffffff_256x240.png);}
+.ui-state-active .ui-icon{background-image:url(images/ui-icons_ffffff_256x240.png);}
+.ui-state-highlight .ui-icon{background-image:url(images/ui-icons_222222_256x240.png);}
+.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url(images/ui-icons_222222_256x240.png);}
+.ui-icon-carat-1-n{background-position:0 0;}
+.ui-icon-carat-1-ne{background-position:-16px 0;}
+.ui-icon-carat-1-e{background-position:-32px 0;}
+.ui-icon-carat-1-se{background-position:-48px 0;}
+.ui-icon-carat-1-s{background-position:-64px 0;}
+.ui-icon-carat-1-sw{background-position:-80px 0;}
+.ui-icon-carat-1-w{background-position:-96px 0;}
+.ui-icon-carat-1-nw{background-position:-112px 0;}
+.ui-icon-carat-2-n-s{background-position:-128px 0;}
+.ui-icon-carat-2-e-w{background-position:-144px 0;}
+.ui-icon-triangle-1-n{background-position:0 -16px;}
+.ui-icon-triangle-1-ne{background-position:-16px -16px;}
+.ui-icon-triangle-1-e{background-position:-32px -16px;}
+.ui-icon-triangle-1-se{background-position:-48px -16px;}
+.ui-icon-triangle-1-s{background-position:-64px -16px;}
+.ui-icon-triangle-1-sw{background-position:-80px -16px;}
+.ui-icon-triangle-1-w{background-position:-96px -16px;}
+.ui-icon-triangle-1-nw{background-position:-112px -16px;}
+.ui-icon-triangle-2-n-s{background-position:-128px -16px;}
+.ui-icon-triangle-2-e-w{background-position:-144px -16px;}
+.ui-icon-arrow-1-n{background-position:0 -32px;}
+.ui-icon-arrow-1-ne{background-position:-16px -32px;}
+.ui-icon-arrow-1-e{background-position:-32px -32px;}
+.ui-icon-arrow-1-se{background-position:-48px -32px;}
+.ui-icon-arrow-1-s{background-position:-64px -32px;}
+.ui-icon-arrow-1-sw{background-position:-80px -32px;}
+.ui-icon-arrow-1-w{background-position:-96px -32px;}
+.ui-icon-arrow-1-nw{background-position:-112px -32px;}
+.ui-icon-arrow-2-n-s{background-position:-128px -32px;}
+.ui-icon-arrow-2-ne-sw{background-position:-144px -32px;}
+.ui-icon-arrow-2-e-w{background-position:-160px -32px;}
+.ui-icon-arrow-2-se-nw{background-position:-176px -32px;}
+.ui-icon-arrowstop-1-n{background-position:-192px -32px;}
+.ui-icon-arrowstop-1-e{background-position:-208px -32px;}
+.ui-icon-arrowstop-1-s{background-position:-224px -32px;}
+.ui-icon-arrowstop-1-w{background-position:-240px -32px;}
+.ui-icon-arrowthick-1-n{background-position:0 -48px;}
+.ui-icon-arrowthick-1-ne{background-position:-16px -48px;}
+.ui-icon-arrowthick-1-e{background-position:-32px -48px;}
+.ui-icon-arrowthick-1-se{background-position:-48px -48px;}
+.ui-icon-arrowthick-1-s{background-position:-64px -48px;}
+.ui-icon-arrowthick-1-sw{background-position:-80px -48px;}
+.ui-icon-arrowthick-1-w{background-position:-96px -48px;}
+.ui-icon-arrowthick-1-nw{background-position:-112px -48px;}
+.ui-icon-arrowthick-2-n-s{background-position:-128px -48px;}
+.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px;}
+.ui-icon-arrowthick-2-e-w{background-position:-160px -48px;}
+.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px;}
+.ui-icon-arrowthickstop-1-n{background-position:-192px -48px;}
+.ui-icon-arrowthickstop-1-e{background-position:-208px -48px;}
+.ui-icon-arrowthickstop-1-s{background-position:-224px -48px;}
+.ui-icon-arrowthickstop-1-w{background-position:-240px -48px;}
+.ui-icon-arrowreturnthick-1-w{background-position:0 -64px;}
+.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px;}
+.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px;}
+.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px;}
+.ui-icon-arrowreturn-1-w{background-position:-64px -64px;}
+.ui-icon-arrowreturn-1-n{background-position:-80px -64px;}
+.ui-icon-arrowreturn-1-e{background-position:-96px -64px;}
+.ui-icon-arrowreturn-1-s{background-position:-112px -64px;}
+.ui-icon-arrowrefresh-1-w{background-position:-128px -64px;}
+.ui-icon-arrowrefresh-1-n{background-position:-144px -64px;}
+.ui-icon-arrowrefresh-1-e{background-position:-160px -64px;}
+.ui-icon-arrowrefresh-1-s{background-position:-176px -64px;}
+.ui-icon-arrow-4{background-position:0 -80px;}
+.ui-icon-arrow-4-diag{background-position:-16px -80px;}
+.ui-icon-extlink{background-position:-32px -80px;}
+.ui-icon-newwin{background-position:-48px -80px;}
+.ui-icon-refresh{background-position:-64px -80px;}
+.ui-icon-shuffle{background-position:-80px -80px;}
+.ui-icon-transfer-e-w{background-position:-96px -80px;}
+.ui-icon-transferthick-e-w{background-position:-112px -80px;}
+.ui-icon-folder-collapsed{background-position:0 -96px;}
+.ui-icon-folder-open{background-position:-16px -96px;}
+.ui-icon-document{background-position:-32px -96px;}
+.ui-icon-document-b{background-position:-48px -96px;}
+.ui-icon-note{background-position:-64px -96px;}
+.ui-icon-mail-closed{background-position:-80px -96px;}
+.ui-icon-mail-open{background-position:-96px -96px;}
+.ui-icon-suitcase{background-position:-112px -96px;}
+.ui-icon-comment{background-position:-128px -96px;}
+.ui-icon-person{background-position:-144px -96px;}
+.ui-icon-print{background-position:-160px -96px;}
+.ui-icon-trash{background-position:-176px -96px;}
+.ui-icon-locked{background-position:-192px -96px;}
+.ui-icon-unlocked{background-position:-208px -96px;}
+.ui-icon-bookmark{background-position:-224px -96px;}
+.ui-icon-tag{background-position:-240px -96px;}
+.ui-icon-home{background-position:0 -112px;}
+.ui-icon-flag{background-position:-16px -112px;}
+.ui-icon-calendar{background-position:-32px -112px;}
+.ui-icon-cart{background-position:-48px -112px;}
+.ui-icon-pencil{background-position:-64px -112px;}
+.ui-icon-clock{background-position:-80px -112px;}
+.ui-icon-disk{background-position:-96px -112px;}
+.ui-icon-calculator{background-position:-112px -112px;}
+.ui-icon-zoomin{background-position:-128px -112px;}
+.ui-icon-zoomout{background-position:-144px -112px;}
+.ui-icon-search{background-position:-160px -112px;}
+.ui-icon-wrench{background-position:-176px -112px;}
+.ui-icon-gear{background-position:-192px -112px;}
+.ui-icon-heart{background-position:-208px -112px;}
+.ui-icon-star{background-position:-224px -112px;}
+.ui-icon-link{background-position:-240px -112px;}
+.ui-icon-cancel{background-position:0 -128px;}
+.ui-icon-plus{background-position:-16px -128px;}
+.ui-icon-plusthick{background-position:-32px -128px;}
+.ui-icon-minus{background-position:-48px -128px;}
+.ui-icon-minusthick{background-position:-64px -128px;}
+.ui-icon-close{background-position:-80px -128px;}
+.ui-icon-closethick{background-position:-96px -128px;}
+.ui-icon-key{background-position:-112px -128px;}
+.ui-icon-lightbulb{background-position:-128px -128px;}
+.ui-icon-scissors{background-position:-144px -128px;}
+.ui-icon-clipboard{background-position:-160px -128px;}
+.ui-icon-copy{background-position:-176px -128px;}
+.ui-icon-contact{background-position:-192px -128px;}
+.ui-icon-image{background-position:-208px -128px;}
+.ui-icon-video{background-position:-224px -128px;}
+.ui-icon-script{background-position:-240px -128px;}
+.ui-icon-alert{background-position:0 -144px;}
+.ui-icon-info{background-position:-16px -144px;}
+.ui-icon-notice{background-position:-32px -144px;}
+.ui-icon-help{background-position:-48px -144px;}
+.ui-icon-check{background-position:-64px -144px;}
+.ui-icon-bullet{background-position:-80px -144px;}
+.ui-icon-radio-off{background-position:-96px -144px;}
+.ui-icon-radio-on{background-position:-112px -144px;}
+.ui-icon-pin-w{background-position:-128px -144px;}
+.ui-icon-pin-s{background-position:-144px -144px;}
+.ui-icon-play{background-position:0 -160px;}
+.ui-icon-pause{background-position:-16px -160px;}
+.ui-icon-seek-next{background-position:-32px -160px;}
+.ui-icon-seek-prev{background-position:-48px -160px;}
+.ui-icon-seek-end{background-position:-64px -160px;}
+.ui-icon-seek-first,.ui-icon-seek-start{background-position:-80px -160px;}
+.ui-icon-stop{background-position:-96px -160px;}
+.ui-icon-eject{background-position:-112px -160px;}
+.ui-icon-volume-off{background-position:-128px -160px;}
+.ui-icon-volume-on{background-position:-144px -160px;}
+.ui-icon-power{background-position:0 -176px;}
+.ui-icon-signal-diag{background-position:-16px -176px;}
+.ui-icon-signal{background-position:-32px -176px;}
+.ui-icon-battery-0{background-position:-48px -176px;}
+.ui-icon-battery-1{background-position:-64px -176px;}
+.ui-icon-battery-2{background-position:-80px -176px;}
+.ui-icon-battery-3{background-position:-96px -176px;}
+.ui-icon-circle-plus{background-position:0 -192px;}
+.ui-icon-circle-minus{background-position:-16px -192px;}
+.ui-icon-circle-close{background-position:-32px -192px;}
+.ui-icon-circle-triangle-e{background-position:-48px -192px;}
+.ui-icon-circle-triangle-s{background-position:-64px -192px;}
+.ui-icon-circle-triangle-w{background-position:-80px -192px;}
+.ui-icon-circle-triangle-n{background-position:-96px -192px;}
+.ui-icon-circle-arrow-e{background-position:-112px -192px;}
+.ui-icon-circle-arrow-s{background-position:-128px -192px;}
+.ui-icon-circle-arrow-w{background-position:-144px -192px;}
+.ui-icon-circle-arrow-n{background-position:-160px -192px;}
+.ui-icon-circle-zoomin{background-position:-176px -192px;}
+.ui-icon-circle-zoomout{background-position:-192px -192px;}
+.ui-icon-circle-check{background-position:-208px -192px;}
+.ui-icon-circlesmall-plus{background-position:0 -208px;}
+.ui-icon-circlesmall-minus{background-position:-16px -208px;}
+.ui-icon-circlesmall-close{background-position:-32px -208px;}
+.ui-icon-squaresmall-plus{background-position:-48px -208px;}
+.ui-icon-squaresmall-minus{background-position:-64px -208px;}
+.ui-icon-squaresmall-close{background-position:-80px -208px;}
+.ui-icon-grip-dotted-vertical{background-position:0 -224px;}
+.ui-icon-grip-dotted-horizontal{background-position:-16px -224px;}
+.ui-icon-grip-solid-vertical{background-position:-32px -224px;}
+.ui-icon-grip-solid-horizontal{background-position:-48px -224px;}
+.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px;}
+.ui-icon-grip-diagonal-se{background-position:-80px -224px;}
+.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;border-top-left-radius:5px;}
+.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;border-top-right-radius:5px;}
+.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;border-bottom-left-radius:5px;}
+.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;border-bottom-right-radius:5px;}
+.ui-widget-overlay{background:#999999;opacity:.50;filter:alpha(opacity=50);}
+.ui-widget-shadow{-webkit-box-shadow:0px 0px 5px #282425;-moz-box-shadow:0px 0px 5px #282425;box-shadow:0px 0px 5px #282425;}
+.ui-helper-hidden{display:none;}
+.ui-helper-hidden-accessible{position:absolute;left:-99999999px;}
+.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none;}
+.ui-helper-clearfix:after{content:".";display:block;height:0;clear:both;visibility:hidden;}
+.ui-helper-clearfix{display:inline-block;}
+* html .ui-helper-clearfix{height:1%;}
+.ui-helper-clearfix{display:block;}
+.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:alpha(opacity=0);}
+.ui-state-disabled{cursor:default !important;}
+.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;}
+.ui-widget-overlay{position:absolute;top:0;left:0;width:100%;height:100%;}
+.ui-resizable{position:relative;}
+.ui-resizable-handle{position:absolute;font-size:0.1px;z-index:99999;display:block;}
+.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none;}
+.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0;}
+.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0;}
+.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%;}
+.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%;}
+.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px;}
+.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px;}
+.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px;}
+.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px;}
+.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black;}
+.ui-accordion{width:100%;}.ui-accordion .ui-accordion-header{cursor:pointer;position:relative;margin-top:1px;zoom:1;border:solid 1px #a9a9a9;border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;}.ui-accordion .ui-accordion-header a{display:block;padding:.5em .5em .5em .7em;color:inherit;}
+.ui-accordion .ui-accordion-header .ui-icon{position:absolute;left:.5em;top:50%;margin-top:-7px;width:13px;height:13px;border:1px solid #a9a9a9;background:#ffffff url(images/ui-icons_222222_256x240.png);background-position:-34px -2px;border-radius:7px;-webkit-border-radius:7px;-moz-border-radius:7px;-webkit-box-shadow:inset 0 -6px 5px rgba(0, 0, 0, 0.1);-moz-box-shadow:inset 0 -6px 5px rgba(0, 0, 0, 0.1);box-shadow:inset 0 -6px 5px rgba(0, 0, 0, 0.1);}
+.ui-accordion .ui-accordion-content{border-width:0px;border-radius:0px;-webkit-border-radius:0px;-moz-border-radius:0px;background:none;padding:1em 2.2em;border-top:0;margin-top:0px;position:relative;top:1px;margin-bottom:0px;overflow:auto;display:none;zoom:1;}
+.ui-accordion .ui-accordion-li-fix{display:inline;}
+.ui-accordion .ui-accordion-content-active{display:block;}
+.ui-accordion .ui-accordion-header-active{border-width:0px;}
+.ui-accordion .ui-accordion-header.ui-state-hover .ui-icon{background:#5e9ae2 url(images/ui-icons_ffffff_256x240.png);background-position:-34px -2px;border:1px solid #2e63a5;}
+.ui-accordion .ui-accordion-header.ui-state-active .ui-icon,.ui-accordion .ui-accordion-header.ui-state-hover.ui-state-active .ui-icon{background-position:-66px -1px;}
+.ui-accordion .ui-accordion-header,.ui-accordion .ui-accordion-header.ui-state-active,.ui-accordion .ui-accordion-header.ui-state-hover,.ui-accordion .ui-accordion-header.ui-state-focus{color:#333333;border-color:#a9a9a9;background:#ffffff;filter:expression("progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdfdfd',endColorstr='#ececec')");-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdfdfd',endColorstr='#ececec')";background:-moz-linear-gradient(0% 100% 90deg, #ececec, #fdfdfd);background:-webkit-gradient(linear, left top, left bottom, from(#fdfdfd), to(#ececec));background:-o-linear-gradient(0% 100% 90deg, #ececec, #fdfdfd);}
+.ui-accordion-icons .ui-accordion-header a{padding-left:2.6em;}
+.ui-autocomplete{position:absolute;cursor:default;}
+* html .ui-autocomplete{width:1px;}
+.ui-menu{list-style:none;padding:5px;margin:0;display:block;float:left;border-color:#ffffff !important;-webkit-box-shadow:0px 0px 5px #282425;-moz-box-shadow:0px 0px 5px #282425;box-shadow:0px 0px 5px #282425;}.ui-menu .ui-menu{margin-top:-3px;}
+.ui-menu .ui-menu-item{margin:0;padding:0;zoom:1;float:left;clear:left;width:100%;}.ui-menu .ui-menu-item a{text-decoration:none;display:block;padding:.2em .4em;line-height:1.7;zoom:1;}.ui-menu .ui-menu-item a.ui-state-hover,.ui-menu .ui-menu-item a.ui-state-active{font-weight:normal;margin:-1px -6px -1px -6px;border-radius:0px;-webkit-border-radius:0px;-moz-border-radius:0px;padding-left:9px;}
+.ui-autocomplete-input{padding:5px;text-shadow:0px 1px 0px #fff;outline:none;border:1px solid #a9a9a9;border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;background:#ffffff;filter:expression("progid:DXImageTransform.Microsoft.gradient(startColorstr='#eff0f0',endColorstr='#ffffff')");-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr='#eff0f0',endColorstr='#ffffff')";background:-moz-linear-gradient(0% 100% 90deg, #ffffff, #eff0f0);background:-webkit-gradient(linear, left top, left bottom, from(#eff0f0), to(#ffffff));background:-o-linear-gradient(0% 100% 90deg, #ffffff, #eff0f0);}.ui-autocomplete-input:hover,.ui-autocomplete-input:focus{background:#ffffff;filter:expression("progid:DXImageTransform.Microsoft.gradient(startColorstr='#dfe0e1',endColorstr='#ffffff')");-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr='#dfe0e1',endColorstr='#ffffff')";background:-moz-linear-gradient(0% 100% 90deg, #ffffff, #dfe0e1);background:-webkit-gradient(linear, left top, left bottom, from(#dfe0e1), to(#ffffff));background:-o-linear-gradient(0% 100% 90deg, #ffffff, #dfe0e1);}
+.ui-autocomplete.ui-menu.ui-widget.ui-widget-content{color:#333333;border-color:#a9a9a9;background:#ffffff;filter:expression("progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdfdfd',endColorstr='#ececec')");-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdfdfd',endColorstr='#ececec')";background:-moz-linear-gradient(0% 100% 90deg, #ececec, #fdfdfd);background:-webkit-gradient(linear, left top, left bottom, from(#fdfdfd), to(#ececec));background:-o-linear-gradient(0% 100% 90deg, #ececec, #fdfdfd);}
+.ui-button{display:inline-block;position:relative;padding:0;margin-right:.1em;text-decoration:none !important;cursor:pointer;text-align:center;zoom:1;line-height:1.2em;overflow:visible;}
+.ui-button-icon-only{width:2.2em;}
+button.ui-button-icon-only{width:2.4em;}
+.ui-button-icons-only{width:3.4em;}
+button.ui-button-icons-only{width:3.7em;}
+.ui-button .ui-button-text{display:block;}
+.ui-button-text-only .ui-button-text{padding:.4em 1em;}
+.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px;}
+.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em;}
+.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em;}
+.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em;}
+input.ui-button{padding:.4em 1em;}
+.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px;}
+.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px;}
+.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em;}
+.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em;}
+.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em;}
+.ui-buttonset{margin-right:7px;}.ui-buttonset .ui-button{margin-left:0;margin-right:-0.3em;}
+button.ui-button::-moz-focus-inner{border:0;padding:0;}
+.ui-dialog{position:absolute;padding:0.0em;width:300px;overflow:hidden;border-color:#ffffff;-webkit-box-shadow:0px 0px 5px #282425;-moz-box-shadow:0px 0px 5px #282425;box-shadow:0px 0px 5px #282425;}.ui-dialog .ui-dialog-title{float:left;margin:.1em 16px .2em 0;}
+.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.6em;top:50%;width:19px;margin:-10px 0 0 0;padding:0px;height:18px;border-width:1px;border-style:solid;}.ui-dialog .ui-dialog-titlebar-close span{display:block;margin:1px;}
+.ui-dialog .ui-dialog-titlebar-close:hover,.ui-dialog .ui-dialog-titlebar-close:focus{padding:0;}
+.ui-dialog .ui-dialog-content{position:relative;border-width:0px;padding:1em;overflow:auto;zoom:1;}.ui-dialog .ui-dialog-content .ui-tabs{margin:-1em;border:0px;}
+.ui-dialog .ui-dialog-content hr{margin:1em -1em 1em -1em;border:0px;border-top:1px solid #c1c1c1 !important;}
+.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;margin:.5em 0 0 0;padding:.3em .3em .5em .4em;background:#f7f7f8;}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right;}
+.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer;font-weight:normal;min-width:7em;}
+.ui-dialog .ui-dialog-titlebar{padding:.5em 1em .3em;position:relative;-moz-border-radius-bottomleft:0px;-webkit-border-bottom-left-radius:0px;border-bottom-left-radius:0px;-moz-border-radius-bottomright:0px;-webkit-border-bottom-right-radius:0px;border-bottom-right-radius:0px;border:0px;font-size:1.5em;font-weight:normal;background:#747073;filter:expression("progid:DXImageTransform.Microsoft.gradient(startColorstr='#4c4c4e',endColorstr='#282425')");-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr='#4c4c4e',endColorstr='#282425')";background:-moz-linear-gradient(0% 100% 90deg, #282425, #4c4c4e);background:-webkit-gradient(linear, left top, left bottom, from(#4c4c4e), to(#282425));background:-o-linear-gradient(0% 100% 90deg, #282425, #4c4c4e);color:#ffffff;}.ui-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close{border-color:#000000;background:#a8a9ac;filter:expression("progid:DXImageTransform.Microsoft.gradient(startColorstr='#6a6b6e',endColorstr='#3e3e3e')");-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr='#6a6b6e',endColorstr='#3e3e3e')";background:-moz-linear-gradient(0% 100% 90deg, #3e3e3e, #6a6b6e);background:-webkit-gradient(linear, left top, left bottom, from(#6a6b6e), to(#3e3e3e));background:-o-linear-gradient(0% 100% 90deg, #3e3e3e, #6a6b6e);color:#ffffff;}.ui-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close .ui-icon{background-image:url(images/ui-icons_ffffff_256x240.png);}
+.ui-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close.ui-state-active{color:#ffffff;border-color:#2e63a5;background:#93ffff;filter:expression("progid:DXImageTransform.Microsoft.gradient(startColorstr='#3570b8',endColorstr='#5e9ae2')");-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr='#3570b8',endColorstr='#5e9ae2')";background:-moz-linear-gradient(0% 100% 90deg, #5e9ae2, #3570b8);background:-webkit-gradient(linear, left top, left bottom, from(#3570b8), to(#5e9ae2));background:-o-linear-gradient(0% 100% 90deg, #5e9ae2, #3570b8);}
+.ui-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close.ui-state-hover,.ui-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close.ui-state-focus{color:#ffffff;border-color:#2e63a5;background:#93ffff;filter:expression("progid:DXImageTransform.Microsoft.gradient(startColorstr='#5e9ae2',endColorstr='#3570b8')");-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr='#5e9ae2',endColorstr='#3570b8')";background:-moz-linear-gradient(0% 100% 90deg, #3570b8, #5e9ae2);background:-webkit-gradient(linear, left top, left bottom, from(#5e9ae2), to(#3570b8));background:-o-linear-gradient(0% 100% 90deg, #3570b8, #5e9ae2);}
+.ui-dialog .ui-resizable-se{width:14px;height:14px;right:1px;bottom:1px;display:none;}
+.ui-dialog .ui-icon-grip-diagonal-se{background-position:-64px -224px;display:none;}
+.ui-draggable .ui-dialog-titlebar{cursor:move;}
+.ui-slider{position:relative;text-align:left;}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;color:#333333;border-color:#a9a9a9;background:#ffffff;filter:expression("progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdfdfd',endColorstr='#ececec')");-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdfdfd',endColorstr='#ececec')";background:-moz-linear-gradient(0% 100% 90deg, #ececec, #fdfdfd);background:-webkit-gradient(linear, left top, left bottom, from(#fdfdfd), to(#ececec));background:-o-linear-gradient(0% 100% 90deg, #ececec, #fdfdfd);}.ui-slider .ui-slider-handle:hover{border-color:#b8b8b8;background:#ffffff;filter:expression("progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff',endColorstr='#cacbcc')");-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff',endColorstr='#cacbcc')";background:-moz-linear-gradient(0% 100% 90deg, #cacbcc, #ffffff);background:-webkit-gradient(linear, left top, left bottom, from(#ffffff), to(#cacbcc));background:-o-linear-gradient(0% 100% 90deg, #cacbcc, #ffffff);}
+.ui-slider .ui-slider-handle:active,.ui-slider .ui-slider-handle:focus{border-color:#b8b8b8;background:#ffffff;filter:expression("progid:DXImageTransform.Microsoft.gradient(startColorstr='#cacbcc',endColorstr='#ffffff')");-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr='#cacbcc',endColorstr='#ffffff')";background:-moz-linear-gradient(0% 100% 90deg, #ffffff, #cacbcc);background:-webkit-gradient(linear, left top, left bottom, from(#cacbcc), to(#ffffff));background:-o-linear-gradient(0% 100% 90deg, #ffffff, #cacbcc);}
+.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0;}
+.ui-slider-horizontal{height:.6em;}.ui-slider-horizontal .ui-slider-handle{top:-0.4em;margin-left:-0.6em;}
+.ui-slider-horizontal .ui-slider-range{top:0;height:100%;}
+.ui-slider-horizontal .ui-widget-header{color:#ffffff;background:#93ffff;filter:expression("progid:DXImageTransform.Microsoft.gradient(startColorstr='#5e9ae2',endColorstr='#3570b8')");-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr='#5e9ae2',endColorstr='#3570b8')";background:-moz-linear-gradient(0% 100% 90deg, #3570b8, #5e9ae2);background:-webkit-gradient(linear, left top, left bottom, from(#5e9ae2), to(#3570b8));background:-o-linear-gradient(0% 100% 90deg, #3570b8, #5e9ae2);}
+.ui-slider-horizontal .ui-slider-range-min{left:0;}
+.ui-slider-horizontal .ui-slider-range-max{right:0;}
+.ui-slider-horizontal .ui-widget-header{font-weight:bold;}
+.ui-slider-horizontal .ui-slider-handle{border-radius:0.7em;-webkit-border-radius:0.7em;-moz-border-radius:0.7em;}
+.ui-slider-vertical{width:.6em;height:100px;}.ui-slider-vertical .ui-slider-handle{left:-0.4em;margin-left:0;margin-bottom:-0.6em;}
+.ui-slider-vertical .ui-slider-range{left:0;width:100%;}
+.ui-slider-vertical .ui-widget-header{color:#ffffff;background:#93ffff;filter:expression("progid:DXImageTransform.Microsoft.gradient(startColorstr='#5e9ae2',endColorstr='#3570b8',GradientType=1)");-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr='#5e9ae2',endColorstr='#3570b8',GradientType=1)";background:-moz-linear-gradient(0% 100% 180deg, #3570b8, #5e9ae2);background:-webkit-gradient(linear, left top, right top, from(#5e9ae2), to(#3570b8));background:-o-linear-gradient(0% 100% 180deg, #3570b8, #5e9ae2);}
+.ui-slider-vertical .ui-slider-range-min{bottom:0;}
+.ui-slider-vertical .ui-slider-range-max{top:0;}
+.ui-slider-vertical .ui-widget-header{font-weight:bold;}
+.ui-slider-vertical .ui-slider-handle{border-radius:0.7em;-webkit-border-radius:0.7em;-moz-border-radius:0.7em;}
+.ui-tabs{position:relative;padding:0;zoom:1;border-radius:0px;-webkit-border-radius:0px;-moz-border-radius:0px;}.ui-tabs .ui-tabs-nav{margin:0;padding:-1px;border-radius:0px;-webkit-border-radius:0px;-moz-border-radius:0px;border-bottom:1px solid #a9a9a9;}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0px;margin:0px;padding:0;white-space:nowrap;border-width:0px;border-right:1px solid #a9a9a9;border-radius:0px;-webkit-border-radius:0px;-moz-border-radius:0px;}.ui-tabs .ui-tabs-nav li a{float:left;padding:.3em 1em;text-decoration:none;color:inherit;}
+.ui-tabs .ui-tabs-nav li.ui-state-hover{color:inherit;background:#ffffff;filter:expression("progid:DXImageTransform.Microsoft.gradient(startColorstr='#dadada',endColorstr='#b0b0b0')");-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr='#dadada',endColorstr='#b0b0b0')";background:-moz-linear-gradient(0% 100% 90deg, #b0b0b0, #dadada);background:-webkit-gradient(linear, left top, left bottom, from(#dadada), to(#b0b0b0));background:-o-linear-gradient(0% 100% 90deg, #b0b0b0, #dadada);}
+.ui-tabs .ui-tabs-nav li.ui-state-active,.ui-tabs .ui-tabs-nav li.ui-tabs-selected{color:inherit;background:#ffffff;filter:expression("progid:DXImageTransform.Microsoft.gradient(startColorstr='#bcbcbc',endColorstr='#e4e4e4')");-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr='#bcbcbc',endColorstr='#e4e4e4')";background:-moz-linear-gradient(0% 100% 90deg, #e4e4e4, #bcbcbc);background:-webkit-gradient(linear, left top, left bottom, from(#bcbcbc), to(#e4e4e4));background:-o-linear-gradient(0% 100% 90deg, #e4e4e4, #bcbcbc);}
+.ui-tabs .ui-tabs-nav li.ui-tabs-selected a,.ui-tabs .ui-tabs-nav li.ui-state-disabled a,.ui-tabs .ui-tabs-nav li.ui-state-processing a{cursor:text;}
+.ui-tabs .ui-tabs-panel{display:block;border-width:0px;padding:1em 1.4em;border-radius:0px;-webkit-border-radius:0px;-moz-border-radius:0px;}
+.ui-tabs .ui-tabs-hide{display:none;}
+.ui-tabs .ui-widget-header{color:#333333;border-color:#a9a9a9;background:#ffffff;filter:expression("progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdfdfd',endColorstr='#ececec')");-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdfdfd',endColorstr='#ececec')";background:-moz-linear-gradient(0% 100% 90deg, #ececec, #fdfdfd);background:-webkit-gradient(linear, left top, left bottom, from(#fdfdfd), to(#ececec));background:-o-linear-gradient(0% 100% 90deg, #ececec, #fdfdfd);}
+.ui-tabs .ui-tabs-nav li a,.ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a{cursor:pointer;}
+.ui-datepicker{width:17em;padding:0;border-color:#ffffff;-webkit-box-shadow:0px 0px 5px #282425;-moz-box-shadow:0px 0px 5px #282425;box-shadow:0px 0px 5px #282425;}.ui-datepicker .ui-datepicker-header{position:relative;padding:.5em 0.2em;border:none;-moz-border-radius-bottomleft:0px;-webkit-border-bottom-left-radius:0px;border-bottom-left-radius:0px;-moz-border-radius-bottomright:0px;-webkit-border-bottom-right-radius:0px;border-bottom-right-radius:0px;background:#747073;filter:expression("progid:DXImageTransform.Microsoft.gradient(startColorstr='#4c4c4e',endColorstr='#282425')");-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr='#4c4c4e',endColorstr='#282425')";background:-moz-linear-gradient(0% 100% 90deg, #282425, #4c4c4e);background:-webkit-gradient(linear, left top, left bottom, from(#4c4c4e), to(#282425));background:-o-linear-gradient(0% 100% 90deg, #282425, #4c4c4e);color:#ffffff;}.ui-datepicker .ui-datepicker-header .ui-icon{background-image:url(images/ui-icons_ffffff_256x240.png);}
+.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:4px;width:1.8em;height:1.8em;border-width:1px;border-style:solid;cursor:pointer;border-color:#000000;background:#a8a9ac;filter:expression("progid:DXImageTransform.Microsoft.gradient(startColorstr='#6a6b6e',endColorstr='#3e3e3e')");-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr='#6a6b6e',endColorstr='#3e3e3e')";background:-moz-linear-gradient(0% 100% 90deg, #3e3e3e, #6a6b6e);background:-webkit-gradient(linear, left top, left bottom, from(#6a6b6e), to(#3e3e3e));background:-o-linear-gradient(0% 100% 90deg, #3e3e3e, #6a6b6e);color:#ffffff;}.ui-datepicker .ui-datepicker-prev:hover,.ui-datepicker .ui-datepicker-next:hover{color:#ffffff;border-color:#2e63a5;background:#93ffff;filter:expression("progid:DXImageTransform.Microsoft.gradient(startColorstr='#5e9ae2',endColorstr='#3570b8')");-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr='#5e9ae2',endColorstr='#3570b8')";background:-moz-linear-gradient(0% 100% 90deg, #3570b8, #5e9ae2);background:-webkit-gradient(linear, left top, left bottom, from(#5e9ae2), to(#3570b8));background:-o-linear-gradient(0% 100% 90deg, #3570b8, #5e9ae2);}
+.ui-datepicker .ui-datepicker-prev:active,.ui-datepicker .ui-datepicker-next:active{color:#ffffff;border-color:#2e63a5;background:#93ffff;filter:expression("progid:DXImageTransform.Microsoft.gradient(startColorstr='#3570b8',endColorstr='#5e9ae2')");-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr='#3570b8',endColorstr='#5e9ae2')";background:-moz-linear-gradient(0% 100% 90deg, #5e9ae2, #3570b8);background:-webkit-gradient(linear, left top, left bottom, from(#3570b8), to(#5e9ae2));background:-o-linear-gradient(0% 100% 90deg, #5e9ae2, #3570b8);}
+.ui-datepicker .ui-datepicker-prev .ui-icon{background-position:-96px 0;}
+.ui-datepicker .ui-datepicker-next .ui-icon{background-position:-32px 0;}
+.ui-datepicker table .ui-state-default,.ui-datepicker table .ui-widget-content .ui-state-default,.ui-datepicker table .ui-widget-header .ui-state-default{border:1px #eeeeee solid;background:none;}
+.ui-datepicker table .ui-state-highlight,.ui-datepicker table .ui-widget-content .ui-state-highlight,.ui-datepicker table .ui-widget-header .ui-state-highlight{border-width:1px;border-style:solid;border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;color:#333333;border-color:#a9a9a9;background:#ffffff;filter:expression("progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdfdfd',endColorstr='#ececec')");-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdfdfd',endColorstr='#ececec')";background:-moz-linear-gradient(0% 100% 90deg, #ececec, #fdfdfd);background:-webkit-gradient(linear, left top, left bottom, from(#fdfdfd), to(#ececec));background:-o-linear-gradient(0% 100% 90deg, #ececec, #fdfdfd);}
+.ui-datepicker table .ui-state-focus,.ui-datepicker table .ui-widget-content .ui-state-focus,.ui-datepicker table .ui-widget-header .ui-state-focus{border-width:1px;border-style:solid;border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;color:#333333;border-color:#a9a9a9;background:#ffffff;filter:expression("progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdfdfd',endColorstr='#ececec')");-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdfdfd',endColorstr='#ececec')";background:-moz-linear-gradient(0% 100% 90deg, #ececec, #fdfdfd);background:-webkit-gradient(linear, left top, left bottom, from(#fdfdfd), to(#ececec));background:-o-linear-gradient(0% 100% 90deg, #ececec, #fdfdfd);}
+.ui-datepicker table .ui-state-hover,.ui-datepicker table .ui-widget-content .ui-state-hover,.ui-datepicker table .ui-widget-header .ui-state-hover{border-width:1px;border-style:solid;border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;color:#ffffff;border-color:#2e63a5;background:#93ffff;filter:expression("progid:DXImageTransform.Microsoft.gradient(startColorstr='#5e9ae2',endColorstr='#3570b8')");-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr='#5e9ae2',endColorstr='#3570b8')";background:-moz-linear-gradient(0% 100% 90deg, #3570b8, #5e9ae2);background:-webkit-gradient(linear, left top, left bottom, from(#5e9ae2), to(#3570b8));background:-o-linear-gradient(0% 100% 90deg, #3570b8, #5e9ae2);}
+.ui-datepicker table .ui-state-active,.ui-datepicker table .ui-widget-content .ui-state-active,.ui-datepicker table .ui-widget-header .ui-state-active{border-width:1px;border-style:solid;border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;color:#ffffff;border-color:#2e63a5;background:#93ffff;filter:expression("progid:DXImageTransform.Microsoft.gradient(startColorstr='#3570b8',endColorstr='#5e9ae2')");-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr='#3570b8',endColorstr='#5e9ae2')";background:-moz-linear-gradient(0% 100% 90deg, #5e9ae2, #3570b8);background:-webkit-gradient(linear, left top, left bottom, from(#3570b8), to(#5e9ae2));background:-o-linear-gradient(0% 100% 90deg, #5e9ae2, #3570b8);}
+.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-prev:hover{left:4px;}
+.ui-datepicker .ui-datepicker-next,.ui-datepicker .ui-datepicker-next:hover{right:4px;}
+.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px;}
+.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center;font-weight:normal;}
+.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0;}
+.ui-datepicker select.ui-datepicker-month-year{width:100%;}
+.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:49%;}
+.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em;}
+.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0;}
+.ui-datepicker td{border:0;padding:0px;}
+.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.6em;text-align:center;text-decoration:none;}
+.ui-datepicker .ui-datepicker-buttonpane{margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0;}
+.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible;}
+.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left;}
+.ui-datepicker.ui-datepicker-multi{width:auto;}
+.ui-datepicker-multi .ui-datepicker-group{float:left;}
+.ui-datepicker-multi .ui-datepicker-group table{width:100%;margin:0 auto .4em;}
+.ui-datepicker-multi-2 .ui-datepicker-group{width:50%;}
+.ui-datepicker-multi-3 .ui-datepicker-group{width:33.4%;}
+.ui-datepicker-multi-4 .ui-datepicker-group{width:25%;}
+.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header{border-left-width:0;}
+.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0;}
+.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left;}
+.ui-datepicker-row-break{clear:both;width:100%;}
+.ui-datepicker-rtl{direction:rtl;}
+.ui-datepicker-rtl .ui-datepicker-prev{right:4px;left:auto;}
+.ui-datepicker-rtl .ui-datepicker-next{left:4px;right:auto;}
+.ui-datepicker-rtl .ui-datepicker-prev:hover{right:4px;left:auto;}
+.ui-datepicker-rtl .ui-datepicker-next:hover{left:4px;right:auto;}
+.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right;}
+.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left;}
+.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current{float:right;}
+.ui-datepicker-rtl .ui-datepicker-group{float:right;}
+.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header{border-right-width:0;border-left-width:1px;}
+.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px;}
+.ui-datepicker-cover{position:absolute;z-index:-1;filter:mask();top:-4px;left:-4px;width:200px;height:200px;}
+.ui-progressbar{height:2em;margin:5px 0px;background:#ffffff;filter:expression("progid:DXImageTransform.Microsoft.gradient(startColorstr='#dfe0e1',endColorstr='#ffffff')");-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr='#dfe0e1',endColorstr='#ffffff')";background:-moz-linear-gradient(0% 100% 90deg, #ffffff, #dfe0e1);background:-webkit-gradient(linear, left top, left bottom, from(#dfe0e1), to(#ffffff));background:-o-linear-gradient(0% 100% 90deg, #ffffff, #dfe0e1);}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%;}
+.ui-progressbar .ui-widget-header{border-width:1px;border-style:solid;font-weight:bold;text-align:center;}
+.ui-progressbar .ui-widget-header{color:#ffffff;border-color:#2e63a5;background:#93ffff;filter:expression("progid:DXImageTransform.Microsoft.gradient(startColorstr='#5e9ae2',endColorstr='#3570b8')");-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr='#5e9ae2',endColorstr='#3570b8')";background:-moz-linear-gradient(0% 100% 90deg, #3570b8, #5e9ae2);background:-webkit-gradient(linear, left top, left bottom, from(#5e9ae2), to(#3570b8));background:-o-linear-gradient(0% 100% 90deg, #3570b8, #5e9ae2);}
+input.text,input.email,input.password,textarea.uniform{border-color:#a9a9a9;background:#ffffff;filter:expression("progid:DXImageTransform.Microsoft.gradient(startColorstr='#eff0f0',endColorstr='#ffffff')");-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr='#eff0f0',endColorstr='#ffffff')";background:-moz-linear-gradient(0% 100% 90deg, #ffffff, #eff0f0);background:-webkit-gradient(linear, left top, left bottom, from(#eff0f0), to(#ffffff));background:-o-linear-gradient(0% 100% 90deg, #ffffff, #eff0f0);}
+input.text:focus,input.email:focus,input.password:focus,textarea.uniform:focus{background:#ffffff;filter:expression("progid:DXImageTransform.Microsoft.gradient(startColorstr='#dfe0e1',endColorstr='#ffffff')");-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr='#dfe0e1',endColorstr='#ffffff')";background:-moz-linear-gradient(0% 100% 90deg, #ffffff, #dfe0e1);background:-webkit-gradient(linear, left top, left bottom, from(#dfe0e1), to(#ffffff));background:-o-linear-gradient(0% 100% 90deg, #ffffff, #dfe0e1);}
+div.selector span,div.uploader span.action,div.button{color:#333333;border-color:#a9a9a9;background:#ffffff;filter:expression("progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdfdfd',endColorstr='#ececec')");-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdfdfd',endColorstr='#ececec')";background:-moz-linear-gradient(0% 100% 90deg, #ececec, #fdfdfd);background:-webkit-gradient(linear, left top, left bottom, from(#fdfdfd), to(#ececec));background:-o-linear-gradient(0% 100% 90deg, #ececec, #fdfdfd);}
+div.uploader.focus span.action,div.uploader.hover span.action,div.uploader:hover span.action,div.button.focus,div.button:focus,div.button:hover,div.button.hover,div.selector.focus span,div.selector.hover span,div.selector:hover span{color:#ffffff;border-color:#2e63a5;background:#93ffff;filter:expression("progid:DXImageTransform.Microsoft.gradient(startColorstr='#5e9ae2',endColorstr='#3570b8')");-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr='#5e9ae2',endColorstr='#3570b8')";background:-moz-linear-gradient(0% 100% 90deg, #3570b8, #5e9ae2);background:-webkit-gradient(linear, left top, left bottom, from(#5e9ae2), to(#3570b8));background:-o-linear-gradient(0% 100% 90deg, #3570b8, #5e9ae2);}
+div.uploader.active span.action,div.uploader:active span.action,div.button.active,div.button:active,div.selector.focus:active span,div.selector:hover:active span,div.selector.active:hover span,div.selector.focus.active span{color:#ffffff;border-color:#2e63a5;background:#93ffff;filter:expression("progid:DXImageTransform.Microsoft.gradient(startColorstr='#3570b8',endColorstr='#5e9ae2')");-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr='#3570b8',endColorstr='#5e9ae2')";background:-moz-linear-gradient(0% 100% 90deg, #5e9ae2, #3570b8);background:-webkit-gradient(linear, left top, left bottom, from(#3570b8), to(#5e9ae2));background:-o-linear-gradient(0% 100% 90deg, #5e9ae2, #3570b8);}
+.selector,.selector *,.radio,.radio *,.checker,.checker *,.uploader,.uploader *,.button,.button *{margin:0;padding:0;}
+.selector,.checker,.button,.radio,.uploader{display:-moz-inline-box;display:inline-block;vertical-align:middle;zoom:1;*display:inline;}
+.selector select:focus,.radio input:focus,.checker input:focus,.uploader input:focus{outline:0;}
+input.text,input.email,input.password,textarea.uniform{padding:3px;border-style:solid;border-width:1px;border-radius:3px;-webkit-border-radius:3px;-moz-border-radius:3px;outline:0;}
+input.text:focus,input.email:focus,input.password:focus,textarea.uniform:focus{-webkit-box-shadow:0px 0px 4px rgba(0, 0, 0, 0.3);-moz-box-shadow:0px 0px 4px rgba(0, 0, 0, 0.3);box-shadow:0px 0px 4px rgba(0, 0, 0, 0.3);}
+div.selector{border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;border:1px solid #c1c1c1;position:relative;overflow:hidden;background:#ffffff url('images/selector.png') right center no-repeat;-webkit-box-shadow:inset 0 -10px 9px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 -10px 9px rgba(0, 0, 0, 0.05);box-shadow:inset 0 -10px 9px rgba(0, 0, 0, 0.05);margin:2px -2px;}
+div.selector span{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;border-right:1px solid #c1c1c1;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:5px;margin-right:20px;}
+div.selector select{top:0px;left:0px;position:absolute;height:100%;border:1px solid;background:none;width:100%;opacity:0;filter:alpha(opacity:0);}
+div.selector.focus,div.selector.hover,div.selector:hover,div.selector.focus:active,div.selector.focus.active,div.selector:hover:active,div.selector.active:hover,div.selector:active,div.selector.active{border:1px solid #2e63a5;}
+div.checker{margin-top:-0.3em;margin-right:0.3em;width:1em;height:1em;padding:0.2em;border:1px solid #a9a9a9;position:relative;border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;background:#ffffff;filter:expression("progid:DXImageTransform.Microsoft.gradient(startColorstr='#eff0f0',endColorstr='#ffffff')");-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr='#eff0f0',endColorstr='#ffffff')";background:-moz-linear-gradient(0% 100% 90deg, #ffffff, #eff0f0);background:-webkit-gradient(linear, left top, left bottom, from(#eff0f0), to(#ffffff));background:-o-linear-gradient(0% 100% 90deg, #ffffff, #eff0f0);}
+div.checker input{width:1em;height:1em;opacity:0;filter:alpha(opacity:0);display:inline-block;background:none;}
+div.checker span{width:1em;height:1em;display:-moz-inline-box;display:inline-block;text-align:center;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;}
+div.checker.focus span,div.checker:hover span{background-image:url(images/ui-icons_222222_256x240.png);background-position:-66px -147px;}
+div.checker span.checked{background:#5e9ae2;-webkit-box-shadow:inset 0 -6px 5px rgba(0, 0, 0, 0.2);-moz-box-shadow:inset 0 -6px 5px rgba(0, 0, 0, 0.2);box-shadow:inset 0 -6px 5px rgba(0, 0, 0, 0.2);background-image:url(images/ui-icons_ffffff_256x240.png);background-position:-66px -147px;}
+div.radio{margin-top:-0.3em;margin-right:0.3em;width:1em;height:1em;padding:0.2em;border-color:#a9a9a9;background:#ffffff;filter:expression("progid:DXImageTransform.Microsoft.gradient(startColorstr='#eff0f0',endColorstr='#ffffff')");-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr='#eff0f0',endColorstr='#ffffff')";background:-moz-linear-gradient(0% 100% 90deg, #ffffff, #eff0f0);background:-webkit-gradient(linear, left top, left bottom, from(#eff0f0), to(#ffffff));background:-o-linear-gradient(0% 100% 90deg, #ffffff, #eff0f0);border:1px solid #a9a9a9;border-radius:7px;-webkit-border-radius:7px;-moz-border-radius:7px;position:relative;}
+div.radio input{width:1em;height:1em;opacity:0;filter:alpha(opacity:0);text-align:center;display:inline-block;background:none;}
+div.radio span{width:1em;height:1em;border-radius:7px;-webkit-border-radius:7px;-moz-border-radius:7px;display:-moz-inline-box;display:inline-block;text-align:center;}
+div.radio span.checked{background:#5e9ae2;-webkit-box-shadow:inset 0 -6px 5px rgba(0, 0, 0, 0.2);-moz-box-shadow:inset 0 -6px 5px rgba(0, 0, 0, 0.2);box-shadow:inset 0 -6px 5px rgba(0, 0, 0, 0.2);}
+div.uploader{border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;border:1px solid #c1c1c1;cursor:pointer;position:relative;overflow:hidden;cursor:default;background:#ffffff;filter:expression("progid:DXImageTransform.Microsoft.gradient(startColorstr='#eff0f0',endColorstr='#ffffff')");-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr='#eff0f0',endColorstr='#ffffff')";background:-moz-linear-gradient(0% 100% 90deg, #ffffff, #eff0f0);background:-webkit-gradient(linear, left top, left bottom, from(#eff0f0), to(#ffffff));background:-o-linear-gradient(0% 100% 90deg, #ffffff, #eff0f0);}
+div.uploader span.action{line-height:100%;padding:5px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;text-align:center;float:right;display:inline;overflow:hidden;cursor:pointer;font:inherit;border-left:solid 1px #bbb;}
+div.uploader span.filename{line-height:100%;padding:5px !important;font:inherit;color:#777;padding:0px 10px;float:left;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:default;}
+div.uploader.focus,div.uploader.hover,div.uploader:hover{border-width:1px;border-style:solid;border-color:#2e63a5;}
+div.uploader.disabled span.action{color:#aaa;}
+div.uploader.disabled span.filename{border-color:#ddd;color:#aaa;}
+div.uploader input{opacity:0;filter:alpha(opacity:0);position:absolute;top:0;right:0;bottom:0;float:right;height:100%;border:none;cursor:default;width:100%;}
+div.button,div.button span{border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;}
+div.button{border-style:solid;border-width:1px;}
+div.button.disabled span,div.button:disabled span{color:#bbb;cursor:default;}
+div.button span{font-weight:bold;font-family:inherit;padding:5px;display:-moz-inline-box;display:inline-block;line-height:1;text-align:center;}
+div.button a,div.button button,div.button input{position:absolute;}
+div.button{cursor:pointer;position:relative;}
+.ui-helper-horizontal>DIV,.ui-helper-horizontal>LI,.ui-helper-horizontal>SPAN,.ui-helper-horizontal>LABEL,.ui-helper-horizontal>H1,.ui-helper-horizontal>H2,.ui-helper-horizontal>H3,.ui-helper-horizontal>H4{float:left;clear:none;display:block;}
+.wijmo-wijsplitter-vertical{overflow:hidden;position:relative;}
+.wijmo-wijsplitter-v-panel1{float:left;position:relative;}
+.wijmo-wijsplitter-v-panel1-content{position:relative;}
+.wijmo-wijsplitter-v-bar{float:left;position:relative;font-size:1px;width:2px;z-index:99;}
+.wijmo-wijsplitter-vertical .ui-resizable-e{right:-7px;width:10px;z-index:999;display:block;background-color:white;filter:alpha(opacity=0);-moz-opacity:0;opacity:0;}
+*html .wijmo-wijsplitter-vertical .ui-resizable-e{right:-4px;}
+*+html .wijmo-wijsplitter-vertical .ui-resizable-e{right:-4px;}
+.wijmo-wijsplitter-v-expander{position:absolute;z-index:999;}
+.wijmo-wijsplitter-v-expanded .wijmo-wijsplitter-v-expander{border-right:medium none;overflow:hidden;padding:12px 0;left:-8px;width:6px;z-index:999;}
+.wijmo-wijsplitter-v-expanded .wijmo-wijsplitter-v-expander .ui-icon{margin-left:-6px;}
+.wijmo-wijsplitter-v-collapsed .wijmo-wijsplitter-v-expander{border-left:medium none;overflow:hidden;padding:12px 0;right:-8px;width:6px;z-index:999;}
+.wijmo-wijsplitter-v-collapsed .wijmo-wijsplitter-v-expander .ui-icon{margin-left:-6px;}
+.wijmo-wijsplitter-v-panel2{float:left;}
+.wijmo-wijsplitter-v-panel2-content{position:relative;}
+.wijmo-wijsplitter-v-resize-helper{border-right:dotted 1px black;overflow:hidden;border-bottom:dotted 0 black;}
+.wijmo-wijsplitter-horizontal{overflow:hidden;position:relative;}
+.wijmo-wijsplitter-h-panel1{position:relative;}
+.wijmo-wijsplitter-h-panel1-content{overflow:auto;position:relative;}
+.wijmo-wijsplitter-h-bar{position:relative;font-size:1px;height:2px;z-index:999;}
+.wijmo-wijsplitter-horizontal .ui-resizable-s{bottom:-7px;height:10px;z-index:999;display:block;background-color:white;filter:alpha(opacity=0);-moz-opacity:0;opacity:0;}
+*html .wijmo-wijsplitter-horizontal .ui-resizable-s{bottom:-4px;}
+*+html .wijmo-wijsplitter-horizontal .ui-resizable-s{bottom:-4px;}
+.wijmo-wijsplitter-h-expander{position:absolute;z-index:999;}
+.wijmo-wijsplitter-h-expanded .wijmo-wijsplitter-h-expander{border-bottom:none;height:8px;overflow:hidden;padding:0 10px;top:-10px;z-index:999;}
+.wijmo-wijsplitter-h-expanded .wijmo-wijsplitter-h-expander .ui-icon{margin-top:-4px;}
+.wijmo-wijsplitter-h-collapsed .wijmo-wijsplitter-h-expander{border-top:none;height:8px;overflow:hidden;padding:0 10px;bottom:-10px;z-index:999;}
+.wijmo-wijsplitter-h-collapsed .wijmo-wijsplitter-h-expander .ui-icon{margin-top:-4px;}
+.wijmo-wijsplitter-h-panel2-content{overflow:auto;position:relative;}
+.wijmo-wijsplitter-h-resize-helper{border-bottom:dotted 1px black;overflow:hidden;border-right:dotted 0 black;}
+.wijmo-wijsuperpanel{overflow:hidden;outline:none;background-image:none;}
+.wijmo-wijsuperpanel-statecontainer{overflow:hidden;position:relative;zoom:1;}
+.wijmo-wijsuperpanel-contentwrapper{position:absolute;overflow:hidden;}
+.wijmo-wijsuperpanel-hbarcontainer,.wijmo-wijsuperpanel-vbarcontainer{font-size:0px;border:0;}
+.wijmo-wijsuperpanel-templateouterwrapper{position:relative;zoom:1;}
+.wijmo-wijsuperpanel-vbarcontainer .ui-state-default,.wijmo-wijsuperpanel-hbarcontainer .ui-state-default{width:16px;height:16px;position:absolute;}
+.wijmo-wijsuperpanel .wijmo-wijsuperpanel-vbarcontainer{position:absolute;width:18px;padding-top:18px;padding-bottom:18px;border:none;}
+.wijmo-wijsuperpanel .wijmo-wijsuperpanel-hbarcontainer{position:absolute;height:18px;padding-left:18px;padding-right:18px;border:none;}
+.wijmo-wijsuperpanel-handle{position:absolute;font-size:0px;overflow:hidden;}
+.wijmo-wijsuperpanel-handle *{font-size:0px;}
+.wijmo-wijsuperpanel-helper{border-style:dotted;background:transparent;}
+.wijmo-wijsuperpanel-button{position:absolute;padding:4px;}
+.wijmo-wijsuperpanel .ui-icon-gripsmall-diagonal-se{background:none;width:7px;height:7px;}
+.wijmo-wijsuperpanel-hbar-buttonleft{left:0;}
+.wijmo-wijsuperpanel-hbar-buttonright{right:0;}
+.wijmo-wijsuperpanel-vbar-buttontop{top:0;}
+.wijmo-wijsuperpanel-vbar-buttonbottom{bottom:0;}
+.wijmo-wijtextbox{outline:none;margin:0;padding:5px;}
+.wijmo-wijdropdown{display:inline-block;position:relative;width:auto;zoom:1;*display:inline;width:200px;}
+.wijmo-wijdropdown div.wijmo-dropdown-trigger{border-right:none;border-top:none;border-bottom:none;cursor:pointer;width:16px;height:100%;position:absolute;right:0;top:0;padding:0 3px;}
+.wijmo-wijdropdown .wijmo-dropdown-trigger .ui-icon{margin-top:3px;}
+.wijmo-wijdropdown label.wijmo-dropdown-label{display:block;padding:3px 26px 3px 5px;width:auto;border:none;}
+.wijmo-wijdropdown .wijmo-dropdown{position:absolute;height:250px;}
+.wijmo-wijdropdown .wijmo-dropdown .wijmo-dropdown-list{padding:0.4em;border:0 none;}
+.wijmo-wijdropdown .wijmo-dropdown .wijmo-dropdown-item{border:1px solid transparent;cursor:pointer;font-weight:normal;margin:1px 0;padding:3px 5px;text-align:left;*border-color:white;*filter:chroma(color=white);}
+.wijmo-wijdropdown .wijmo-dropdown .wijmo-dropdown-optgroup .wijmo-dropdown-items li{padding-left:10px;}
+.wijmo-wijdropdown .wijmo-dropdown .wijmo-optgroup-header{font-style:italic;}
+.wijmo-checkbox{position:relative;margin:3px 0;line-height:16px;width:16px;}
+.wijmo-checkbox .wijmo-checkbox-inputwrapper{width:0;height:0;overflow:hidden;}
+.wijmo-checkbox label{display:block;position:relative;margin:0;cursor:pointer;z-index:1;padding:0 0 0 1.4em;outline:none;margin:0 3px;width:8em;}
+.wijmo-checkbox .wijmo-checkbox-box{position:absolute;bottom:0;left:0;width:16px;height:16px;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;margin-right:3px;}
+.wijmo-checkbox .wijmo-checkbox-relative{position:relative;float:left;margin-right:3px;}
+.wijmo-wijradio{position:relative;margin:3px 0;width:16px;line-height:16px;}
+.wijmo-wijradio .wijmo-wijradio-inputwrapper{width:0;height:0;overflow:hidden;}
+.wijmo-wijradio label{display:block;position:relative;margin:0;cursor:pointer;z-index:1;padding:0 0 0 1.4em;outline:none;margin:0 3px;width:8em;}
+.wijmo-wijradio .wijmo-wijradio-box{position:absolute;bottom:0;left:0;width:16px;height:16px;line-height:16px;-moz-border-radius:10px;-webkit-border-radius:10px;border-radius:10px;}
+.wijmo-wijradio .wijmo-wijradio-relative{position:relative;float:left;margin-right:3px;}
+.wijmo-wijlist-list{cursor:default;overflow:hidden;}
+.wijmo-wijlist-ul{list-style:none;padding:2px;margin:0;display:block;border:0px;overflow:hidden;}
+.wijmo-wijlist-ul .wijmo-wijlist-item{margin:1px 0;padding:3px 5px;cursor:pointer;text-align:left;font-weight:normal;border:solid 1px transparent;}
+.wijmo-wijlist-ul .wijmo-wijlist-item.ui-state-hover{font-weight:normal;}
+.wijmo-wijlist .ui-resizable-se{width:7px;height:7px;background:none;}
+.wijmo-wijtooltip{position:absolute;z-index:9999;margin:0;}
+.wijmo-wijtooltip .wijmo-wijtooltip-close{background:none repeat scroll 0 0 transparent;border:medium none;display:block;height:16px;position:absolute;right:3px;top:3px;width:16px;}
+.wijmo-wijtooltip .wijmo-wijtooltip-title{background:none repeat scroll 0 0 transparent;border:medium none;color:inherit;padding:0.4em;}
+.wijmo-wijtooltip .wijmo-wijtooltip-container{padding:1em;overflow:hidden;}
+.wijmo-wijtooltip{border-width:2px;}
+.wijmo-wijtooltip .wijmo-wijtooltip-pointer,.wijmo-wijtooltip .wijmo-wijtooltip-pointer-inner{background:none;height:0;position:absolute;width:0;}
+.wijmo-wijtooltip-arrow-tr .wijmo-wijtooltip-pointer,.wijmo-wijtooltip-arrow-tc .wijmo-wijtooltip-pointer,.wijmo-wijtooltip-arrow-tl .wijmo-wijtooltip-pointer{border-bottom-width:14px;border-top:0 none;top:-14px;}
+.wijmo-wijtooltip-arrow-tr .wijmo-wijtooltip-pointer{border-left:18px dashed transparent;border-right:0 none;right:10px;}
+.wijmo-wijtooltip-arrow-tc .wijmo-wijtooltip-pointer{border-left:10px dashed transparent;border-right:10px dashed transparent;left:50%;margin-left:-10px;}
+.wijmo-wijtooltip-arrow-tl .wijmo-wijtooltip-pointer{border-left:0 none;border-right:18px dashed transparent;left:10px;}
+.wijmo-wijtooltip-arrow-tr .wijmo-wijtooltip-pointer-inner,.wijmo-wijtooltip-arrow-tc .wijmo-wijtooltip-pointer-inner,.wijmo-wijtooltip-arrow-tl .wijmo-wijtooltip-pointer-inner{border-bottom-color:inherit;border-bottom-style:solid;border-bottom-width:10px;bottom:-14px;*font-size:0;line-height:0;}
+.wijmo-wijtooltip-arrow-tr .wijmo-wijtooltip-pointer-inner{border-left:12px dashed transparent;border-right:0 none;right:2px;}
+.wijmo-wijtooltip-arrow-tc .wijmo-wijtooltip-pointer-inner{border-left:8px dashed transparent;border-right:8px dashed transparent;left:-8px;}
+.wijmo-wijtooltip-arrow-tl .wijmo-wijtooltip-pointer-inner{border-left:0 none;border-right-style:dashed;border-right-color:inherit;border-right-width:12px;left:2px;}
+.wijmo-wijtooltip-arrow-rb .wijmo-wijtooltip-pointer,.wijmo-wijtooltip-arrow-rc .wijmo-wijtooltip-pointer,.wijmo-wijtooltip-arrow-rt .wijmo-wijtooltip-pointer{border-left-width:14px;border-right:0 none;right:-14px;}
+.wijmo-wijtooltip-arrow-rb .wijmo-wijtooltip-pointer{border-bottom:0 none;border-top:18px dashed transparent;bottom:10px;}
+.wijmo-wijtooltip-arrow-rc .wijmo-wijtooltip-pointer{border-bottom:10px dashed transparent;border-top:10px dashed transparent;bottom:50%;margin-bottom:-10px;}
+.wijmo-wijtooltip-arrow-rt .wijmo-wijtooltip-pointer{border-bottom:18px dashed transparent;border-top:0 none;top:10px;}
+.wijmo-wijtooltip-arrow-rb .wijmo-wijtooltip-pointer-inner,.wijmo-wijtooltip-arrow-rc .wijmo-wijtooltip-pointer-inner,.wijmo-wijtooltip-arrow-rt .wijmo-wijtooltip-pointer-inner{border-left-color:inherit;border-left-style:solid;border-left-width:10px;left:-14px;*font-size:0;line-height:0;}
+.wijmo-wijtooltip-arrow-rb .wijmo-wijtooltip-pointer-inner{border-bottom:0 none;border-top-style:dashed;border-top-color:inherit;border-top-width:12px;bottom:2px;}
+.wijmo-wijtooltip-arrow-rc .wijmo-wijtooltip-pointer-inner{border-bottom:8px dashed transparent;border-top:8px dashed transparent;bottom:-8px;}
+.wijmo-wijtooltip-arrow-rt .wijmo-wijtooltip-pointer-inner{border-bottom-style:dashed;border-bottom-color:inherit;border-bottom-width:12px;border-top:0 none;top:2px;}
+.wijmo-wijtooltip-arrow-br .wijmo-wijtooltip-pointer,.wijmo-wijtooltip-arrow-bc .wijmo-wijtooltip-pointer,.wijmo-wijtooltip-arrow-bl .wijmo-wijtooltip-pointer{border-bottom:0 none;border-top-width:14px;bottom:-14px;}
+.wijmo-wijtooltip-arrow-br .wijmo-wijtooltip-pointer{border-left:18px dashed transparent;border-right:0 none;right:10px;}
+.wijmo-wijtooltip-arrow-bc .wijmo-wijtooltip-pointer{border-left:10px dashed transparent;border-right:10px dashed transparent;left:50%;margin-left:-10px;}
+.wijmo-wijtooltip-arrow-bl .wijmo-wijtooltip-pointer{border-left:0 none;border-right:18px dashed transparent;left:10px;}
+.wijmo-wijtooltip-arrow-br .wijmo-wijtooltip-pointer-inner,.wijmo-wijtooltip-arrow-bc .wijmo-wijtooltip-pointer-inner,.wijmo-wijtooltip-arrow-bl .wijmo-wijtooltip-pointer-inner{border-top-color:inherit;border-top-style:solid;border-top-width:10px;top:-14px;*font-size:0;line-height:0;}
+.wijmo-wijtooltip-arrow-br .wijmo-wijtooltip-pointer-inner{border-left:12px dashed transparent;border-right:0 none;right:2px;}
+.wijmo-wijtooltip-arrow-bc .wijmo-wijtooltip-pointer-inner{border-left:8px dashed transparent;border-right:8px dashed transparent;left:-8px;}
+.wijmo-wijtooltip-arrow-bl .wijmo-wijtooltip-pointer-inner{border-left:0 none;border-right:12px dashed transparent;left:2px;}
+.wijmo-wijtooltip-arrow-lb .wijmo-wijtooltip-pointer,.wijmo-wijtooltip-arrow-lc .wijmo-wijtooltip-pointer,.wijmo-wijtooltip-arrow-lt .wijmo-wijtooltip-pointer{border-left:0 none;border-right-width:14px;left:-14px;}
+.wijmo-wijtooltip-arrow-lb .wijmo-wijtooltip-pointer{border-bottom:0 none;border-top:18px dashed transparent;bottom:10px;}
+.wijmo-wijtooltip-arrow-lc .wijmo-wijtooltip-pointer{border-bottom:10px dashed transparent;border-top:10px dashed transparent;bottom:50%;margin-bottom:-10px;}
+.wijmo-wijtooltip-arrow-lt .wijmo-wijtooltip-pointer{border-bottom:18px dashed transparent;border-top:0 none;top:10px;}
+.wijmo-wijtooltip-arrow-lb .wijmo-wijtooltip-pointer-inner,.wijmo-wijtooltip-arrow-lc .wijmo-wijtooltip-pointer-inner,.wijmo-wijtooltip-arrow-lt .wijmo-wijtooltip-pointer-inner{border-right-color:inherit;border-right-style:solid;border-right-width:10px;right:-14px;*font-size:0;line-height:0;}
+.wijmo-wijtooltip-arrow-lb .wijmo-wijtooltip-pointer-inner{border-bottom:0 none;border-top:12px dashed transparent;bottom:2px;}
+.wijmo-wijtooltip-arrow-lc .wijmo-wijtooltip-pointer-inner{border-bottom:8px dashed transparent;border-top:8px dashed transparent;bottom:-8px;}
+.wijmo-wijtooltip-arrow-lt .wijmo-wijtooltip-pointer-inner{border-bottom-style:dashed;border-bottom-color:inherit;border-bottom-width:12px;border-top:0 none;top:2px;}
+.wijmo-wijmenu{width:150px;padding:0.3em;position:relative;}
+.wijmo-wijmenu .wijmo-wijsuperpanel{border:none;background:inherit;padding:0;}
+.wijmo-wijmenu-list{position:static;}
+.wijmo-wijmenu .wijmo-wijmenu-parent .wijmo-wijmenu-child{display:none;width:150px;padding:0.3em;}
+.wijmo-wijmenu .wijmo-wijmenu-parent{position:relative;}
+.wijmo-wijmenu .wijmo-wijmenu-child{position:relative;left:150px;top:0;}
+.wijmo-wijmenu .wijmo-wijmenu-item{width:100%;float:left;clear:both;margin:1px 0;padding:0;}
+.wijmo-wijmenu .wijmo-wijmenu-list .wijmo-wijmenu-item{background:none;border:none;}
+.wijmo-wijmenu .wijmo-wijmenu-link{display:block;width:92%;outline:none;text-decoration:none;font-weight:400;border:solid 1px transparent;float:left;line-height:16px;padding:0.3em;}
+.wijmo-wijmenu-horizontal{width:auto;}
+.wijmo-wijmenu-horizontal .wijmo-wijmenu-item{width:auto;clear:none;margin-right:3px;}
+.wijmo-wijmenu-horizontal .wijmo-wijmenu-child .wijmo-wijmenu-item{width:100%;}
+.wijmo-wijmenu-horizontal .wijmo-wijmenu-child{top:25px;left:0;}
+.wijmo-wijmenu-horizontal .wijmo-wijmenu-link{width:auto;padding:0.4em 0.3em;}
+.wijmo-wijmenu-horizontal .wijmo-wijmenu-child .wijmo-wijmenu-link{width:92%;}
+.wijmo-wijmenu .wijmo-wijmenu-list .ui-widget-header{clear:both;float:left;width:98%;font-size:12px;margin:1px 0;}
+.wijmo-wijmenu-horizontal .ui-widget-header{clear:none;width:auto;margin:0 3px 0 0;}
+.wijmo-wijmenu .ui-widget-header h1,.wijmo-wijmenu .ui-widget-header h2,.wijmo-wijmenu .ui-widget-header h3,.wijmo-wijmenu .ui-widget-header h4,.wijmo-wijmenu .ui-widget-header h5,.wijmo-wijmenu .ui-widget-header h6{float:left;display:block;font-size:1em;margin:0 auto;padding:0.3em 3%;}
+.wijmo-wijmenu-horizontal .ui-widget-header h1,.wijmo-wijmenu-horizontal .ui-widget-header h2,.wijmo-wijmenu-horizontal .ui-widget-header h3,.wijmo-wijmenu-horizontal .ui-widget-header h4,.wijmo-wijmenu-horizontal .ui-widget-header h5,.wijmo-wijmenu-horizontal .ui-widget-header h6{padding:0.4em 0.3em;}
+.wijmo-wijmenu a.ui-state-default:link,.wijmo-wijmenu a.ui-state-default:visited,.wijmo-wijmenu a.ui-state-default:hover,.wijmo-wijmenu a.ui-state-default:active,.wijmo-wijmenu a.ui-state-hover:link,.wijmo-wijmenu a.ui-state-hover:visited,.wijmo-wijmenu a.ui-state-hover:hover,.wijmo-wijmenu a.ui-state-hover:active,.wijmo-wijmenu a.ui-state-active:link,.wijmo-wijmenu a.ui-state-active:visited,.wijmo-wijmenu a.ui-state-active:hover,.wijmo-wijmenu a.ui-state-active:active{font-weight:400;border-style:solid;}
+.wijmo-wijmenu .wijmo-wijmenu-child .ui-state-hover{font-weight:400;}
+.wijmo-wijmenu .wijmo-wijmenu-separator{clear:both;float:left;height:1px;text-indent:-9999px;width:98%;margin:1px 0;font-size:0;}
+.wijmo-wijmenu-horizontal .wijmo-wijmenu-separator{height:auto;clear:none;width:1px;text-indent:-9999px;margin:0 3px 0 0;padding:0.4em 0;}
+.wijmo-wijmenu-horizontal .wijmo-wijmenu-child .wijmo-wijmenu-separator{clear:both;float:left;height:1px;text-indent:-9999px;width:98%;margin:1px 0;padding:0;}
+.wijmo-wijmenu .wijmo-wijmenu-group{clear:both;float:left;width:98%;margin:3px 0;padding:0 0.4em;}
+.wijmo-wijmenu-ipod{width:180px;}
+.wijmo-wijmenu-container{overflow:hidden;}
+.wijmo-wijmenu-ipod .wijmo-wijmenu-list{background:inherit;position:absolute;border-width:0;-moz-box-shadow:none;-webkit-box-shadow:none;}
+.wijmo-wijmenu-breadcrumb{margin:0;padding:0;}
+.wijmo-wijmenu-footer{margin-top:3px;}
+.wijmo-wijmenu-footer .ui-icon{margin:3px 0;}
+.wijmo-wijmenu-header{margin-bottom:3px;}
+.wijmo-wijmenu-breadcrumb li{float:left;list-style:none;font-size:.9em;margin:0;padding:0 .2em;}
+.wijmo-wijmenu-breadcrumb li.wijmo-wijmenu-prev-list,.wijmo-wijmenu-breadcrumb li.wijmo-wijmenu-current-crumb{clear:left;float:none;opacity:1;}
+.wijmo-wijmenu-breadcrumb li.wijmo-wijmenu-current-crumb{padding-top:.2em;}
+.wijmo-wijmenu-footer a:link,.wijmo-wijmenu-footer a:visited{float:left;width:100%;text-decoration:none;}
+.wijmo-wijmenu-footer a span{float:left;cursor:pointer;}
+.wijmo-wijmenu-breadcrumb .wijmo-wijmenu-prev-list a:link,.wijmo-wijmenu-breadcrumb .wijmo-wijmenu-prev-list a:visited,.wijmo-wijmenu-breadcrumb .wijmo-wijmenu-prev-list a:hover,.wijmo-wijmenu-breadcrumb .wijmo-wijmenu-prev-list a:active{background-image:none;text-decoration:none;}
+.wijmo-wijmenu-breadcrumb .wijmo-wijmenu-prev-list a{float:left;padding-right:.4em;}
+.wijmo-wijmenu-breadcrumb .wijmo-wijmenu-current-crumb a:link,.wijmo-wijmenu-breadcrumb .wijmo-wijmenu-current-crumb a:visited,.wijmo-wijmenu-breadcrumb .wijmo-wijmenu-current-crumb a:hover,.wijmo-wijmenu-breadcrumb .wijmo-wijmenu-current-crumb a:active{display:block;background-image:none;font-size:1.3em;text-decoration:none;}
+.wijmo-wijmenu .wijmo-wijmenu-parent .ui-icon,.wijmo-wijmenu-horizontal .wijmo-wijmenu-child .ui-icon,.wijmo-wijmenu-ipod .ui-icon-triangle-1-e{float:right;}
+.wijmo-wijmenu .wijmo-wijmenu-item .wijmo-wijmenu-text,.wijmo-wijmenu-horizontal .wijmo-wijmenu-parent .ui-icon,.wijmo-wijmenu-breadcrumb a,.wijmo-wijmenu-breadcrumb span,.wijmo-wijmenu-breadcrumb .wijmo-wijmenu-prev-list a .ui-icon{float:left;}
+.wijmo-wijmenu .wijmo-wijmenu-link .wijmo-wijmenu-icon-left{display:inline-block;float:left;}
+.wijmo-wijmenu .wijmo-wijmenu-link .wijmo-wijmenu-icon-right{display:inline-block;float:right;}
+.wijmo-wijpager .ui-icon{cursor:pointer;}
+.wijmo-wijpager .ui-list{float:left;padding:1px;margin:0;}
+.wijmo-wijpager .ui-list .ui-page{float:left;height:auto;line-height:16px;list-style:none outside none;margin:0 1px;width:auto;}
+.wijmo-wijpager .ui-list .ui-page span{margin:2px;}
+.wijmo-wijpager .ui-list .ui-page a,.wijmo-wijpager .ui-list .ui-state-active span{padding:2px 5px;display:block;margin:0;}
+.wijmo-wijpager .ui-list{background:none;border:none;}
+.wijmo-wijcombobox{position:relative;}
+.wijmo-wijcombobox-wrapper{float:left;}
+.wijmo-wijcombobox-input{background:none repeat scroll 0 0 transparent;border:0 none;color:inherit;padding:3px 5px 3px 5px;outline:none;}
+.wijmo-wijcombobox .wijmo-wijcombobox-label{background:transparent;border:none;font-weight:normal;position:absolute;white-space:nowrap;}
+.wijmo-wijcombobox-loading{background:transparent url('images/ui-anim_basic_16x16.gif') right center no-repeat;}
+.wijmo-wijcombobox .wijmo-wijcombobox-trigger{position:absolute;top:0px;font-size:0px;width:20px;cursor:pointer;}
+.wijmo-wijcombobox-list{position:absolute;overflow:hidden;}
+.wijmo-wijcombobox-ul .wijmo-wijcombobox-item{margin:0;padding:.2em .4em;line-height:1.5;white-space:nowrap;}
+.wijmo-wijcombobox-ul .wijmo-wijcombobox-item.ui-state-hover,.wijmo-wijcombobox-ul .wijmo-wijcombobox-item.ui-state-active{font-weight:normal;margin:-1px;}
+.wijmo-wijcombobox-ul .wijmo-wijlist-item-selected{font-style:italic;}
+.wijmo-wijcombobox-multicolumn .wijmo-wijcombobox-row,.wijmo-wijcombobox-multicolumn .wijmo-wijcombobox-rowheader{list-style:none none outside;padding:0px;margin:0;border:0px;overflow:hidden;width:10000px;}
+.wijmo-wijcombobox-multicolumn .wijmo-wijcombobox-cell{float:left;overflow:hidden;border-width:0;text-align:center;width:100px;}
+.wijmo-wijcombobox-multicolumn .wijmo-wijcombobox-rowheader .wijmo-wijcombobox-cell{border-right-width:1px;}
+.wijmo-wijcombobox-multicolumn .wijmo-wijcombobox-row .wijmo-wijcombobox-cell{border-right-width:1px;border-bottom-width:1px;}
+.wijmo-wijcombobox-multicolumn .wijmo-wijsuperpanel-header{border-width:0px;border-bottom-width:1px;}
+.wijmo-wijcombobox-multicolumn .wijmo-wijlist-item,.wijmo-wijcombobox-multicolumn .wijmo-wijlist-ul{padding:0px;border:0px;}
+.wijmo-wijcombobox-multicolumn .wijmo-wijcombobox-active-prev .wijmo-wijcombobox-cell{border-bottom-width:0px;}
+.wijmo-wijcombobox-multicolumn .wijmo-wijcombobox-row .ui-state-hover{border-top-width:1px;}
+.wijmo-wijcombobox-multicolumn .wijmo-wijlist-item-first .ui-state-hover{border-top-width:0px;}
+.wijmo-wijlist-ul .wijmo-wijlist-item{cursor:pointer;}
+.wijmo-wijinput{position:relative;width:150px;}
+.wijmo-wijinput-wrapper{float:left;margin-right:0;width:100%;}
+.wijmo-wijinput-input{background:none;border:0 none;color:inherit;float:right;outline:none;margin:0;line-height:16px;height:16px;padding:5px;}
+.wijmo-wijinput .wijmo-wijinput-trigger{position:absolute;right:0;width:16px;cursor:pointer;padding:0 3px;height:100%;}
+.wijmo-wijinput .wijmo-wijinput-trigger .ui-icon{margin-top:40%;}
+.ui-input-trigger-right .wijmo-wijinput-input,.ui-input-spinner-right .wijmo-wijinput-input{padding:5px 25px 5px 5px;}
+.ui-input-trigger-left .wijmo-wijinput-input,.ui-input-spinner-left .wijmo-wijinput-input{padding:5px 5px 5px 25px;}
+.ui-input-trigger-right .wijmo-wijinput-trigger{position:absolute;right:0;top:0;}
+.ui-input-trigger-left .wijmo-wijinput-trigger{position:absolute;left:0;top:0;}
+.ui-input-trigger-right .wijmo-wijinput-trigger{border-right:none;border-top:none;border-bottom:none;}
+.ui-input-trigger-left .wijmo-wijinput-trigger{border-left:none;border-top:none;border-bottom:none;}
+.wijmo-wijinput .wijmo-wijinput-spinner{position:absolute;right:0;top:0;width:17px;cursor:pointer;height:100%;}
+.ui-input-spinner-left .wijmo-wijinput-spinner{position:absolute;left:0;top:0;}
+.wijmo-wijinput-spinup{border-bottom:none;display:block;height:50%;width:16px;position:relative;}
+.wijmo-wijinput-spindown{border-top:none;display:block;height:50%;width:16px;position:relative;}
+.ui-input-spinner-right .wijmo-wijinput-spinup{border-right:none;border-top:none;}
+.ui-input-spinner-right .wijmo-wijinput-spindown{border-right:none;border-bottom:none;}
+.ui-input-spinner-left .wijmo-wijinput-spinup{border-left:none;border-top:none;}
+.ui-input-spinner-left .wijmo-wijinput-spindown{border-left:none;border-bottom:none;}
+.wijmo-wijinput-numeric{text-align:right;}
+.wijmo-wijinput-date,.wijmo-wijinput-mask{float:left;}
+.ui-input-spinner-trigger-right .wijmo-wijinput-spinner{right:23px;}
+.ui-input-spinner-trigger-right .wijmo-wijinput-input{padding:5px 42px 5px 5px;}
+.ui-input-spinner-trigger-right .wijmo-wijinput-spinup,.ui-input-spinner-trigger-right .wijmo-wijinput-spindown,.ui-input-spinner-trigger-right .wijmo-wijinput-trigger{border-top:none;border-right:none;}
+.ui-input-spinner-trigger-left .wijmo-wijinput-trigger{left:0;}
+.ui-input-spinner-trigger-left .wijmo-wijinput-spinner{left:23px;}
+.ui-input-spinner-trigger-left .wijmo-wijinput-input{padding:5px 5px 5px 42px;}
+.ui-input-spinner-trigger-left .wijmo-wijinput-spinup,.ui-input-spinner-trigger-left .wijmo-wijinput-spindown,.ui-input-spinner-trigger-left .wijmo-wijinput-trigger{border-top:none;border-left:none;}
+.wijmo-wijgrid{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;overflow:hidden;}
+.wijmo-wijgrid-loading{background:transparent url('images/ui-anim_basic_16x16.gif') left top no-repeat;min-height:16px;min-width:16px;}
+.wijmo-wijgrid .wijmo-wijsuperpanel{border:0;}
+.wijmo-wijgrid .wijmo-wijgrid-table .wijmo-wijgrid-filter-trigger{position:absolute;right:0;top:0;height:16px;width:16px;display:block;padding:5px 3px;border-top:none;border-right:none;border-bottom:none;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;}
+.wijmo-wijgrid .wijmo-wijgrid-table .wijmo-wijgrid-filter-input{width:auto;height:16px;border:none;padding:5px 3px;overflow:visible;color:inherit;outline:none;position:relative;z-index:5;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;background:none;}
+.wijmo-wijgrid .wijmo-wijgrid-filter{position:relative;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;border-top:none;border-left:none;border-bottom:none;}
+.wijmo-wijgrid .wijmo-wijgrid-filter .wijmo-wijinput{border:none;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;}
+.wijmo-wijgrid-filtericon{background:url('images/filterop.png') no-repeat;text-indent:-9999px;overflow:hidden;height:16px;width:16px;display:none;}
+.filter-nofilter{background-position:0 0px;}
+.filter-contains{background-position:0 -16px;}
+.filter-notcontain{background-position:0 -32px;}
+.filter-beginswith{background-position:0 -48px;}
+.filter-endswith{background-position:0 -64px;}
+.filter-equals{background-position:0 -80px;}
+.filter-notequal{background-position:0 -96px;}
+.filter-greater{background-position:0 -112px;}
+.filter-less{background-position:0 -128px;}
+.filter-greaterorequal{background-position:0 -144px;}
+.filter-lessorequal{background-position:0 -160px;}
+.filter-isempty{background-position:0 -176px;}
+.filter-notisempty{background-position:0 -192px;}
+.filter-isnull{background-position:0 -208px;}
+.filter-notisnull{background-position:0 -224px;}
+.wijmo-wijpager .ui-icon{cursor:pointer;}
+.wijmo-wijgrid .wijmo-wijgrid-grouptogglebtn{float:left;cursor:pointer;margin-top:3px;}
+.wijmo-wijgrid .wijmo-wijgrid-table{border-collapse:collapse;outline:none;}
+.wijmo-wijgrid-rowheader{width:21px;}
+.wijmo-wijgrid .wijmo-wijgrid-header,.wijmo-wijgrid .wijmo-wijgrid-footer{border-left:none !important;border-top:none !important;border-bottom:none !important;padding:0.2em;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;}
+.wijmo-wijgrid tr.wijmo-wijgrid-row{border-bottom:none;}
+.wijmo-wijgrid tr.wijmo-wijgrid-row td{border:none;border-right-color:inherit;border-right-style:solid;border-right-width:1px;border-top-color:inherit;border-top-style:solid;border-top-width:1px;text-align:left;overflow:hidden;}
+.wijmo-wijgrid .wijgridtd{font-weight:normal;padding:0px;}
+.wijmo-wijgrid .wijgridth{padding:0px;}
+.wijmo-wijgrid .wijmo-wijgrid-headerrow .wijmo-c1basefield{zoom:1;overflow:hidden;border-left:0;border-top:0;padding:0px;position:relative;}
+.wijmo-wijgrid .wijmo-wijgrid-headerrow .wijmo-wijgrid-headertext{padding:0.5em 1em;display:block;text-align:center;position:relative;}
+.wijmo-wijgrid .wijmo-wijgrid-headerrow .ui-icon{width:16px;height:16px;position:absolute;right:0;top:50%;margin-top:-8px;z-index:99;}
+.wijmo-wijgrid .wijmo-wijgrid-filterrow td{border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:inherit;}
+.wijmo-wijgrid .wijmo-wijpager{display:block;position:relative;}
+.wijmo-wijgrid-resizehandle{position:absolute;z-index:99999;}
+.wijmo-wijgrid-v-splitter,.wijmo-wijgrid-h-splitter{background-color:white;width:4px;height:4px;position:absolute;z-index:10;display:none;}
+.wijmo-wijgrid-splits-enabled .wijmo-wijgrid-v-splitter{border-right:1px solid #000000;display:block;cursor:w-resize;}
+.wijmo-wijgrid-splits-enabled .wijmo-wijgrid-h-splitter{border-bottom:1px solid #000000;display:block;cursor:n-resize;}
+.wijmo-wijgrid-splits-enabled .wijmo-wijgrid-v-splitter.ui-draggable-dragging,.wijmo-wijgrid-splits-enabled .wijmo-wijgrid-h-splitter.ui-draggable-dragging{background-color:#626262;}
+.wijmo-wijgrid-filterlist{position:absolute;left:0;top:0;z-index:100;}
+.wijmo-wijgrid-scroller{overflow:hidden;}
+.wijmo-wijgrid-fixedview{position:relative;}
+.wijmo-wijgrid-scroller{border:0px;}
+.wijmo-wijgrid .wijmo-wijsuperpanel-vbar-buttontop{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;top:-1px;}
+.wijmo-wijgrid .wijmo-wijsuperpanel-vbar-buttonbottom{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;bottom:-1px;}
+.wijmo-wijgrid .wijgridinput{width:100%;margin:0;border:none;padding:0;text-align:inherit;}
+.wijmo-wijgrid tr.wijmo-wijgrid-row td.wijdata-type-currency,.wijmo-wijgrid tr.wijmo-wijgrid-row td.wijdata-type-number,.wijmo-wijgrid tr.wijmo-wijgrid-row td.wijdata-type-date{text-align:right;}
+.wijmo-wijgrid tr.wijmo-wijgrid-row td.wijdata-type-boolean{text-align:center;}
+.wijmo-wijgrid .wijmo-wijgrid-innercell{padding:1px 2px;}
+.wijmo-wijgrid .wijmo-wijcombobox-wrapper{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;border-top:0;border-bottom:0;border-left:0;}
+.wijmo-wijgrid .wijmo-wijcombobox .wijmo-wijcombobox-trigger{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;border-top:0;border-bottom:0;border-right:0;}
+.wijmo-wijgrid .wijmo-wijcombobox-input{padding:0;}
+.wijmo-wijgrid .ui-input-trigger-right .wijmo-wijinput-input,.wijmo-wijgrid .ui-input-spinner-right .wijmo-wijinput-input{padding:0px 25px 0px 5px;}
+.wijmo-wijgrid .wijmo-wijinput{border:none;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;}
+.wijmo-wijgrid .wijmo-wijinput-spinup{height:7px;}
+.wijmo-wijgrid .wijmo-wijinput-spindown{height:7px;}
+.wijmo-wijgrid .wijmo-wijinput-spinner .ui-icon-triangle-1-n{background-position:0 -20px;}
+.wijmo-wijgrid .wijmo-wijinput-spinner .ui-icon-triangle-1-s{background-position:-64px -20px;}
+.wijmo-wijgrid-dnd-arrow-top,.wijmo-wijgrid-dnd-arrow-bottom{z-index:1000;width:16px;height:16px;}
+.wijmo-wijgrid-dnd-arrow-top .ui-icon{position:absolute;top:-4px;}
+.wijmo-wijgrid-dnd-arrow-bottom .ui-icon{position:absolute;top:4px;}
+.wijmo-wijgrid-dnd-helper{border:1px solid #F0F0F0 !important;filter:alpha(opacity=70) !important;-moz-opacity:0.7;opacity:0.7;z-index:1000;}
+.wijmo-wijgrid th.ui-draggable{cursor:pointer;}
+.wijmo-wijgrid-footerrow{text-align:right;}
+.wijmo-wijgrid-group-button{float:left;padding:0.4em 1.4em 0.4em 0.4em;position:relative;margin:0.4em;text-decoration:none;}
+.wijmo-wijgrid-group-button-close{float:right;margin:0 3px 0 24px;padding:1px;position:absolute;right:-14px;top:-7px;border-radius:15px;-webkit-border-radius:15px;-moz-border-radius:15px;}
+.wijmo-wijgrid-group-button-sort{position:absolute;right:3px;top:25%;}
+.wijmo-wijgrid-group-area{height:35px;}
+.wijmo-wijupload ul{margin:0;padding:0;}
+.wijmo-wijupload li{list-style:none outside none;position:relative;padding:5px 110px 5px 5px;width:100%;}
+.wijmo-wijupload .wijmo-wijupload-buttonContainer{position:absolute;right:0;top:0;}
+.wijmo-wijupload .wijmo-wijupload-file{display:block;padding:0.4em;line-height:1.4;}
+.wijmo-wijupload .wijmo-wijupload-loading{width:16px;height:16px;background-image:url("images/ui-anim_basic_16x16.gif");display:block;float:left;top:25%;left:-10px;position:relative;}
+.wijmo-wijupload .ui-button{margin:2px;}
+.wijmo-wijwizard{position:relative;}
+.wijmo-wijwizard-steps li{float:left;padding:0.4em;margin:0 3px 0 0;}
+.wijmo-wijwizard-steps h1{margin:0;padding:0;font-size:24px;}
+.wijmo-wijwizard-content{margin:3px 0;}
+.wijmo-wijwizard .wijmo-wijwizard-panel{display:block;border-width:0;padding:1em 1.4em;background:none;}
+.wijmo-wijwizard .wijmo-wijwizard-hide{display:none !important;}
+.wijmo-wijwizard-buttons{float:right;}
+.wijmo-wijwizard-next,.wijmo-wijwizard-prev{display:block;position:absolute;padding:3px 0;}
+.wijmo-wijwizard-next{right:0;top:49%;}
+.wijmo-wijwizard-prev{left:0;top:49%;}
+.ui-accordion a{outline:none;}
+.ui-accordion-right .ui-accordion-header,.ui-accordion-left .ui-accordion-header{margin-top:0;margin-left:1px;width:2em;height:12em;overflow:hidden;}
+.ui-accordion-right .ui-accordion-content,.ui-accordion-left .ui-accordion-content{margin:0;height:200px;width:36em;height:12em;padding:0 2.2em;top:0;padding:1px;border:none;}
+.ui-accordion-right .ui-accordion-header a,.ui-accordion-left .ui-accordion-header a{-webkit-transform:rotate(-90deg);-moz-transform:rotate(-90deg);-o-transform:rotate(-90deg);filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";position:absolute;top:2.5em;left:-0.7em;text-align:center;}
+.ui-accordion-top .ui-accordion-header.ui-state-hover .ui-icon{background:#5e9ae2 url(images/ui-icons_ffffff_256x240.png);background-position:-34px -2px;border:1px solid #2e63a5;}
+.ui-accordion-top .ui-accordion-header.ui-state-active .ui-icon,.ui-accordion-top .ui-accordion-header.ui-state-hover.ui-state-active .ui-icon{background-position:-1px -2px;}
+.ui-accordion-left .ui-accordion-header .ui-icon,.ui-accordion-right .ui-accordion-header .ui-icon{top:1em;left:50%;margin-left:-7px;background-position:-66px -1px;}
+.ui-accordion-left .ui-accordion-header,.ui-accordion-right .ui-accordion-header,.ui-accordion-left .ui-accordion-header.ui-state-active,.ui-accordion-right .ui-accordion-header.ui-state-active,.ui-accordion-left .ui-accordion-header.ui-state-hover,.ui-accordion-right .ui-accordion-header.ui-state-hover,.ui-accordion-left .ui-accordion-header.ui-state-focus,.ui-accordion-right .ui-accordion-header.ui-state-focus{color:#333333;border-color:#a9a9a9;background:#ffffff;filter:expression("progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdfdfd',endColorstr='#ececec',GradientType=1)");-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdfdfd',endColorstr='#ececec',GradientType=1)";background:-moz-linear-gradient(0% 100% 180deg, #ececec, #fdfdfd);background:-webkit-gradient(linear, left top, right top, from(#fdfdfd), to(#ececec));background:-o-linear-gradient(0% 100% 180deg, #ececec, #fdfdfd);}
+.ui-accordion-right .ui-accordion-header.ui-state-hover .ui-icon{background:#5e9ae2 url(images/ui-icons_ffffff_256x240.png);background-position:-66px -1px;border:1px solid #2e63a5;}
+.ui-accordion-right .ui-accordion-header.ui-state-active .ui-icon,.ui-accordion-right .ui-accordion-header.ui-state-hover.ui-state-active .ui-icon{background-position:-34px -2px;}
+.ui-accordion-left .ui-accordion-header.ui-state-hover .ui-icon{background:#5e9ae2 url(images/ui-icons_ffffff_256x240.png);background-position:-66px -1px;border:1px solid #2e63a5;}
+.ui-accordion-left .ui-accordion-header.ui-state-active .ui-icon,.ui-accordion-left .ui-accordion-header.ui-state-hover.ui-state-active .ui-icon{background-position:-98px -2px;}
+.ui-tabs-bottom .ui-tabs-nav{border-bottom:0 !important;border-top:1px solid #a9a9a9;}
+.ui-tabs-left .ui-tabs-nav{float:left;overflow:hidden;}
+.ui-tabs-left .ui-tabs-nav li{white-space:normal;float:right;display:block;width:98%;}
+.ui-tabs-left .ui-tabs-nav li a,.ui-tabs-right .ui-tabs-nav li a{float:none;display:block;}
+.ui-tabs-left .ui-tabs-nav li{top:-1px;left:3px;margin-bottom:2px;}
+.ui-tabs-left .ui-tabs-panel{padding:1.6em;}
+.ui-tabs-left .ui-tabs-nav li.ui-tabs-selected{border-right:medium none;margin-bottom:2px;}
+.ui-tabs-left .ui-tabs-nav{padding:0.2em 0 0 0;}
+.ui-tabs-left .wijmo-wijtabs-content{float:right;width:75%;overflow:hidden;}
+.ui-tabs-left .ui-tabs-nav{min-height:300px;width:23%;height:100%;}
+.ui-tabs-right .ui-tabs-nav{float:right;overflow:hidden;}
+.ui-tabs-right .ui-tabs-nav li{white-space:normal;float:left;display:block;width:98%;}
+.ui-tabs-right .ui-tabs-nav li{top:-1px;left:0;margin-bottom:2px;}
+.ui-tabs-right .ui-tabs-panel{padding:1.6em;}
+.ui-tabs-right .ui-tabs-nav li.ui-tabs-selected{border-left:medium none;margin-bottom:2px;}
+.ui-tabs-right .ui-tabs-nav{padding:0.2em 0 0 0;}
+.ui-tabs-right .wijmo-wijtabs-content{float:left;width:75%;overflow:hidden;}
+.ui-tabs-right .ui-tabs-nav{min-height:300px;width:23%;}
+.ui-tabs-left .ui-tabs-nav li.ui-tabs-selected{margin-right:2px;padding-right:1px;}
+.ui-tabs-right .ui-tabs-nav li.ui-tabs-selected{margin-left:-1px;padding-left:1px;}
+.wijmo-wijtree{width:360px;padding:0.5em;}
+.wijmo-wijtree .wijmo-checkbox{margin:0;float:left;}
+.wijmo-wijtree .wijmo-wijtree-parent span{float:left;}
+.wijmo-wijtree .wijmo-wijtree-child{margin-left:32px;}
+.wijmo-wijtree .wijmo-wijtree-list .wijmo-wijtree-node{border:0px;background:none;display:block;float:left;clear:both;font-weight:normal;margin:0 20px 0 0;}
+.wijmo-wijtree-inner{border:1px solid transparent;padding:3px;vertical-align:middle;}
+.wijmo-wijtree .wijmo-wijtree-list .wijmo-wijtree-node .wijmo-wijtree-inner a,.wijmo-wijtree .wijmo-wijtree-list .wijmo-wijtree-node .wijmo-wijtree-inner .wijmo-wijtree-template{outline:none;margin:0 0 0 0.5em;display:block;float:left;}
+.wijmo-wijtree .wijmo-wijtree-list li.wijmo-wijtree-node{margin-left:16px;}
+.wijmo-wijtree .wijmo-wijtree-list .ui-state-default a,.wijmo-wijtree .wijmo-wijtree-list .ui-state-default{color:inherit;}
+.wijmo-wijtree .wijmo-wijtree-list .ui-state-hover,.wijmo-wijtree .wijmo-wijtree-list .ui-state-active{font-weight:normal;}
+wijmo-wijtree a.ui-state-default:link,wijmo-wijtree a.ui-state-default:visited,wijmo-wijtree a.ui-state-default:hover,wijmo-wijtree a.ui-state-default:active,wijmo-wijtree a.ui-state-hover:link,wijmo-wijtree a.ui-state-hover:visited,wijmo-wijtree a.ui-state-hover:hover,wijmo-wijtree a.ui-state-hover:active,wijmo-wijtree a.ui-state-active:link,wijmo-wijtree a.ui-state-active:visited,wijmo-wijtree a.ui-state-active:hover,wijmo-wijtree a.ui-state-active:active{border-style:solid;font-weight:normal;}
+.wijmo-wijtree .wijmo-wijtree-list .wijmo-wijtree-item{padding:0;width:100%;float:left;clear:left;margin:0 0 0 16px;display:inline;width:100%;}
+.wijmo-wijtree .wijmo-wijtree-list .ui-icon{float:left;}
+.wijmo-wijtree .wijmo-wijtree-list .wijmo-wijtree-parent{margin:0;padding:0;width:100%;float:left;clear:left;}
+.wijmo-wijtree-insertion{height:1px;font-size:0px;}
+.wijmo-wijtree-node .wijmo-wijtextbox{padding:0;margin:0;float:left;margin:0 0 0 0.5em;}
+.wijmo-wijexpander{margin:1px;padding:0;display:block;}
+.wijmo-wijexpander a{outline:none;}
+.wijmo-wijexpander .ui-expander-header{cursor:pointer;margin-top:1px;position:relative;}
+.ui-expander .ui-expander-content{border-top:0 none;display:none;margin-bottom:2px;margin-top:-2px;overflow:auto;padding:1em 2.2em;position:relative;top:1px;}
+.wijmo-wijexpander .ui-expander-header a{display:block;font-size:1em;padding:0.5em 0.5em 0.5em 0.7em;}
+.wijmo-wijexpander .ui-expander-header .ui-icon{left:0.5em;margin-top:-8px;position:absolute;top:50%;}
+.wijmo-wijexpander .ui-expander-content-active{display:block;border-top:0 none;padding:1em 2.2em;}
+.wijmo-wijexpander .ui-expander-header>a{padding-left:2.2em;}
+.ui-helper-horizontal.wijmo-wijexpander .ui-expander-header .ui-icon{left:inherit;margin-top:inherit;margin-left:-8px;position:absolute;top:0.5em;left:50%;}
+.ui-helper-horizontal.wijmo-wijexpander .ui-expander-header>a{padding-left:inherit;padding-top:2.2em;display:inline-block;}
+.ui-expander-right .ui-expander-header{margin:0 1px;width:2em;height:12em;overflow:hidden;}
+.ui-expander-right .ui-expander-content{margin:0;height:200px;width:12em;height:12em;padding:0 2.2em;}
+.ui-expander-right .ui-expander-content{top:0;margin-left:-2px;padding:1px;border:none;margin-right:1px;}
+.ui-expander-right .ui-state-active{border-right:none;}
+.ui-expander-left .ui-expander-header{margin:0 1px;width:2em;height:12em;overflow:hidden;}
+.ui-expander-left .ui-expander-content{margin:0;height:200px;width:12em;height:12em;padding:0 2.2em;}
+.ui-expander-left .ui-expander-content{border:none;padding:1px;top:0;margin-right:-2px;margin-left:1px;}
+.ui-expander-left .ui-state-active{border-left:none;}
+.ui-expander-left .ui-expander-header .ui-icon{top:10%;}
+.ui-expander .ui-expander-header{cursor:pointer;position:relative;margin-top:1px;zoom:1;border:solid 1px #a9a9a9;border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;}.ui-expander .ui-expander-header a{display:block;font-size:1em;padding:.5em .5em .5em .7em;color:inherit;padding-left:2.6em;}
+.ui-expander .ui-expander-header .ui-icon{position:absolute;left:.5em;top:50%;margin-top:-7px;width:13px;height:13px;border:1px solid #a9a9a9;background:#ffffff url(images/ui-icons_222222_256x240.png);background-position:-34px -2px;border-radius:7px;-webkit-border-radius:7px;-moz-border-radius:7px;-webkit-box-shadow:inset 0 -6px 5px rgba(0, 0, 0, 0.1);-moz-box-shadow:inset 0 -6px 5px rgba(0, 0, 0, 0.1);box-shadow:inset 0 -6px 5px rgba(0, 0, 0, 0.1);}
+.ui-expander .ui-expander-header.ui-state-hover .ui-icon{background:#5e9ae2 url(images/ui-icons_ffffff_256x240.png);background-position:-34px -2px;border:1px solid #2e63a5;}
+.ui-expander .ui-expander-header.ui-state-active .ui-icon,.ui-expander .ui-expander-header.ui-state-hover.ui-state-active .ui-icon{background-position:-66px -1px;}
+.ui-expander .ui-expander-header,.ui-expander .ui-expander-header.ui-state-active,.ui-expander .ui-expander-header.ui-state-hover,.ui-expander .ui-expander-header.ui-state-focus{color:#333333;border-color:#a9a9a9;background:#ffffff;filter:expression("progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdfdfd',endColorstr='#ececec')");-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdfdfd',endColorstr='#ececec')";background:-moz-linear-gradient(0% 100% 90deg, #ececec, #fdfdfd);background:-webkit-gradient(linear, left top, left bottom, from(#fdfdfd), to(#ececec));background:-o-linear-gradient(0% 100% 90deg, #ececec, #fdfdfd);}
+.ui-expander .ui-expander-content{border-width:0px;border-radius:0px;-webkit-border-radius:0px;-moz-border-radius:0px;background:none;padding:1em 2.2em;border-top:0;margin-top:0px;position:relative;top:1px;margin-bottom:0px;overflow:auto;zoom:1;}
+.ui-expander-top .ui-expander-header.ui-state-hover .ui-icon{background:#5e9ae2 url(images/ui-icons_ffffff_256x240.png);background-position:-34px -2px;border:1px solid #2e63a5;}
+.ui-expander-top .ui-expander-header.ui-state-active .ui-icon,.ui-expander-top .ui-expander-header.ui-state-hover.ui-state-active .ui-icon{background-position:-1px -2px;}
+.ui-expander-left .ui-expander-header .ui-icon,.ui-expander-right .ui-expander-header .ui-icon{top:1em;left:50%;margin-left:-7px;background-position:-66px -1px;}
+.ui-expander-left .ui-expander-header a,.ui-expander-right .ui-expander-header a{padding:0;-webkit-transform:rotate(-90deg);-moz-transform:rotate(-90deg);-o-transform:rotate(-90deg);filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";position:absolute;top:2.5em;left:-1.6em;}
+.ui-expander-left .ui-expander-header,.ui-expander-right .ui-expander-header,.ui-expander-left .ui-expander-header.ui-state-active,.ui-expander-right .ui-expander-header.ui-state-active,.ui-expander-left .ui-expander-header.ui-state-hover,.ui-expander-right .ui-expander-header.ui-state-hover,.ui-expander-left .ui-expander-header.ui-state-focus,.ui-expander-right .ui-expander-header.ui-state-focus{color:#333333;border-color:#a9a9a9;background:#ffffff;filter:expression("progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdfdfd',endColorstr='#ececec',GradientType=1)");-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdfdfd',endColorstr='#ececec',GradientType=1)";background:-moz-linear-gradient(0% 100% 180deg, #ececec, #fdfdfd);background:-webkit-gradient(linear, left top, right top, from(#fdfdfd), to(#ececec));background:-o-linear-gradient(0% 100% 180deg, #ececec, #fdfdfd);}
+.ui-expander-right .ui-expander-header.ui-state-hover .ui-icon{background:#5e9ae2 url(images/ui-icons_ffffff_256x240.png);background-position:-66px -1px;border:1px solid #2e63a5;}
+.ui-expander-right .ui-expander-header.ui-state-active .ui-icon,.ui-expander-right .ui-expander-header.ui-state-hover.ui-state-active .ui-icon{background-position:-34px -2px;}
+.ui-expander-left .ui-expander-header.ui-state-hover .ui-icon{background:#5e9ae2 url(images/ui-icons_ffffff_256x240.png);background-position:-66px -1px;border:1px solid #2e63a5;}
+.ui-expander-left .ui-expander-header.ui-state-active .ui-icon,.ui-expander-left .ui-expander-header.ui-state-hover.ui-state-active .ui-icon{background-position:-98px -2px;}
+.wijmo-wijslider-horizontal{position:relative;}
+.wijmo-wijslider-horizontal .wijmo-wijslider-decbutton{position:absolute;left:0px;right:auto;cursor:pointer;}
+.wijmo-wijslider-horizontal .wijmo-wijslider-incbutton{position:absolute;left:auto;right:0px;cursor:pointer;}
+.wijmo-wijslider-vertical{position:relative;}
+.wijmo-wijslider-vertical .wijmo-wijslider-decbutton{position:absolute;top:0px;bottom:auto;cursor:pointer;}
+.wijmo-wijslider-vertical .wijmo-wijslider-incbutton{position:absolute;top:auto;bottom:0px;cursor:pointer;}
+.wijmo-wijdialog .wijmo-wijdialog-hasframe{padding:0;}
+.wijmo-wijdialog-defaultdockingzone{position:fixed;bottom:0px;left:0px;}
+* html .wijmo-wijdialog-defaultdockingzone .ui-dialog-titlebar{float:left;}
+.wijmo-wijdialog-captionbutton{display:inline-block;outline:none;border:1px solid #000000;background:#a8a9ac;filter:expression("progid:DXImageTransform.Microsoft.gradient(startColorstr='#6a6b6e',endColorstr='#3e3e3e')");-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr='#6a6b6e',endColorstr='#3e3e3e')";background:-moz-linear-gradient(0% 100% 90deg, #3e3e3e, #6a6b6e);background:-webkit-gradient(linear, left top, left bottom, from(#6a6b6e), to(#3e3e3e));background:-o-linear-gradient(0% 100% 90deg, #3e3e3e, #6a6b6e);color:#ffffff;}.wijmo-wijdialog-captionbutton .ui-icon{margin:1px;background-image:url(images/ui-icons_ffffff_256x240.png);}
+.wijmo-wijcalendar{-webkit-user-select:none;-moz-user-select:none;display:block;}
+.wijmo-wijcalendar-header{position:relative;}
+.wijmo-wijcalendar-header-inner{margin:0 1.8em;line-height:1.8em;}
+.wijmo-wijcalendar .ui-datepicker-header{padding:1px;}
+.wijmo-wijcalendar .ui-datepicker-header .ui-state-default{border-color:transparent;background:none;color:inherit;}
+.wijmo-wijcalendar .wijmo-wijcalendar-table{table-layout:fixed;}
+.wijmo-wijcalendar-prevpreview-button,.wijmo-wijcalendar-nextpreview-button{width:16px;margin-top:35%;float:left;}
+.wijmo-wijcalendar-nextpreview-button{float:right;}
+.wijmo-wijcalendar-preview-wrapper .wijmo-wijcalendar{float:left;width:18em;}
+.wijmo-wijcalendar-preview-wrapper .wijmo-wijcalendar .ui-datepicker-calendar{width:80%;float:left;}
+.wijmo-wijcalendar-title,.wijmo-wijcalendar-selectable{cursor:pointer;}
+.ui-datepicker-other-month{text-align:right;}
+.wijmo-wijcalendar-mygrid td span,.wijmo-wijcalendar-mygrid td a{display:block;text-align:center;text-decoration:none;padding:0;}
+.wijmo-wijcalendar-mygrid .ui-state-default a,.wijmo-wijcalendar-mygrid .ui-state-default a:hover,.wijmo-wijcalendar-mygrid .ui-state-hover a,.wijmo-wijcalendar-mygrid .ui-state-hover a:hover{color:inherit;}
+.ui-header-custom img,.ui-footer-custom img{width:100%;}
+.wijmo-wijcalendar table.wijmo-wijcalendar-mygrid{margin-top:2px;border-collapse:separate;table-layout:fixed;}
+.wijmo-wijcalendar table.wijmo-wijcalendar-mygrid .ui-datepicker-week-day{cursor:pointer;}
+.wijmo-wijcalendar-aniwrapper{position:relative;left:0;top:0;}
+.wijmo-wijcalendar-multi-aniwrapper{position:absolute;overflow:hidden;}
+.ui-datepicker-rtl .ui-datepicker-prev .ui-icon,.ui-datepicker-rtl .ui-datepicker-next .ui-icon{direction:rtl;}
+.wijmo-wijcalendar-header{position:relative;border:none;-moz-border-radius-bottomleft:0px;-webkit-border-bottom-left-radius:0px;border-bottom-left-radius:0px;-moz-border-radius-bottomright:0px;-webkit-border-bottom-right-radius:0px;border-bottom-right-radius:0px;background:#747073;filter:expression("progid:DXImageTransform.Microsoft.gradient(startColorstr='#4c4c4e',endColorstr='#282425')");-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr='#4c4c4e',endColorstr='#282425')";background:-moz-linear-gradient(0% 100% 90deg, #282425, #4c4c4e);background:-webkit-gradient(linear, left top, left bottom, from(#4c4c4e), to(#282425));background:-o-linear-gradient(0% 100% 90deg, #282425, #4c4c4e);color:#ffffff;}
+.wijmo-wijcalendar .ui-datepicker-group .ui-datepicker-header{border-radius:0px;-webkit-border-radius:0px;-moz-border-radius:0px;}
+.ui-datepicker-title.wijmo-wijcalendar-title{line-height:2.3em;}
+.wijmo-wijprogressbar{moz-user-select:none;text-align:left;float:left;position:relative;overflow:hidden;}
+.wijmo-wijprogressbar .ui-progressbar-value{position:absolute;border-width:0;margin:0;}
+div.wijmo-wijprogressbar-east{width:200px;height:1.1em;}
+div.wijmo-wijprogressbar-west{width:200px;height:1.1em;}
+div.wijmo-wijprogressbar-south{height:200px;width:1.1em;line-height:100%;}
+div.wijmo-wijprogressbar-north{height:200px;width:1.1em;line-height:100%;}
+.wijmo-wijprogressbar-east .ui-progressbar-value{left:0;height:100%;}
+.wijmo-wijprogressbar-west .ui-progressbar-value{right:0;height:100%;}
+.wijmo-wijprogressbar-south .ui-progressbar-value{top:0;width:100%;}
+.wijmo-wijprogressbar-north .ui-progressbar-value{bottom:0;width:100%;}
+.wijmo-wijprogressbar .ui-progressbar-label{display:block;position:absolute;text-align:center;width:100%;height:100%;}
+.wijmo-wijprogressbar .wijmo-wijprogressbar-lb-west{left:0;width:auto;}
+.wijmo-wijprogressbar .wijmo-wijprogressbar-lb-east{right:0;width:auto;}
+.wijmo-wijprogressbar .wijmo-wijprogressbar-lb-south{bottom:0;height:auto;}
+.wijmo-wijprogressbar .wijmo-wijprogressbar-lb-north{top:0;height:auto;}
+.wijmo-wijprogressbar-east .wijmo-wijprogressbar-lb-running,.wijmo-wijprogressbar-west .wijmo-wijprogressbar-lb-running{display:inline;width:auto;}
+.wijmo-wijprogressbar-north .wijmo-wijprogressbar-lb-running,.wijmo-wijprogressbar-south .wijmo-wijprogressbar-lb-running{height:auto;}
+.wijmo-wijprogressbar-north .ui-progressbar-label,.wijmo-wijprogressbar-south .ui-progressbar-label{-webkit-transform:rotate(-90deg);-moz-transform:rotate(-90deg);}
+fieldset{padding:5px;text-shadow:0px 1px 0px #fff;outline:none;border:1px solid #a9a9a9;border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;margin:0px;}
+legend{font-size:1.1em;}
+.wijmo-wijtextbox.ui-widget,textarea,input[type='text'],input[type='password'],input[type='file']{padding:5px;text-shadow:0px 1px 0px #fff;outline:none;border:1px solid #a9a9a9;color:#333333;border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;background:#ffffff;filter:expression("progid:DXImageTransform.Microsoft.gradient(startColorstr='#edeff0',endColorstr='#ffffff')");-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr='#edeff0',endColorstr='#ffffff')";background:-moz-linear-gradient(0% 100% 90deg, #ffffff, #edeff0);background:-webkit-gradient(linear, left top, left bottom, from(#edeff0), to(#ffffff));background:-o-linear-gradient(0% 100% 90deg, #ffffff, #edeff0);}.wijmo-wijtextbox.ui-widget:hover,textarea:hover,input[type='text']:hover,input[type='password']:hover,input[type='file']:hover,.wijmo-wijtextbox.ui-widget:focus,textarea:focus,input[type='text']:focus,input[type='password']:focus,input[type='file']:focus{background:#ffffff;filter:expression("progid:DXImageTransform.Microsoft.gradient(startColorstr='#dfe0e1',endColorstr='#ffffff')");-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr='#dfe0e1',endColorstr='#ffffff')";background:-moz-linear-gradient(0% 100% 90deg, #ffffff, #dfe0e1);background:-webkit-gradient(linear, left top, left bottom, from(#dfe0e1), to(#ffffff));background:-o-linear-gradient(0% 100% 90deg, #ffffff, #dfe0e1);}
+input[type='button'],input[type='reset'],input[type='submit']{border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;border-width:1px;border-style:solid;cursor:pointer;color:#333333;border-color:#a9a9a9;background:#ffffff;filter:expression("progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdfdfd',endColorstr='#ececec')");-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdfdfd',endColorstr='#ececec')";background:-moz-linear-gradient(0% 100% 90deg, #ececec, #fdfdfd);background:-webkit-gradient(linear, left top, left bottom, from(#fdfdfd), to(#ececec));background:-o-linear-gradient(0% 100% 90deg, #ececec, #fdfdfd);}input[type='button']:hover,input[type='reset']:hover,input[type='submit']:hover,input[type='button']:focus,input[type='reset']:focus,input[type='submit']:focus{color:#ffffff;border-color:#2e63a5;background:#93ffff;filter:expression("progid:DXImageTransform.Microsoft.gradient(startColorstr='#5e9ae2',endColorstr='#3570b8')");-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr='#5e9ae2',endColorstr='#3570b8')";background:-moz-linear-gradient(0% 100% 90deg, #3570b8, #5e9ae2);background:-webkit-gradient(linear, left top, left bottom, from(#5e9ae2), to(#3570b8));background:-o-linear-gradient(0% 100% 90deg, #3570b8, #5e9ae2);}
diff --git a/public/admin/js/osmplayer/jquery-ui/absolution/images/selector.png b/public/admin/js/osmplayer/jquery-ui/absolution/images/selector.png
new file mode 100755
index 0000000000000000000000000000000000000000..05f441d7d4625b52664f70bc8359100b509a2bf2
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/absolution/images/selector.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/absolution/images/ui-icons_222222_256x240.png b/public/admin/js/osmplayer/jquery-ui/absolution/images/ui-icons_222222_256x240.png
new file mode 100755
index 0000000000000000000000000000000000000000..b273ff111d219c9b9a8b96d57683d0075fb7871a
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/absolution/images/ui-icons_222222_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/absolution/images/ui-icons_eeeeee_256x240.png b/public/admin/js/osmplayer/jquery-ui/absolution/images/ui-icons_eeeeee_256x240.png
new file mode 100755
index 0000000000000000000000000000000000000000..01bb36ba7668a4a9e181f4af7ad89dcf1fe3022d
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/absolution/images/ui-icons_eeeeee_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/absolution/images/ui-icons_ffffff_256x240.png b/public/admin/js/osmplayer/jquery-ui/absolution/images/ui-icons_ffffff_256x240.png
new file mode 100755
index 0000000000000000000000000000000000000000..42f8f992c727ddaa617da224a522e463df690387
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/absolution/images/ui-icons_ffffff_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/black-tie/images/ui-bg_diagonals-thick_8_333333_40x40.png b/public/admin/js/osmplayer/jquery-ui/black-tie/images/ui-bg_diagonals-thick_8_333333_40x40.png
new file mode 100644
index 0000000000000000000000000000000000000000..b84db3b486dbfc5d850c803be01d6d7574264106
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/black-tie/images/ui-bg_diagonals-thick_8_333333_40x40.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/black-tie/images/ui-bg_flat_65_ffffff_40x100.png b/public/admin/js/osmplayer/jquery-ui/black-tie/images/ui-bg_flat_65_ffffff_40x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..ac8b229af950c29356abf64a6c4aa894575445f0
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/black-tie/images/ui-bg_flat_65_ffffff_40x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/black-tie/images/ui-bg_glass_40_111111_1x400.png b/public/admin/js/osmplayer/jquery-ui/black-tie/images/ui-bg_glass_40_111111_1x400.png
new file mode 100644
index 0000000000000000000000000000000000000000..1ec8127735b5168f9a9efbcb171bd3f3f6e3e5b5
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/black-tie/images/ui-bg_glass_40_111111_1x400.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/black-tie/images/ui-bg_glass_55_1c1c1c_1x400.png b/public/admin/js/osmplayer/jquery-ui/black-tie/images/ui-bg_glass_55_1c1c1c_1x400.png
new file mode 100644
index 0000000000000000000000000000000000000000..93db02b0f8ec0777b7529847ef28857a2cc794d6
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/black-tie/images/ui-bg_glass_55_1c1c1c_1x400.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/black-tie/images/ui-bg_highlight-hard_100_f9f9f9_1x100.png b/public/admin/js/osmplayer/jquery-ui/black-tie/images/ui-bg_highlight-hard_100_f9f9f9_1x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..2cb80364bbf007311eee29931603c867c2db68d7
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/black-tie/images/ui-bg_highlight-hard_100_f9f9f9_1x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/black-tie/images/ui-bg_highlight-hard_40_aaaaaa_1x100.png b/public/admin/js/osmplayer/jquery-ui/black-tie/images/ui-bg_highlight-hard_40_aaaaaa_1x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..a7aeeb0ae7256aaf4a095dc3557bb36cdf82c2ad
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/black-tie/images/ui-bg_highlight-hard_40_aaaaaa_1x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/black-tie/images/ui-bg_highlight-soft_50_aaaaaa_1x100.png b/public/admin/js/osmplayer/jquery-ui/black-tie/images/ui-bg_highlight-soft_50_aaaaaa_1x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..a0ffd222d91c16d54d865eb8b1050bd65ef22dd5
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/black-tie/images/ui-bg_highlight-soft_50_aaaaaa_1x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/black-tie/images/ui-bg_inset-hard_45_cd0a0a_1x100.png b/public/admin/js/osmplayer/jquery-ui/black-tie/images/ui-bg_inset-hard_45_cd0a0a_1x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..718aa1176731af7f4d39f31f2298156844502535
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/black-tie/images/ui-bg_inset-hard_45_cd0a0a_1x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/black-tie/images/ui-bg_inset-hard_55_ffeb80_1x100.png b/public/admin/js/osmplayer/jquery-ui/black-tie/images/ui-bg_inset-hard_55_ffeb80_1x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..0286bb1d7dae22b99ab4b8c360aada0cd37ec525
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/black-tie/images/ui-bg_inset-hard_55_ffeb80_1x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/black-tie/images/ui-icons_222222_256x240.png b/public/admin/js/osmplayer/jquery-ui/black-tie/images/ui-icons_222222_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..b273ff111d219c9b9a8b96d57683d0075fb7871a
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/black-tie/images/ui-icons_222222_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/black-tie/images/ui-icons_4ca300_256x240.png b/public/admin/js/osmplayer/jquery-ui/black-tie/images/ui-icons_4ca300_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..fadab600023d46ab974a36f362367f86c12e722b
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/black-tie/images/ui-icons_4ca300_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/black-tie/images/ui-icons_bbbbbb_256x240.png b/public/admin/js/osmplayer/jquery-ui/black-tie/images/ui-icons_bbbbbb_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..146dbd10b99cc7529a1f055e4ac7d4b2284247e2
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/black-tie/images/ui-icons_bbbbbb_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/black-tie/images/ui-icons_ededed_256x240.png b/public/admin/js/osmplayer/jquery-ui/black-tie/images/ui-icons_ededed_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..608e09d69942ed96bae19aa44d5ea1c52d5c3927
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/black-tie/images/ui-icons_ededed_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/black-tie/images/ui-icons_ffcf29_256x240.png b/public/admin/js/osmplayer/jquery-ui/black-tie/images/ui-icons_ffcf29_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..8c376157d037d4fa61dff6f20a1eed495d919c14
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/black-tie/images/ui-icons_ffcf29_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/black-tie/images/ui-icons_ffffff_256x240.png b/public/admin/js/osmplayer/jquery-ui/black-tie/images/ui-icons_ffffff_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..42f8f992c727ddaa617da224a522e463df690387
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/black-tie/images/ui-icons_ffffff_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/black-tie/jquery-ui-1.8.18.custom.css b/public/admin/js/osmplayer/jquery-ui/black-tie/jquery-ui-1.8.18.custom.css
new file mode 100644
index 0000000000000000000000000000000000000000..2322e8cc04c3adbd8b6a8c61444bbee709a9334c
--- /dev/null
+++ b/public/admin/js/osmplayer/jquery-ui/black-tie/jquery-ui-1.8.18.custom.css
@@ -0,0 +1,565 @@
+/*
+ * jQuery UI CSS Framework 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ */
+
+/* Layout helpers
+----------------------------------*/
+.player-ui .ui-helper-hidden { display: none; }
+.player-ui .ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
+.player-ui .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
+.player-ui .ui-helper-clearfix:before, .player-ui .ui-helper-clearfix:after { content: ""; display: table; }
+.player-ui .ui-helper-clearfix:after { clear: both; }
+.player-ui .ui-helper-clearfix { zoom: 1; }
+.player-ui .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
+
+
+/* Interaction Cues
+----------------------------------*/
+.player-ui .ui-state-disabled { cursor: default !important; }
+
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.player-ui .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+.player-ui .ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
+
+
+/*
+ * jQuery UI CSS Framework 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ *
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana,%20Arial,%20sans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=333333&bgTextureHeader=08_diagonals_thick.png&bgImgOpacityHeader=8&borderColorHeader=a3a3a3&fcHeader=eeeeee&iconColorHeader=bbbbbb&bgColorContent=f9f9f9&bgTextureContent=04_highlight_hard.png&bgImgOpacityContent=100&borderColorContent=cccccc&fcContent=222222&iconColorContent=222222&bgColorDefault=111111&bgTextureDefault=02_glass.png&bgImgOpacityDefault=40&borderColorDefault=777777&fcDefault=e3e3e3&iconColorDefault=ededed&bgColorHover=1c1c1c&bgTextureHover=02_glass.png&bgImgOpacityHover=55&borderColorHover=000000&fcHover=ffffff&iconColorHover=ffffff&bgColorActive=ffffff&bgTextureActive=01_flat.png&bgImgOpacityActive=65&borderColorActive=cccccc&fcActive=222222&iconColorActive=222222&bgColorHighlight=ffeb80&bgTextureHighlight=06_inset_hard.png&bgImgOpacityHighlight=55&borderColorHighlight=ffde2e&fcHighlight=363636&iconColorHighlight=4ca300&bgColorError=cd0a0a&bgTextureError=06_inset_hard.png&bgImgOpacityError=45&borderColorError=9e0505&fcError=ffffff&iconColorError=ffcf29&bgColorOverlay=aaaaaa&bgTextureOverlay=04_highlight_hard.png&bgImgOpacityOverlay=40&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=03_highlight_soft.png&bgImgOpacityShadow=50&opacityShadow=20&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
+ */
+
+
+/* Component containers
+----------------------------------*/
+.player-ui .ui-widget { font-family: Verdana, Arial, sans-serif; font-size: 1.1em; }
+.player-ui .ui-widget .ui-widget { font-size: 1em; }
+.player-ui .ui-widget input, .player-ui .ui-widget select, .player-ui .ui-widget textarea, .player-ui .ui-widget button { font-family: Verdana, Arial, sans-serif; font-size: 1em; }
+.player-ui .ui-widget-content { border: 1px solid #cccccc; background: #f9f9f9 url(images/ui-bg_highlight-hard_100_f9f9f9_1x100.png) 50% top repeat-x; color: #222222; }
+.player-ui .ui-widget-content a { color: #222222; }
+.player-ui .ui-widget-header { border: 1px solid #a3a3a3; background: #333333 url(images/ui-bg_diagonals-thick_8_333333_40x40.png) 50% 50% repeat; color: #eeeeee; font-weight: bold; }
+.player-ui .ui-widget-header a { color: #eeeeee; }
+
+/* Interaction states
+----------------------------------*/
+.player-ui .ui-state-default, .player-ui .ui-widget-content .ui-state-default, .player-ui .ui-widget-header .ui-state-default { border: 1px solid #777777; background: #111111 url(images/ui-bg_glass_40_111111_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #e3e3e3; }
+.player-ui .ui-state-default a, .player-ui .ui-state-default a:link, .player-ui .ui-state-default a:visited { color: #e3e3e3; text-decoration: none; }
+.player-ui .ui-state-hover, .player-ui .ui-widget-content .ui-state-hover, .player-ui .ui-widget-header .ui-state-hover, .player-ui .ui-state-focus, .player-ui .ui-widget-content .ui-state-focus, .player-ui .ui-widget-header .ui-state-focus { border: 1px solid #000000; background: #1c1c1c url(images/ui-bg_glass_55_1c1c1c_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #ffffff; }
+.player-ui .ui-state-hover a, .player-ui .ui-state-hover a:hover { color: #ffffff; text-decoration: none; }
+.player-ui .ui-state-active, .player-ui .ui-widget-content .ui-state-active, .player-ui .ui-widget-header .ui-state-active { border: 1px solid #cccccc; background: #ffffff url(images/ui-bg_flat_65_ffffff_40x100.png) 50% 50% repeat-x; font-weight: normal; color: #222222; }
+.player-ui .ui-state-active a, .player-ui .ui-state-active a:link, .player-ui .ui-state-active a:visited { color: #222222; text-decoration: none; }
+.player-ui .ui-widget :active { outline: none; }
+
+/* Interaction Cues
+----------------------------------*/
+.player-ui .ui-state-highlight, .player-ui .ui-widget-content .ui-state-highlight, .player-ui .ui-widget-header .ui-state-highlight  {border: 1px solid #ffde2e; background: #ffeb80 url(images/ui-bg_inset-hard_55_ffeb80_1x100.png) 50% bottom repeat-x; color: #363636; }
+.player-ui .ui-state-highlight a, .player-ui .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
+.player-ui .ui-state-error, .player-ui .ui-widget-content .ui-state-error, .player-ui .ui-widget-header .ui-state-error {border: 1px solid #9e0505; background: #cd0a0a url(images/ui-bg_inset-hard_45_cd0a0a_1x100.png) 50% bottom repeat-x; color: #ffffff; }
+.player-ui .ui-state-error a, .player-ui .ui-widget-content .ui-state-error a, .player-ui .ui-widget-header .ui-state-error a { color: #ffffff; }
+.player-ui .ui-state-error-text, .player-ui .ui-widget-content .ui-state-error-text, .player-ui .ui-widget-header .ui-state-error-text { color: #ffffff; }
+.player-ui .ui-priority-primary, .player-ui .ui-widget-content .ui-priority-primary, .player-ui .ui-widget-header .ui-priority-primary { font-weight: bold; }
+.player-ui .ui-priority-secondary, .player-ui .ui-widget-content .ui-priority-secondary,  .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
+.player-ui .ui-state-disabled, .player-ui .ui-widget-content .ui-state-disabled, .player-ui .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.player-ui .ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); }
+.player-ui .ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
+.player-ui .ui-widget-header .ui-icon {background-image: url(images/ui-icons_bbbbbb_256x240.png); }
+.player-ui .ui-state-default .ui-icon { background-image: url(images/ui-icons_ededed_256x240.png); }
+.player-ui .ui-state-hover .ui-icon, .player-ui .ui-state-focus .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); }
+.player-ui .ui-state-active .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
+.player-ui .ui-state-highlight .ui-icon {background-image: url(images/ui-icons_4ca300_256x240.png); }
+.player-ui .ui-state-error .ui-icon, .player-ui .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_ffcf29_256x240.png); }
+
+/* positioning */
+.player-ui .ui-icon-carat-1-n { background-position: 0 0; }
+.player-ui .ui-icon-carat-1-ne { background-position: -16px 0; }
+.player-ui .ui-icon-carat-1-e { background-position: -32px 0; }
+.player-ui .ui-icon-carat-1-se { background-position: -48px 0; }
+.player-ui .ui-icon-carat-1-s { background-position: -64px 0; }
+.player-ui .ui-icon-carat-1-sw { background-position: -80px 0; }
+.player-ui .ui-icon-carat-1-w { background-position: -96px 0; }
+.player-ui .ui-icon-carat-1-nw { background-position: -112px 0; }
+.player-ui .ui-icon-carat-2-n-s { background-position: -128px 0; }
+.player-ui .ui-icon-carat-2-e-w { background-position: -144px 0; }
+.player-ui .ui-icon-triangle-1-n { background-position: 0 -16px; }
+.player-ui .ui-icon-triangle-1-ne { background-position: -16px -16px; }
+.player-ui .ui-icon-triangle-1-e { background-position: -32px -16px; }
+.player-ui .ui-icon-triangle-1-se { background-position: -48px -16px; }
+.player-ui .ui-icon-triangle-1-s { background-position: -64px -16px; }
+.player-ui .ui-icon-triangle-1-sw { background-position: -80px -16px; }
+.player-ui .ui-icon-triangle-1-w { background-position: -96px -16px; }
+.player-ui .ui-icon-triangle-1-nw { background-position: -112px -16px; }
+.player-ui .ui-icon-triangle-2-n-s { background-position: -128px -16px; }
+.player-ui .ui-icon-triangle-2-e-w { background-position: -144px -16px; }
+.player-ui .ui-icon-arrow-1-n { background-position: 0 -32px; }
+.player-ui .ui-icon-arrow-1-ne { background-position: -16px -32px; }
+.player-ui .ui-icon-arrow-1-e { background-position: -32px -32px; }
+.player-ui .ui-icon-arrow-1-se { background-position: -48px -32px; }
+.player-ui .ui-icon-arrow-1-s { background-position: -64px -32px; }
+.player-ui .ui-icon-arrow-1-sw { background-position: -80px -32px; }
+.player-ui .ui-icon-arrow-1-w { background-position: -96px -32px; }
+.player-ui .ui-icon-arrow-1-nw { background-position: -112px -32px; }
+.player-ui .ui-icon-arrow-2-n-s { background-position: -128px -32px; }
+.player-ui .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
+.player-ui .ui-icon-arrow-2-e-w { background-position: -160px -32px; }
+.player-ui .ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
+.player-ui .ui-icon-arrowstop-1-n { background-position: -192px -32px; }
+.player-ui .ui-icon-arrowstop-1-e { background-position: -208px -32px; }
+.player-ui .ui-icon-arrowstop-1-s { background-position: -224px -32px; }
+.player-ui .ui-icon-arrowstop-1-w { background-position: -240px -32px; }
+.player-ui .ui-icon-arrowthick-1-n { background-position: 0 -48px; }
+.player-ui .ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
+.player-ui .ui-icon-arrowthick-1-e { background-position: -32px -48px; }
+.player-ui .ui-icon-arrowthick-1-se { background-position: -48px -48px; }
+.player-ui .ui-icon-arrowthick-1-s { background-position: -64px -48px; }
+.player-ui .ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
+.player-ui .ui-icon-arrowthick-1-w { background-position: -96px -48px; }
+.player-ui .ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
+.player-ui .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
+.player-ui .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
+.player-ui .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
+.player-ui .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
+.player-ui .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
+.player-ui .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
+.player-ui .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
+.player-ui .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
+.player-ui .ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
+.player-ui .ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
+.player-ui .ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
+.player-ui .ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
+.player-ui .ui-icon-arrow-4 { background-position: 0 -80px; }
+.player-ui .ui-icon-arrow-4-diag { background-position: -16px -80px; }
+.player-ui .ui-icon-extlink { background-position: -32px -80px; }
+.player-ui .ui-icon-newwin { background-position: -48px -80px; }
+.player-ui .ui-icon-refresh { background-position: -64px -80px; }
+.player-ui .ui-icon-shuffle { background-position: -80px -80px; }
+.player-ui .ui-icon-transfer-e-w { background-position: -96px -80px; }
+.player-ui .ui-icon-transferthick-e-w { background-position: -112px -80px; }
+.player-ui .ui-icon-folder-collapsed { background-position: 0 -96px; }
+.player-ui .ui-icon-folder-open { background-position: -16px -96px; }
+.player-ui .ui-icon-document { background-position: -32px -96px; }
+.player-ui .ui-icon-document-b { background-position: -48px -96px; }
+.player-ui .ui-icon-note { background-position: -64px -96px; }
+.player-ui .ui-icon-mail-closed { background-position: -80px -96px; }
+.player-ui .ui-icon-mail-open { background-position: -96px -96px; }
+.player-ui .ui-icon-suitcase { background-position: -112px -96px; }
+.player-ui .ui-icon-comment { background-position: -128px -96px; }
+.player-ui .ui-icon-person { background-position: -144px -96px; }
+.player-ui .ui-icon-print { background-position: -160px -96px; }
+.player-ui .ui-icon-trash { background-position: -176px -96px; }
+.player-ui .ui-icon-locked { background-position: -192px -96px; }
+.player-ui .ui-icon-unlocked { background-position: -208px -96px; }
+.player-ui .ui-icon-bookmark { background-position: -224px -96px; }
+.player-ui .ui-icon-tag { background-position: -240px -96px; }
+.player-ui .ui-icon-home { background-position: 0 -112px; }
+.player-ui .ui-icon-flag { background-position: -16px -112px; }
+.player-ui .ui-icon-calendar { background-position: -32px -112px; }
+.player-ui .ui-icon-cart { background-position: -48px -112px; }
+.player-ui .ui-icon-pencil { background-position: -64px -112px; }
+.player-ui .ui-icon-clock { background-position: -80px -112px; }
+.player-ui .ui-icon-disk { background-position: -96px -112px; }
+.player-ui .ui-icon-calculator { background-position: -112px -112px; }
+.player-ui .ui-icon-zoomin { background-position: -128px -112px; }
+.player-ui .ui-icon-zoomout { background-position: -144px -112px; }
+.player-ui .ui-icon-search { background-position: -160px -112px; }
+.player-ui .ui-icon-wrench { background-position: -176px -112px; }
+.player-ui .ui-icon-gear { background-position: -192px -112px; }
+.player-ui .ui-icon-heart { background-position: -208px -112px; }
+.player-ui .ui-icon-star { background-position: -224px -112px; }
+.player-ui .ui-icon-link { background-position: -240px -112px; }
+.player-ui .ui-icon-cancel { background-position: 0 -128px; }
+.player-ui .ui-icon-plus { background-position: -16px -128px; }
+.player-ui .ui-icon-plusthick { background-position: -32px -128px; }
+.player-ui .ui-icon-minus { background-position: -48px -128px; }
+.player-ui .ui-icon-minusthick { background-position: -64px -128px; }
+.player-ui .ui-icon-close { background-position: -80px -128px; }
+.player-ui .ui-icon-closethick { background-position: -96px -128px; }
+.player-ui .ui-icon-key { background-position: -112px -128px; }
+.player-ui .ui-icon-lightbulb { background-position: -128px -128px; }
+.player-ui .ui-icon-scissors { background-position: -144px -128px; }
+.player-ui .ui-icon-clipboard { background-position: -160px -128px; }
+.player-ui .ui-icon-copy { background-position: -176px -128px; }
+.player-ui .ui-icon-contact { background-position: -192px -128px; }
+.player-ui .ui-icon-image { background-position: -208px -128px; }
+.player-ui .ui-icon-video { background-position: -224px -128px; }
+.player-ui .ui-icon-script { background-position: -240px -128px; }
+.player-ui .ui-icon-alert { background-position: 0 -144px; }
+.player-ui .ui-icon-info { background-position: -16px -144px; }
+.player-ui .ui-icon-notice { background-position: -32px -144px; }
+.player-ui .ui-icon-help { background-position: -48px -144px; }
+.player-ui .ui-icon-check { background-position: -64px -144px; }
+.player-ui .ui-icon-bullet { background-position: -80px -144px; }
+.player-ui .ui-icon-radio-off { background-position: -96px -144px; }
+.player-ui .ui-icon-radio-on { background-position: -112px -144px; }
+.player-ui .ui-icon-pin-w { background-position: -128px -144px; }
+.player-ui .ui-icon-pin-s { background-position: -144px -144px; }
+.player-ui .ui-icon-play { background-position: 0 -160px; }
+.player-ui .ui-icon-pause { background-position: -16px -160px; }
+.player-ui .ui-icon-seek-next { background-position: -32px -160px; }
+.player-ui .ui-icon-seek-prev { background-position: -48px -160px; }
+.player-ui .ui-icon-seek-end { background-position: -64px -160px; }
+.player-ui .ui-icon-seek-start { background-position: -80px -160px; }
+/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
+.player-ui .ui-icon-seek-first { background-position: -80px -160px; }
+.player-ui .ui-icon-stop { background-position: -96px -160px; }
+.player-ui .ui-icon-eject { background-position: -112px -160px; }
+.player-ui .ui-icon-volume-off { background-position: -128px -160px; }
+.player-ui .ui-icon-volume-on { background-position: -144px -160px; }
+.player-ui .ui-icon-power { background-position: 0 -176px; }
+.player-ui .ui-icon-signal-diag { background-position: -16px -176px; }
+.player-ui .ui-icon-signal { background-position: -32px -176px; }
+.player-ui .ui-icon-battery-0 { background-position: -48px -176px; }
+.player-ui .ui-icon-battery-1 { background-position: -64px -176px; }
+.player-ui .ui-icon-battery-2 { background-position: -80px -176px; }
+.player-ui .ui-icon-battery-3 { background-position: -96px -176px; }
+.player-ui .ui-icon-circle-plus { background-position: 0 -192px; }
+.player-ui .ui-icon-circle-minus { background-position: -16px -192px; }
+.player-ui .ui-icon-circle-close { background-position: -32px -192px; }
+.player-ui .ui-icon-circle-triangle-e { background-position: -48px -192px; }
+.player-ui .ui-icon-circle-triangle-s { background-position: -64px -192px; }
+.player-ui .ui-icon-circle-triangle-w { background-position: -80px -192px; }
+.player-ui .ui-icon-circle-triangle-n { background-position: -96px -192px; }
+.player-ui .ui-icon-circle-arrow-e { background-position: -112px -192px; }
+.player-ui .ui-icon-circle-arrow-s { background-position: -128px -192px; }
+.player-ui .ui-icon-circle-arrow-w { background-position: -144px -192px; }
+.player-ui .ui-icon-circle-arrow-n { background-position: -160px -192px; }
+.player-ui .ui-icon-circle-zoomin { background-position: -176px -192px; }
+.player-ui .ui-icon-circle-zoomout { background-position: -192px -192px; }
+.player-ui .ui-icon-circle-check { background-position: -208px -192px; }
+.player-ui .ui-icon-circlesmall-plus { background-position: 0 -208px; }
+.player-ui .ui-icon-circlesmall-minus { background-position: -16px -208px; }
+.player-ui .ui-icon-circlesmall-close { background-position: -32px -208px; }
+.player-ui .ui-icon-squaresmall-plus { background-position: -48px -208px; }
+.player-ui .ui-icon-squaresmall-minus { background-position: -64px -208px; }
+.player-ui .ui-icon-squaresmall-close { background-position: -80px -208px; }
+.player-ui .ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
+.player-ui .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
+.player-ui .ui-icon-grip-solid-vertical { background-position: -32px -224px; }
+.player-ui .ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
+.player-ui .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
+.player-ui .ui-icon-grip-diagonal-se { background-position: -80px -224px; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Corner radius */
+.player-ui .ui-corner-all, .player-ui .ui-corner-top, .player-ui .ui-corner-left, .player-ui .ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -khtml-border-top-left-radius: 4px; border-top-left-radius: 4px; }
+.player-ui .ui-corner-all, .player-ui .ui-corner-top, .player-ui .ui-corner-right, .player-ui .ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; -khtml-border-top-right-radius: 4px; border-top-right-radius: 4px; }
+.player-ui .ui-corner-all, .player-ui .ui-corner-bottom, .player-ui .ui-corner-left, .player-ui .ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; -khtml-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }
+.player-ui .ui-corner-all, .player-ui .ui-corner-bottom, .player-ui .ui-corner-right, .player-ui .ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; -khtml-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
+
+/* Overlays */
+.player-ui .ui-widget-overlay { background: #aaaaaa url(images/ui-bg_highlight-hard_40_aaaaaa_1x100.png) 50% top repeat-x; opacity: .30;filter:Alpha(Opacity=30); }
+.player-ui .ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_highlight-soft_50_aaaaaa_1x100.png) 50% top repeat-x; opacity: .20;filter:Alpha(Opacity=20); -moz-border-radius: 8px; -khtml-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/*
+ * jQuery UI Resizable 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Resizable#theming
+ */
+.player-ui .ui-resizable { position: relative;}
+.player-ui .ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block; }
+.player-ui .ui-resizable-disabled .ui-resizable-handle, .player-ui .ui-resizable-autohide .ui-resizable-handle { display: none; }
+.player-ui .ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
+.player-ui .ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
+.player-ui .ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
+.player-ui .ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
+.player-ui .ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
+.player-ui .ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
+.player-ui .ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
+.player-ui .ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/*
+ * jQuery UI Selectable 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Selectable#theming
+ */
+.player-ui .ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }
+/*
+ * jQuery UI Accordion 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Accordion#theming
+ */
+/* IE/Win - Fix animation bug - #4615 */
+.player-ui .ui-accordion { width: 100%; }
+.player-ui .ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
+.player-ui .ui-accordion .ui-accordion-li-fix { display: inline; }
+.player-ui .ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
+.player-ui .ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; }
+.player-ui .ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; }
+.player-ui .ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
+.player-ui .ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; }
+.player-ui .ui-accordion .ui-accordion-content-active { display: block; }
+/*
+ * jQuery UI Autocomplete 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Autocomplete#theming
+ */
+.player-ui .ui-autocomplete { position: absolute; cursor: default; }	
+
+/* workarounds */
+* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
+
+/*
+ * jQuery UI Menu 1.8.18
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Menu#theming
+ */
+.player-ui .ui-menu {
+	list-style:none;
+	padding: 2px;
+	margin: 0;
+	display:block;
+	float: left;
+}
+.player-ui .ui-menu .ui-menu {
+	margin-top: -3px;
+}
+.player-ui .ui-menu .ui-menu-item {
+	margin:0;
+	padding: 0;
+	zoom: 1;
+	float: left;
+	clear: left;
+	width: 100%;
+}
+.player-ui .ui-menu .ui-menu-item a {
+	text-decoration:none;
+	display:block;
+	padding:.2em .4em;
+	line-height:1.5;
+	zoom:1;
+}
+.player-ui .ui-menu .ui-menu-item a.ui-state-hover,
+.player-ui .ui-menu .ui-menu-item a.ui-state-active {
+	font-weight: normal;
+	margin: -1px;
+}
+/*
+ * jQuery UI Button 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Button#theming
+ */
+.player-ui .ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: hidden; *overflow: visible; } /* the overflow property removes extra width in IE */
+.player-ui .ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
+button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
+.player-ui .ui-button-icons-only { width: 3.4em; } 
+button.ui-button-icons-only { width: 3.7em; } 
+
+/*button text element */
+.player-ui .ui-button .ui-button-text { display: block; line-height: 1.4;  }
+.player-ui .ui-button-text-only .ui-button-text { padding: .4em 1em; }
+.player-ui .ui-button-icon-only .ui-button-text, .player-ui .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
+.player-ui .ui-button-text-icon-primary .ui-button-text, .player-ui .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
+.player-ui .ui-button-text-icon-secondary .ui-button-text, .player-ui .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }
+.player-ui .ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }
+/* no icon support for input elements, provide padding by default */
+input.ui-button { padding: .4em 1em; }
+
+/*button icon element(s) */
+.player-ui .ui-button-icon-only .ui-icon, .player-ui .ui-button-text-icon-primary .ui-icon, .player-ui .ui-button-text-icon-secondary .ui-icon, .player-ui .ui-button-text-icons .ui-icon, .player-ui .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
+.player-ui .ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
+.player-ui .ui-button-text-icon-primary .ui-button-icon-primary, .player-ui .ui-button-text-icons .ui-button-icon-primary, .player-ui .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
+.player-ui .ui-button-text-icon-secondary .ui-button-icon-secondary, .player-ui .ui-button-text-icons .ui-button-icon-secondary, .player-ui .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
+.player-ui .ui-button-text-icons .ui-button-icon-secondary, .player-ui .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
+
+/*button sets*/
+.player-ui .ui-buttonset { margin-right: 7px; }
+.player-ui .ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }
+
+/* workarounds */
+button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
+/*
+ * jQuery UI Dialog 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Dialog#theming
+ */
+.player-ui .ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; }
+.player-ui .ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative;  }
+.player-ui .ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; } 
+.player-ui .ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
+.player-ui .ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
+.player-ui .ui-dialog .ui-dialog-titlebar-close:hover, .player-ui .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
+.player-ui .ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
+.player-ui .ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
+.player-ui .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
+.player-ui .ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
+.player-ui .ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
+.player-ui .ui-draggable .ui-dialog-titlebar { cursor: move; }
+/*
+ * jQuery UI Slider 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Slider#theming
+ */
+.player-ui .ui-slider { position: relative; text-align: left; }
+.player-ui .ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
+.player-ui .ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
+
+.player-ui .ui-slider-horizontal { height: .8em; }
+.player-ui .ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
+.player-ui .ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
+.player-ui .ui-slider-horizontal .ui-slider-range-min { left: 0; }
+.player-ui .ui-slider-horizontal .ui-slider-range-max { right: 0; }
+
+.player-ui .ui-slider-vertical { width: .8em; height: 100px; }
+.player-ui .ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
+.player-ui .ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
+.player-ui .ui-slider-vertical .ui-slider-range-min { bottom: 0; }
+.player-ui .ui-slider-vertical .ui-slider-range-max { top: 0; }/*
+ * jQuery UI Tabs 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Tabs#theming
+ */
+.player-ui .ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
+.player-ui .ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
+.player-ui .ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
+.player-ui .ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }
+.player-ui .ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; }
+.player-ui .ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .player-ui .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .player-ui .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
+.player-ui .ui-tabs .ui-tabs-nav li a, .player-ui .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
+.player-ui .ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }
+.player-ui .ui-tabs .ui-tabs-hide { display: none !important; }
+/*
+ * jQuery UI Datepicker 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Datepicker#theming
+ */
+.player-ui .ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }
+.player-ui .ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
+.player-ui .ui-datepicker .ui-datepicker-prev, .player-ui .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
+.player-ui .ui-datepicker .ui-datepicker-prev-hover, .player-ui .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
+.player-ui .ui-datepicker .ui-datepicker-prev { left:2px; }
+.player-ui .ui-datepicker .ui-datepicker-next { right:2px; }
+.player-ui .ui-datepicker .ui-datepicker-prev-hover { left:1px; }
+.player-ui .ui-datepicker .ui-datepicker-next-hover { right:1px; }
+.player-ui .ui-datepicker .ui-datepicker-prev span, .player-ui .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px;  }
+.player-ui .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
+.player-ui .ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
+.player-ui .ui-datepicker select.ui-datepicker-month-year {width: 100%;}
+.player-ui .ui-datepicker select.ui-datepicker-month, 
+.player-ui .ui-datepicker select.ui-datepicker-year { width: 49%;}
+.player-ui .ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
+.player-ui .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0;  }
+.player-ui .ui-datepicker td { border: 0; padding: 1px; }
+.player-ui .ui-datepicker td span, .player-ui .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
+.player-ui .ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
+.player-ui .ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
+.player-ui .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
+
+/* with multiple calendars */
+.player-ui .ui-datepicker.ui-datepicker-multi { width:auto; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group { float:left; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
+.player-ui .ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
+.player-ui .ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
+.player-ui .ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
+.player-ui .ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
+.player-ui .ui-datepicker-row-break { clear:both; width:100%; font-size:0em; }
+
+/* RTL support */
+.player-ui .ui-datepicker-rtl { direction: rtl; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-group { float:right; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+
+/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
+.player-ui .ui-datepicker-cover {
+    display: none; /*sorry for IE5*/
+    display/**/: block; /*sorry for IE5*/
+    position: absolute; /*must have*/
+    z-index: -1; /*must have*/
+    filter: mask(); /*must have*/
+    top: -4px; /*must have*/
+    left: -4px; /*must have*/
+    width: 200px; /*must have*/
+    height: 200px; /*must have*/
+}/*
+ * jQuery UI Progressbar 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Progressbar#theming
+ */
+.player-ui .ui-progressbar { height:2em; text-align: left; overflow: hidden; }
+.player-ui .ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/jquery-ui/cupertino/images/ui-bg_diagonals-thick_90_eeeeee_40x40.png b/public/admin/js/osmplayer/jquery-ui/cupertino/images/ui-bg_diagonals-thick_90_eeeeee_40x40.png
new file mode 100644
index 0000000000000000000000000000000000000000..6348115e6be09c044cd20ead0202c3ab5b2f9c19
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/cupertino/images/ui-bg_diagonals-thick_90_eeeeee_40x40.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/cupertino/images/ui-bg_flat_15_cd0a0a_40x100.png b/public/admin/js/osmplayer/jquery-ui/cupertino/images/ui-bg_flat_15_cd0a0a_40x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..7680b5437cf820615e472dc4f9a18fd0ba8b7881
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/cupertino/images/ui-bg_flat_15_cd0a0a_40x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/cupertino/images/ui-bg_glass_100_e4f1fb_1x400.png b/public/admin/js/osmplayer/jquery-ui/cupertino/images/ui-bg_glass_100_e4f1fb_1x400.png
new file mode 100644
index 0000000000000000000000000000000000000000..705a32ea35d4d0012bfd3b6a3ffe17a2aaf21bb5
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/cupertino/images/ui-bg_glass_100_e4f1fb_1x400.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/cupertino/images/ui-bg_glass_50_3baae3_1x400.png b/public/admin/js/osmplayer/jquery-ui/cupertino/images/ui-bg_glass_50_3baae3_1x400.png
new file mode 100644
index 0000000000000000000000000000000000000000..baabca6baaff94ade4ecd5ddad28e35f52ea3af7
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/cupertino/images/ui-bg_glass_50_3baae3_1x400.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/cupertino/images/ui-bg_glass_80_d7ebf9_1x400.png b/public/admin/js/osmplayer/jquery-ui/cupertino/images/ui-bg_glass_80_d7ebf9_1x400.png
new file mode 100644
index 0000000000000000000000000000000000000000..d9387e9507ef5b48483315affdcf7e69a6a5cbd1
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/cupertino/images/ui-bg_glass_80_d7ebf9_1x400.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/cupertino/images/ui-bg_highlight-hard_100_f2f5f7_1x100.png b/public/admin/js/osmplayer/jquery-ui/cupertino/images/ui-bg_highlight-hard_100_f2f5f7_1x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..28b566c2c29cc0f849995be62c10d7c292697803
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/cupertino/images/ui-bg_highlight-hard_100_f2f5f7_1x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/cupertino/images/ui-bg_highlight-hard_70_000000_1x100.png b/public/admin/js/osmplayer/jquery-ui/cupertino/images/ui-bg_highlight-hard_70_000000_1x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..d58829780430e138704e956a850c2913039fd4d9
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/cupertino/images/ui-bg_highlight-hard_70_000000_1x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/cupertino/images/ui-bg_highlight-soft_100_deedf7_1x100.png b/public/admin/js/osmplayer/jquery-ui/cupertino/images/ui-bg_highlight-soft_100_deedf7_1x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..2289d3c7d7b8e0892f5921de1af87a44b7059eb2
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/cupertino/images/ui-bg_highlight-soft_100_deedf7_1x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/cupertino/images/ui-bg_highlight-soft_25_ffef8f_1x100.png b/public/admin/js/osmplayer/jquery-ui/cupertino/images/ui-bg_highlight-soft_25_ffef8f_1x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..0de3275beabe5ac461e277724f9821c0e2ce084b
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/cupertino/images/ui-bg_highlight-soft_25_ffef8f_1x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/cupertino/images/ui-icons_2694e8_256x240.png b/public/admin/js/osmplayer/jquery-ui/cupertino/images/ui-icons_2694e8_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..e62b8f7fe28d5ab7f9f1af4281afb31a25b657eb
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/cupertino/images/ui-icons_2694e8_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/cupertino/images/ui-icons_2e83ff_256x240.png b/public/admin/js/osmplayer/jquery-ui/cupertino/images/ui-icons_2e83ff_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..09d1cdc856c292c4ab6dd818c7543ac0828bd616
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/cupertino/images/ui-icons_2e83ff_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/cupertino/images/ui-icons_3d80b3_256x240.png b/public/admin/js/osmplayer/jquery-ui/cupertino/images/ui-icons_3d80b3_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..52c3cc6b744776e9d66ea4e845f7a57c070aa851
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/cupertino/images/ui-icons_3d80b3_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/cupertino/images/ui-icons_72a7cf_256x240.png b/public/admin/js/osmplayer/jquery-ui/cupertino/images/ui-icons_72a7cf_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..0d20b7308331069ee2950fa64cb15f4a29ca55f3
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/cupertino/images/ui-icons_72a7cf_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/cupertino/images/ui-icons_ffffff_256x240.png b/public/admin/js/osmplayer/jquery-ui/cupertino/images/ui-icons_ffffff_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..42f8f992c727ddaa617da224a522e463df690387
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/cupertino/images/ui-icons_ffffff_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/cupertino/jquery-ui-1.8.18.custom.css b/public/admin/js/osmplayer/jquery-ui/cupertino/jquery-ui-1.8.18.custom.css
new file mode 100644
index 0000000000000000000000000000000000000000..0ad1992235c07fe4e39ee53c8a85dfb781e1503b
--- /dev/null
+++ b/public/admin/js/osmplayer/jquery-ui/cupertino/jquery-ui-1.8.18.custom.css
@@ -0,0 +1,565 @@
+/*
+ * jQuery UI CSS Framework 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ */
+
+/* Layout helpers
+----------------------------------*/
+.player-ui .ui-helper-hidden { display: none; }
+.player-ui .ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
+.player-ui .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
+.player-ui .ui-helper-clearfix:before, .player-ui .ui-helper-clearfix:after { content: ""; display: table; }
+.player-ui .ui-helper-clearfix:after { clear: both; }
+.player-ui .ui-helper-clearfix { zoom: 1; }
+.player-ui .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
+
+
+/* Interaction Cues
+----------------------------------*/
+.player-ui .ui-state-disabled { cursor: default !important; }
+
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.player-ui .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+.player-ui .ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
+
+
+/*
+ * jQuery UI CSS Framework 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ *
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Lucida%20Grande,%20Lucida%20Sans,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=6px&bgColorHeader=deedf7&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=100&borderColorHeader=aed0ea&fcHeader=222222&iconColorHeader=72a7cf&bgColorContent=f2f5f7&bgTextureContent=04_highlight_hard.png&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=362b36&iconColorContent=72a7cf&bgColorDefault=d7ebf9&bgTextureDefault=02_glass.png&bgImgOpacityDefault=80&borderColorDefault=aed0ea&fcDefault=2779aa&iconColorDefault=3d80b3&bgColorHover=e4f1fb&bgTextureHover=02_glass.png&bgImgOpacityHover=100&borderColorHover=74b2e2&fcHover=0070a3&iconColorHover=2694e8&bgColorActive=3baae3&bgTextureActive=02_glass.png&bgImgOpacityActive=50&borderColorActive=2694e8&fcActive=ffffff&iconColorActive=ffffff&bgColorHighlight=ffef8f&bgTextureHighlight=03_highlight_soft.png&bgImgOpacityHighlight=25&borderColorHighlight=f9dd34&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=cd0a0a&bgTextureError=01_flat.png&bgImgOpacityError=15&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffffff&bgColorOverlay=eeeeee&bgTextureOverlay=08_diagonals_thick.png&bgImgOpacityOverlay=90&opacityOverlay=80&bgColorShadow=000000&bgTextureShadow=04_highlight_hard.png&bgImgOpacityShadow=70&opacityShadow=30&thicknessShadow=7px&offsetTopShadow=-7px&offsetLeftShadow=-7px&cornerRadiusShadow=8px
+ */
+
+
+/* Component containers
+----------------------------------*/
+.player-ui .ui-widget { font-family: Lucida Grande, Lucida Sans, Arial, sans-serif; font-size: 1.1em; }
+.player-ui .ui-widget .ui-widget { font-size: 1em; }
+.player-ui .ui-widget input, .player-ui .ui-widget select, .player-ui .ui-widget textarea, .player-ui .ui-widget button { font-family: Lucida Grande, Lucida Sans, Arial, sans-serif; font-size: 1em; }
+.player-ui .ui-widget-content { border: 1px solid #dddddd; background: #f2f5f7 url(images/ui-bg_highlight-hard_100_f2f5f7_1x100.png) 50% top repeat-x; color: #362b36; }
+.player-ui .ui-widget-content a { color: #362b36; }
+.player-ui .ui-widget-header { border: 1px solid #aed0ea; background: #deedf7 url(images/ui-bg_highlight-soft_100_deedf7_1x100.png) 50% 50% repeat-x; color: #222222; font-weight: bold; }
+.player-ui .ui-widget-header a { color: #222222; }
+
+/* Interaction states
+----------------------------------*/
+.player-ui .ui-state-default, .player-ui .ui-widget-content .ui-state-default, .player-ui .ui-widget-header .ui-state-default { border: 1px solid #aed0ea; background: #d7ebf9 url(images/ui-bg_glass_80_d7ebf9_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #2779aa; }
+.player-ui .ui-state-default a, .player-ui .ui-state-default a:link, .player-ui .ui-state-default a:visited { color: #2779aa; text-decoration: none; }
+.player-ui .ui-state-hover, .player-ui .ui-widget-content .ui-state-hover, .player-ui .ui-widget-header .ui-state-hover, .player-ui .ui-state-focus, .player-ui .ui-widget-content .ui-state-focus, .player-ui .ui-widget-header .ui-state-focus { border: 1px solid #74b2e2; background: #e4f1fb url(images/ui-bg_glass_100_e4f1fb_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #0070a3; }
+.player-ui .ui-state-hover a, .player-ui .ui-state-hover a:hover { color: #0070a3; text-decoration: none; }
+.player-ui .ui-state-active, .player-ui .ui-widget-content .ui-state-active, .player-ui .ui-widget-header .ui-state-active { border: 1px solid #2694e8; background: #3baae3 url(images/ui-bg_glass_50_3baae3_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #ffffff; }
+.player-ui .ui-state-active a, .player-ui .ui-state-active a:link, .player-ui .ui-state-active a:visited { color: #ffffff; text-decoration: none; }
+.player-ui .ui-widget :active { outline: none; }
+
+/* Interaction Cues
+----------------------------------*/
+.player-ui .ui-state-highlight, .player-ui .ui-widget-content .ui-state-highlight, .player-ui .ui-widget-header .ui-state-highlight  {border: 1px solid #f9dd34; background: #ffef8f url(images/ui-bg_highlight-soft_25_ffef8f_1x100.png) 50% top repeat-x; color: #363636; }
+.player-ui .ui-state-highlight a, .player-ui .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
+.player-ui .ui-state-error, .player-ui .ui-widget-content .ui-state-error, .player-ui .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #cd0a0a url(images/ui-bg_flat_15_cd0a0a_40x100.png) 50% 50% repeat-x; color: #ffffff; }
+.player-ui .ui-state-error a, .player-ui .ui-widget-content .ui-state-error a, .player-ui .ui-widget-header .ui-state-error a { color: #ffffff; }
+.player-ui .ui-state-error-text, .player-ui .ui-widget-content .ui-state-error-text, .player-ui .ui-widget-header .ui-state-error-text { color: #ffffff; }
+.player-ui .ui-priority-primary, .player-ui .ui-widget-content .ui-priority-primary, .player-ui .ui-widget-header .ui-priority-primary { font-weight: bold; }
+.player-ui .ui-priority-secondary, .player-ui .ui-widget-content .ui-priority-secondary,  .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
+.player-ui .ui-state-disabled, .player-ui .ui-widget-content .ui-state-disabled, .player-ui .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.player-ui .ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_72a7cf_256x240.png); }
+.player-ui .ui-widget-content .ui-icon {background-image: url(images/ui-icons_72a7cf_256x240.png); }
+.player-ui .ui-widget-header .ui-icon {background-image: url(images/ui-icons_72a7cf_256x240.png); }
+.player-ui .ui-state-default .ui-icon { background-image: url(images/ui-icons_3d80b3_256x240.png); }
+.player-ui .ui-state-hover .ui-icon, .player-ui .ui-state-focus .ui-icon {background-image: url(images/ui-icons_2694e8_256x240.png); }
+.player-ui .ui-state-active .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); }
+.player-ui .ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); }
+.player-ui .ui-state-error .ui-icon, .player-ui .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); }
+
+/* positioning */
+.player-ui .ui-icon-carat-1-n { background-position: 0 0; }
+.player-ui .ui-icon-carat-1-ne { background-position: -16px 0; }
+.player-ui .ui-icon-carat-1-e { background-position: -32px 0; }
+.player-ui .ui-icon-carat-1-se { background-position: -48px 0; }
+.player-ui .ui-icon-carat-1-s { background-position: -64px 0; }
+.player-ui .ui-icon-carat-1-sw { background-position: -80px 0; }
+.player-ui .ui-icon-carat-1-w { background-position: -96px 0; }
+.player-ui .ui-icon-carat-1-nw { background-position: -112px 0; }
+.player-ui .ui-icon-carat-2-n-s { background-position: -128px 0; }
+.player-ui .ui-icon-carat-2-e-w { background-position: -144px 0; }
+.player-ui .ui-icon-triangle-1-n { background-position: 0 -16px; }
+.player-ui .ui-icon-triangle-1-ne { background-position: -16px -16px; }
+.player-ui .ui-icon-triangle-1-e { background-position: -32px -16px; }
+.player-ui .ui-icon-triangle-1-se { background-position: -48px -16px; }
+.player-ui .ui-icon-triangle-1-s { background-position: -64px -16px; }
+.player-ui .ui-icon-triangle-1-sw { background-position: -80px -16px; }
+.player-ui .ui-icon-triangle-1-w { background-position: -96px -16px; }
+.player-ui .ui-icon-triangle-1-nw { background-position: -112px -16px; }
+.player-ui .ui-icon-triangle-2-n-s { background-position: -128px -16px; }
+.player-ui .ui-icon-triangle-2-e-w { background-position: -144px -16px; }
+.player-ui .ui-icon-arrow-1-n { background-position: 0 -32px; }
+.player-ui .ui-icon-arrow-1-ne { background-position: -16px -32px; }
+.player-ui .ui-icon-arrow-1-e { background-position: -32px -32px; }
+.player-ui .ui-icon-arrow-1-se { background-position: -48px -32px; }
+.player-ui .ui-icon-arrow-1-s { background-position: -64px -32px; }
+.player-ui .ui-icon-arrow-1-sw { background-position: -80px -32px; }
+.player-ui .ui-icon-arrow-1-w { background-position: -96px -32px; }
+.player-ui .ui-icon-arrow-1-nw { background-position: -112px -32px; }
+.player-ui .ui-icon-arrow-2-n-s { background-position: -128px -32px; }
+.player-ui .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
+.player-ui .ui-icon-arrow-2-e-w { background-position: -160px -32px; }
+.player-ui .ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
+.player-ui .ui-icon-arrowstop-1-n { background-position: -192px -32px; }
+.player-ui .ui-icon-arrowstop-1-e { background-position: -208px -32px; }
+.player-ui .ui-icon-arrowstop-1-s { background-position: -224px -32px; }
+.player-ui .ui-icon-arrowstop-1-w { background-position: -240px -32px; }
+.player-ui .ui-icon-arrowthick-1-n { background-position: 0 -48px; }
+.player-ui .ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
+.player-ui .ui-icon-arrowthick-1-e { background-position: -32px -48px; }
+.player-ui .ui-icon-arrowthick-1-se { background-position: -48px -48px; }
+.player-ui .ui-icon-arrowthick-1-s { background-position: -64px -48px; }
+.player-ui .ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
+.player-ui .ui-icon-arrowthick-1-w { background-position: -96px -48px; }
+.player-ui .ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
+.player-ui .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
+.player-ui .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
+.player-ui .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
+.player-ui .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
+.player-ui .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
+.player-ui .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
+.player-ui .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
+.player-ui .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
+.player-ui .ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
+.player-ui .ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
+.player-ui .ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
+.player-ui .ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
+.player-ui .ui-icon-arrow-4 { background-position: 0 -80px; }
+.player-ui .ui-icon-arrow-4-diag { background-position: -16px -80px; }
+.player-ui .ui-icon-extlink { background-position: -32px -80px; }
+.player-ui .ui-icon-newwin { background-position: -48px -80px; }
+.player-ui .ui-icon-refresh { background-position: -64px -80px; }
+.player-ui .ui-icon-shuffle { background-position: -80px -80px; }
+.player-ui .ui-icon-transfer-e-w { background-position: -96px -80px; }
+.player-ui .ui-icon-transferthick-e-w { background-position: -112px -80px; }
+.player-ui .ui-icon-folder-collapsed { background-position: 0 -96px; }
+.player-ui .ui-icon-folder-open { background-position: -16px -96px; }
+.player-ui .ui-icon-document { background-position: -32px -96px; }
+.player-ui .ui-icon-document-b { background-position: -48px -96px; }
+.player-ui .ui-icon-note { background-position: -64px -96px; }
+.player-ui .ui-icon-mail-closed { background-position: -80px -96px; }
+.player-ui .ui-icon-mail-open { background-position: -96px -96px; }
+.player-ui .ui-icon-suitcase { background-position: -112px -96px; }
+.player-ui .ui-icon-comment { background-position: -128px -96px; }
+.player-ui .ui-icon-person { background-position: -144px -96px; }
+.player-ui .ui-icon-print { background-position: -160px -96px; }
+.player-ui .ui-icon-trash { background-position: -176px -96px; }
+.player-ui .ui-icon-locked { background-position: -192px -96px; }
+.player-ui .ui-icon-unlocked { background-position: -208px -96px; }
+.player-ui .ui-icon-bookmark { background-position: -224px -96px; }
+.player-ui .ui-icon-tag { background-position: -240px -96px; }
+.player-ui .ui-icon-home { background-position: 0 -112px; }
+.player-ui .ui-icon-flag { background-position: -16px -112px; }
+.player-ui .ui-icon-calendar { background-position: -32px -112px; }
+.player-ui .ui-icon-cart { background-position: -48px -112px; }
+.player-ui .ui-icon-pencil { background-position: -64px -112px; }
+.player-ui .ui-icon-clock { background-position: -80px -112px; }
+.player-ui .ui-icon-disk { background-position: -96px -112px; }
+.player-ui .ui-icon-calculator { background-position: -112px -112px; }
+.player-ui .ui-icon-zoomin { background-position: -128px -112px; }
+.player-ui .ui-icon-zoomout { background-position: -144px -112px; }
+.player-ui .ui-icon-search { background-position: -160px -112px; }
+.player-ui .ui-icon-wrench { background-position: -176px -112px; }
+.player-ui .ui-icon-gear { background-position: -192px -112px; }
+.player-ui .ui-icon-heart { background-position: -208px -112px; }
+.player-ui .ui-icon-star { background-position: -224px -112px; }
+.player-ui .ui-icon-link { background-position: -240px -112px; }
+.player-ui .ui-icon-cancel { background-position: 0 -128px; }
+.player-ui .ui-icon-plus { background-position: -16px -128px; }
+.player-ui .ui-icon-plusthick { background-position: -32px -128px; }
+.player-ui .ui-icon-minus { background-position: -48px -128px; }
+.player-ui .ui-icon-minusthick { background-position: -64px -128px; }
+.player-ui .ui-icon-close { background-position: -80px -128px; }
+.player-ui .ui-icon-closethick { background-position: -96px -128px; }
+.player-ui .ui-icon-key { background-position: -112px -128px; }
+.player-ui .ui-icon-lightbulb { background-position: -128px -128px; }
+.player-ui .ui-icon-scissors { background-position: -144px -128px; }
+.player-ui .ui-icon-clipboard { background-position: -160px -128px; }
+.player-ui .ui-icon-copy { background-position: -176px -128px; }
+.player-ui .ui-icon-contact { background-position: -192px -128px; }
+.player-ui .ui-icon-image { background-position: -208px -128px; }
+.player-ui .ui-icon-video { background-position: -224px -128px; }
+.player-ui .ui-icon-script { background-position: -240px -128px; }
+.player-ui .ui-icon-alert { background-position: 0 -144px; }
+.player-ui .ui-icon-info { background-position: -16px -144px; }
+.player-ui .ui-icon-notice { background-position: -32px -144px; }
+.player-ui .ui-icon-help { background-position: -48px -144px; }
+.player-ui .ui-icon-check { background-position: -64px -144px; }
+.player-ui .ui-icon-bullet { background-position: -80px -144px; }
+.player-ui .ui-icon-radio-off { background-position: -96px -144px; }
+.player-ui .ui-icon-radio-on { background-position: -112px -144px; }
+.player-ui .ui-icon-pin-w { background-position: -128px -144px; }
+.player-ui .ui-icon-pin-s { background-position: -144px -144px; }
+.player-ui .ui-icon-play { background-position: 0 -160px; }
+.player-ui .ui-icon-pause { background-position: -16px -160px; }
+.player-ui .ui-icon-seek-next { background-position: -32px -160px; }
+.player-ui .ui-icon-seek-prev { background-position: -48px -160px; }
+.player-ui .ui-icon-seek-end { background-position: -64px -160px; }
+.player-ui .ui-icon-seek-start { background-position: -80px -160px; }
+/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
+.player-ui .ui-icon-seek-first { background-position: -80px -160px; }
+.player-ui .ui-icon-stop { background-position: -96px -160px; }
+.player-ui .ui-icon-eject { background-position: -112px -160px; }
+.player-ui .ui-icon-volume-off { background-position: -128px -160px; }
+.player-ui .ui-icon-volume-on { background-position: -144px -160px; }
+.player-ui .ui-icon-power { background-position: 0 -176px; }
+.player-ui .ui-icon-signal-diag { background-position: -16px -176px; }
+.player-ui .ui-icon-signal { background-position: -32px -176px; }
+.player-ui .ui-icon-battery-0 { background-position: -48px -176px; }
+.player-ui .ui-icon-battery-1 { background-position: -64px -176px; }
+.player-ui .ui-icon-battery-2 { background-position: -80px -176px; }
+.player-ui .ui-icon-battery-3 { background-position: -96px -176px; }
+.player-ui .ui-icon-circle-plus { background-position: 0 -192px; }
+.player-ui .ui-icon-circle-minus { background-position: -16px -192px; }
+.player-ui .ui-icon-circle-close { background-position: -32px -192px; }
+.player-ui .ui-icon-circle-triangle-e { background-position: -48px -192px; }
+.player-ui .ui-icon-circle-triangle-s { background-position: -64px -192px; }
+.player-ui .ui-icon-circle-triangle-w { background-position: -80px -192px; }
+.player-ui .ui-icon-circle-triangle-n { background-position: -96px -192px; }
+.player-ui .ui-icon-circle-arrow-e { background-position: -112px -192px; }
+.player-ui .ui-icon-circle-arrow-s { background-position: -128px -192px; }
+.player-ui .ui-icon-circle-arrow-w { background-position: -144px -192px; }
+.player-ui .ui-icon-circle-arrow-n { background-position: -160px -192px; }
+.player-ui .ui-icon-circle-zoomin { background-position: -176px -192px; }
+.player-ui .ui-icon-circle-zoomout { background-position: -192px -192px; }
+.player-ui .ui-icon-circle-check { background-position: -208px -192px; }
+.player-ui .ui-icon-circlesmall-plus { background-position: 0 -208px; }
+.player-ui .ui-icon-circlesmall-minus { background-position: -16px -208px; }
+.player-ui .ui-icon-circlesmall-close { background-position: -32px -208px; }
+.player-ui .ui-icon-squaresmall-plus { background-position: -48px -208px; }
+.player-ui .ui-icon-squaresmall-minus { background-position: -64px -208px; }
+.player-ui .ui-icon-squaresmall-close { background-position: -80px -208px; }
+.player-ui .ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
+.player-ui .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
+.player-ui .ui-icon-grip-solid-vertical { background-position: -32px -224px; }
+.player-ui .ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
+.player-ui .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
+.player-ui .ui-icon-grip-diagonal-se { background-position: -80px -224px; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Corner radius */
+.player-ui .ui-corner-all, .player-ui .ui-corner-top, .player-ui .ui-corner-left, .player-ui .ui-corner-tl { -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; -khtml-border-top-left-radius: 6px; border-top-left-radius: 6px; }
+.player-ui .ui-corner-all, .player-ui .ui-corner-top, .player-ui .ui-corner-right, .player-ui .ui-corner-tr { -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; -khtml-border-top-right-radius: 6px; border-top-right-radius: 6px; }
+.player-ui .ui-corner-all, .player-ui .ui-corner-bottom, .player-ui .ui-corner-left, .player-ui .ui-corner-bl { -moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; -khtml-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px; }
+.player-ui .ui-corner-all, .player-ui .ui-corner-bottom, .player-ui .ui-corner-right, .player-ui .ui-corner-br { -moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; -khtml-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px; }
+
+/* Overlays */
+.player-ui .ui-widget-overlay { background: #eeeeee url(images/ui-bg_diagonals-thick_90_eeeeee_40x40.png) 50% 50% repeat; opacity: .80;filter:Alpha(Opacity=80); }
+.player-ui .ui-widget-shadow { margin: -7px 0 0 -7px; padding: 7px; background: #000000 url(images/ui-bg_highlight-hard_70_000000_1x100.png) 50% top repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -khtml-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/*
+ * jQuery UI Resizable 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Resizable#theming
+ */
+.player-ui .ui-resizable { position: relative;}
+.player-ui .ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block; }
+.player-ui .ui-resizable-disabled .ui-resizable-handle, .player-ui .ui-resizable-autohide .ui-resizable-handle { display: none; }
+.player-ui .ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
+.player-ui .ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
+.player-ui .ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
+.player-ui .ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
+.player-ui .ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
+.player-ui .ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
+.player-ui .ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
+.player-ui .ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/*
+ * jQuery UI Selectable 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Selectable#theming
+ */
+.player-ui .ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }
+/*
+ * jQuery UI Accordion 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Accordion#theming
+ */
+/* IE/Win - Fix animation bug - #4615 */
+.player-ui .ui-accordion { width: 100%; }
+.player-ui .ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
+.player-ui .ui-accordion .ui-accordion-li-fix { display: inline; }
+.player-ui .ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
+.player-ui .ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; }
+.player-ui .ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; }
+.player-ui .ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
+.player-ui .ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; }
+.player-ui .ui-accordion .ui-accordion-content-active { display: block; }
+/*
+ * jQuery UI Autocomplete 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Autocomplete#theming
+ */
+.player-ui .ui-autocomplete { position: absolute; cursor: default; }	
+
+/* workarounds */
+* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
+
+/*
+ * jQuery UI Menu 1.8.18
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Menu#theming
+ */
+.player-ui .ui-menu {
+	list-style:none;
+	padding: 2px;
+	margin: 0;
+	display:block;
+	float: left;
+}
+.player-ui .ui-menu .ui-menu {
+	margin-top: -3px;
+}
+.player-ui .ui-menu .ui-menu-item {
+	margin:0;
+	padding: 0;
+	zoom: 1;
+	float: left;
+	clear: left;
+	width: 100%;
+}
+.player-ui .ui-menu .ui-menu-item a {
+	text-decoration:none;
+	display:block;
+	padding:.2em .4em;
+	line-height:1.5;
+	zoom:1;
+}
+.player-ui .ui-menu .ui-menu-item a.ui-state-hover,
+.player-ui .ui-menu .ui-menu-item a.ui-state-active {
+	font-weight: normal;
+	margin: -1px;
+}
+/*
+ * jQuery UI Button 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Button#theming
+ */
+.player-ui .ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: hidden; *overflow: visible; } /* the overflow property removes extra width in IE */
+.player-ui .ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
+button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
+.player-ui .ui-button-icons-only { width: 3.4em; } 
+button.ui-button-icons-only { width: 3.7em; } 
+
+/*button text element */
+.player-ui .ui-button .ui-button-text { display: block; line-height: 1.4;  }
+.player-ui .ui-button-text-only .ui-button-text { padding: .4em 1em; }
+.player-ui .ui-button-icon-only .ui-button-text, .player-ui .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
+.player-ui .ui-button-text-icon-primary .ui-button-text, .player-ui .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
+.player-ui .ui-button-text-icon-secondary .ui-button-text, .player-ui .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }
+.player-ui .ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }
+/* no icon support for input elements, provide padding by default */
+input.ui-button { padding: .4em 1em; }
+
+/*button icon element(s) */
+.player-ui .ui-button-icon-only .ui-icon, .player-ui .ui-button-text-icon-primary .ui-icon, .player-ui .ui-button-text-icon-secondary .ui-icon, .player-ui .ui-button-text-icons .ui-icon, .player-ui .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
+.player-ui .ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
+.player-ui .ui-button-text-icon-primary .ui-button-icon-primary, .player-ui .ui-button-text-icons .ui-button-icon-primary, .player-ui .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
+.player-ui .ui-button-text-icon-secondary .ui-button-icon-secondary, .player-ui .ui-button-text-icons .ui-button-icon-secondary, .player-ui .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
+.player-ui .ui-button-text-icons .ui-button-icon-secondary, .player-ui .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
+
+/*button sets*/
+.player-ui .ui-buttonset { margin-right: 7px; }
+.player-ui .ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }
+
+/* workarounds */
+button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
+/*
+ * jQuery UI Dialog 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Dialog#theming
+ */
+.player-ui .ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; }
+.player-ui .ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative;  }
+.player-ui .ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; } 
+.player-ui .ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
+.player-ui .ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
+.player-ui .ui-dialog .ui-dialog-titlebar-close:hover, .player-ui .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
+.player-ui .ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
+.player-ui .ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
+.player-ui .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
+.player-ui .ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
+.player-ui .ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
+.player-ui .ui-draggable .ui-dialog-titlebar { cursor: move; }
+/*
+ * jQuery UI Slider 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Slider#theming
+ */
+.player-ui .ui-slider { position: relative; text-align: left; }
+.player-ui .ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
+.player-ui .ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
+
+.player-ui .ui-slider-horizontal { height: .8em; }
+.player-ui .ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
+.player-ui .ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
+.player-ui .ui-slider-horizontal .ui-slider-range-min { left: 0; }
+.player-ui .ui-slider-horizontal .ui-slider-range-max { right: 0; }
+
+.player-ui .ui-slider-vertical { width: .8em; height: 100px; }
+.player-ui .ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
+.player-ui .ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
+.player-ui .ui-slider-vertical .ui-slider-range-min { bottom: 0; }
+.player-ui .ui-slider-vertical .ui-slider-range-max { top: 0; }/*
+ * jQuery UI Tabs 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Tabs#theming
+ */
+.player-ui .ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
+.player-ui .ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
+.player-ui .ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
+.player-ui .ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }
+.player-ui .ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; }
+.player-ui .ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .player-ui .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .player-ui .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
+.player-ui .ui-tabs .ui-tabs-nav li a, .player-ui .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
+.player-ui .ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }
+.player-ui .ui-tabs .ui-tabs-hide { display: none !important; }
+/*
+ * jQuery UI Datepicker 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Datepicker#theming
+ */
+.player-ui .ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }
+.player-ui .ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
+.player-ui .ui-datepicker .ui-datepicker-prev, .player-ui .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
+.player-ui .ui-datepicker .ui-datepicker-prev-hover, .player-ui .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
+.player-ui .ui-datepicker .ui-datepicker-prev { left:2px; }
+.player-ui .ui-datepicker .ui-datepicker-next { right:2px; }
+.player-ui .ui-datepicker .ui-datepicker-prev-hover { left:1px; }
+.player-ui .ui-datepicker .ui-datepicker-next-hover { right:1px; }
+.player-ui .ui-datepicker .ui-datepicker-prev span, .player-ui .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px;  }
+.player-ui .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
+.player-ui .ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
+.player-ui .ui-datepicker select.ui-datepicker-month-year {width: 100%;}
+.player-ui .ui-datepicker select.ui-datepicker-month, 
+.player-ui .ui-datepicker select.ui-datepicker-year { width: 49%;}
+.player-ui .ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
+.player-ui .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0;  }
+.player-ui .ui-datepicker td { border: 0; padding: 1px; }
+.player-ui .ui-datepicker td span, .player-ui .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
+.player-ui .ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
+.player-ui .ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
+.player-ui .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
+
+/* with multiple calendars */
+.player-ui .ui-datepicker.ui-datepicker-multi { width:auto; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group { float:left; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
+.player-ui .ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
+.player-ui .ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
+.player-ui .ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
+.player-ui .ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
+.player-ui .ui-datepicker-row-break { clear:both; width:100%; font-size:0em; }
+
+/* RTL support */
+.player-ui .ui-datepicker-rtl { direction: rtl; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-group { float:right; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+
+/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
+.player-ui .ui-datepicker-cover {
+    display: none; /*sorry for IE5*/
+    display/**/: block; /*sorry for IE5*/
+    position: absolute; /*must have*/
+    z-index: -1; /*must have*/
+    filter: mask(); /*must have*/
+    top: -4px; /*must have*/
+    left: -4px; /*must have*/
+    width: 200px; /*must have*/
+    height: 200px; /*must have*/
+}/*
+ * jQuery UI Progressbar 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Progressbar#theming
+ */
+.player-ui .ui-progressbar { height:2em; text-align: left; overflow: hidden; }
+.player-ui .ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/jquery-ui/dark-hive/images/ui-bg_flat_30_cccccc_40x100.png b/public/admin/js/osmplayer/jquery-ui/dark-hive/images/ui-bg_flat_30_cccccc_40x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..5473afffbc2662173f5af5c27d966c072de8039b
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/dark-hive/images/ui-bg_flat_30_cccccc_40x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/dark-hive/images/ui-bg_flat_50_5c5c5c_40x100.png b/public/admin/js/osmplayer/jquery-ui/dark-hive/images/ui-bg_flat_50_5c5c5c_40x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..5950a8db9e64e8d00bb28726cb869947abfdc7fc
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/dark-hive/images/ui-bg_flat_50_5c5c5c_40x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/dark-hive/images/ui-bg_glass_40_ffc73d_1x400.png b/public/admin/js/osmplayer/jquery-ui/dark-hive/images/ui-bg_glass_40_ffc73d_1x400.png
new file mode 100644
index 0000000000000000000000000000000000000000..35ec0d9d290646cc4e487ad973dde7e979829d00
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/dark-hive/images/ui-bg_glass_40_ffc73d_1x400.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/dark-hive/images/ui-bg_highlight-hard_20_0972a5_1x100.png b/public/admin/js/osmplayer/jquery-ui/dark-hive/images/ui-bg_highlight-hard_20_0972a5_1x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..142598c15cb0ca540aa6827347b5c7e85a868917
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/dark-hive/images/ui-bg_highlight-hard_20_0972a5_1x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/dark-hive/images/ui-bg_highlight-soft_33_003147_1x100.png b/public/admin/js/osmplayer/jquery-ui/dark-hive/images/ui-bg_highlight-soft_33_003147_1x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..e83ff52ff661473dfbb5d7ecefc79666b5deaa86
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/dark-hive/images/ui-bg_highlight-soft_33_003147_1x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/dark-hive/images/ui-bg_highlight-soft_35_222222_1x100.png b/public/admin/js/osmplayer/jquery-ui/dark-hive/images/ui-bg_highlight-soft_35_222222_1x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..a9b5ae3003b5408a0adfa4b039b35c19761e0640
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/dark-hive/images/ui-bg_highlight-soft_35_222222_1x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/dark-hive/images/ui-bg_highlight-soft_44_444444_1x100.png b/public/admin/js/osmplayer/jquery-ui/dark-hive/images/ui-bg_highlight-soft_44_444444_1x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..a5c0a4d0e8c4fa60c912c1eb5c67703cb358070e
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/dark-hive/images/ui-bg_highlight-soft_44_444444_1x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/dark-hive/images/ui-bg_highlight-soft_80_eeeeee_1x100.png b/public/admin/js/osmplayer/jquery-ui/dark-hive/images/ui-bg_highlight-soft_80_eeeeee_1x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..e56eefd612ae74339bd45ae91ddfc2ae2eb7092b
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/dark-hive/images/ui-bg_highlight-soft_80_eeeeee_1x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/dark-hive/images/ui-bg_loop_25_000000_21x21.png b/public/admin/js/osmplayer/jquery-ui/dark-hive/images/ui-bg_loop_25_000000_21x21.png
new file mode 100644
index 0000000000000000000000000000000000000000..bc7ea5f78045721fcbc80c11a7833566ab81f5d2
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/dark-hive/images/ui-bg_loop_25_000000_21x21.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/dark-hive/images/ui-icons_222222_256x240.png b/public/admin/js/osmplayer/jquery-ui/dark-hive/images/ui-icons_222222_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..b273ff111d219c9b9a8b96d57683d0075fb7871a
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/dark-hive/images/ui-icons_222222_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/dark-hive/images/ui-icons_4b8e0b_256x240.png b/public/admin/js/osmplayer/jquery-ui/dark-hive/images/ui-icons_4b8e0b_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..3bdb67be8f85c00d44940330a9a8cb07a73e83a4
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/dark-hive/images/ui-icons_4b8e0b_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/dark-hive/images/ui-icons_a83300_256x240.png b/public/admin/js/osmplayer/jquery-ui/dark-hive/images/ui-icons_a83300_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..95993eab7625fb91819ce8d3d72fd6f71a520eda
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/dark-hive/images/ui-icons_a83300_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/dark-hive/images/ui-icons_cccccc_256x240.png b/public/admin/js/osmplayer/jquery-ui/dark-hive/images/ui-icons_cccccc_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..9254e05cfb964be56241b5bb4d0a0eb51c02df80
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/dark-hive/images/ui-icons_cccccc_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/dark-hive/images/ui-icons_ffffff_256x240.png b/public/admin/js/osmplayer/jquery-ui/dark-hive/images/ui-icons_ffffff_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..42f8f992c727ddaa617da224a522e463df690387
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/dark-hive/images/ui-icons_ffffff_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/dark-hive/jquery-ui-1.8.18.custom.css b/public/admin/js/osmplayer/jquery-ui/dark-hive/jquery-ui-1.8.18.custom.css
new file mode 100644
index 0000000000000000000000000000000000000000..9da98e2119d2e30cf8ff718b2d84e484f9db78bf
--- /dev/null
+++ b/public/admin/js/osmplayer/jquery-ui/dark-hive/jquery-ui-1.8.18.custom.css
@@ -0,0 +1,565 @@
+/*
+ * jQuery UI CSS Framework 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ */
+
+/* Layout helpers
+----------------------------------*/
+.player-ui .ui-helper-hidden { display: none; }
+.player-ui .ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
+.player-ui .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
+.player-ui .ui-helper-clearfix:before, .player-ui .ui-helper-clearfix:after { content: ""; display: table; }
+.player-ui .ui-helper-clearfix:after { clear: both; }
+.player-ui .ui-helper-clearfix { zoom: 1; }
+.player-ui .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
+
+
+/* Interaction Cues
+----------------------------------*/
+.player-ui .ui-state-disabled { cursor: default !important; }
+
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.player-ui .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+.player-ui .ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
+
+
+/*
+ * jQuery UI CSS Framework 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ *
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana,%20Arial,%20sans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=6px&bgColorHeader=444444&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=44&borderColorHeader=333333&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=000000&bgTextureContent=14_loop.png&bgImgOpacityContent=25&borderColorContent=555555&fcContent=ffffff&iconColorContent=cccccc&bgColorDefault=222222&bgTextureDefault=03_highlight_soft.png&bgImgOpacityDefault=35&borderColorDefault=444444&fcDefault=eeeeee&iconColorDefault=cccccc&bgColorHover=003147&bgTextureHover=03_highlight_soft.png&bgImgOpacityHover=33&borderColorHover=0b93d5&fcHover=ffffff&iconColorHover=ffffff&bgColorActive=0972a5&bgTextureActive=04_highlight_hard.png&bgImgOpacityActive=20&borderColorActive=26b3f7&fcActive=ffffff&iconColorActive=222222&bgColorHighlight=eeeeee&bgTextureHighlight=03_highlight_soft.png&bgImgOpacityHighlight=80&borderColorHighlight=cccccc&fcHighlight=2e7db2&iconColorHighlight=4b8e0b&bgColorError=ffc73d&bgTextureError=02_glass.png&bgImgOpacityError=40&borderColorError=ffb73d&fcError=111111&iconColorError=a83300&bgColorOverlay=5c5c5c&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=50&opacityOverlay=80&bgColorShadow=cccccc&bgTextureShadow=01_flat.png&bgImgOpacityShadow=30&opacityShadow=60&thicknessShadow=7px&offsetTopShadow=-7px&offsetLeftShadow=-7px&cornerRadiusShadow=8px
+ */
+
+
+/* Component containers
+----------------------------------*/
+.player-ui .ui-widget { font-family: Verdana, Arial, sans-serif; font-size: 1.1em; }
+.player-ui .ui-widget .ui-widget { font-size: 1em; }
+.player-ui .ui-widget input, .player-ui .ui-widget select, .player-ui .ui-widget textarea, .player-ui .ui-widget button { font-family: Verdana, Arial, sans-serif; font-size: 1em; }
+.player-ui .ui-widget-content { border: 1px solid #555555; background: #000000 url(images/ui-bg_loop_25_000000_21x21.png) 50% 50% repeat; color: #ffffff; }
+.player-ui .ui-widget-content a { color: #ffffff; }
+.player-ui .ui-widget-header { border: 1px solid #333333; background: #444444 url(images/ui-bg_highlight-soft_44_444444_1x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; }
+.player-ui .ui-widget-header a { color: #ffffff; }
+
+/* Interaction states
+----------------------------------*/
+.player-ui .ui-state-default, .player-ui .ui-widget-content .ui-state-default, .player-ui .ui-widget-header .ui-state-default { border: 1px solid #444444; background: #222222 url(images/ui-bg_highlight-soft_35_222222_1x100.png) 50% 50% repeat-x; font-weight: normal; color: #eeeeee; }
+.player-ui .ui-state-default a, .player-ui .ui-state-default a:link, .player-ui .ui-state-default a:visited { color: #eeeeee; text-decoration: none; }
+.player-ui .ui-state-hover, .player-ui .ui-widget-content .ui-state-hover, .player-ui .ui-widget-header .ui-state-hover, .player-ui .ui-state-focus, .player-ui .ui-widget-content .ui-state-focus, .player-ui .ui-widget-header .ui-state-focus { border: 1px solid #0b93d5; background: #003147 url(images/ui-bg_highlight-soft_33_003147_1x100.png) 50% 50% repeat-x; font-weight: normal; color: #ffffff; }
+.player-ui .ui-state-hover a, .player-ui .ui-state-hover a:hover { color: #ffffff; text-decoration: none; }
+.player-ui .ui-state-active, .player-ui .ui-widget-content .ui-state-active, .player-ui .ui-widget-header .ui-state-active { border: 1px solid #26b3f7; background: #0972a5 url(images/ui-bg_highlight-hard_20_0972a5_1x100.png) 50% 50% repeat-x; font-weight: normal; color: #ffffff; }
+.player-ui .ui-state-active a, .player-ui .ui-state-active a:link, .player-ui .ui-state-active a:visited { color: #ffffff; text-decoration: none; }
+.player-ui .ui-widget :active { outline: none; }
+
+/* Interaction Cues
+----------------------------------*/
+.player-ui .ui-state-highlight, .player-ui .ui-widget-content .ui-state-highlight, .player-ui .ui-widget-header .ui-state-highlight  {border: 1px solid #cccccc; background: #eeeeee url(images/ui-bg_highlight-soft_80_eeeeee_1x100.png) 50% top repeat-x; color: #2e7db2; }
+.player-ui .ui-state-highlight a, .player-ui .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #2e7db2; }
+.player-ui .ui-state-error, .player-ui .ui-widget-content .ui-state-error, .player-ui .ui-widget-header .ui-state-error {border: 1px solid #ffb73d; background: #ffc73d url(images/ui-bg_glass_40_ffc73d_1x400.png) 50% 50% repeat-x; color: #111111; }
+.player-ui .ui-state-error a, .player-ui .ui-widget-content .ui-state-error a, .player-ui .ui-widget-header .ui-state-error a { color: #111111; }
+.player-ui .ui-state-error-text, .player-ui .ui-widget-content .ui-state-error-text, .player-ui .ui-widget-header .ui-state-error-text { color: #111111; }
+.player-ui .ui-priority-primary, .player-ui .ui-widget-content .ui-priority-primary, .player-ui .ui-widget-header .ui-priority-primary { font-weight: bold; }
+.player-ui .ui-priority-secondary, .player-ui .ui-widget-content .ui-priority-secondary,  .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
+.player-ui .ui-state-disabled, .player-ui .ui-widget-content .ui-state-disabled, .player-ui .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.player-ui .ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_cccccc_256x240.png); }
+.player-ui .ui-widget-content .ui-icon {background-image: url(images/ui-icons_cccccc_256x240.png); }
+.player-ui .ui-widget-header .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); }
+.player-ui .ui-state-default .ui-icon { background-image: url(images/ui-icons_cccccc_256x240.png); }
+.player-ui .ui-state-hover .ui-icon, .player-ui .ui-state-focus .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); }
+.player-ui .ui-state-active .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
+.player-ui .ui-state-highlight .ui-icon {background-image: url(images/ui-icons_4b8e0b_256x240.png); }
+.player-ui .ui-state-error .ui-icon, .player-ui .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_a83300_256x240.png); }
+
+/* positioning */
+.player-ui .ui-icon-carat-1-n { background-position: 0 0; }
+.player-ui .ui-icon-carat-1-ne { background-position: -16px 0; }
+.player-ui .ui-icon-carat-1-e { background-position: -32px 0; }
+.player-ui .ui-icon-carat-1-se { background-position: -48px 0; }
+.player-ui .ui-icon-carat-1-s { background-position: -64px 0; }
+.player-ui .ui-icon-carat-1-sw { background-position: -80px 0; }
+.player-ui .ui-icon-carat-1-w { background-position: -96px 0; }
+.player-ui .ui-icon-carat-1-nw { background-position: -112px 0; }
+.player-ui .ui-icon-carat-2-n-s { background-position: -128px 0; }
+.player-ui .ui-icon-carat-2-e-w { background-position: -144px 0; }
+.player-ui .ui-icon-triangle-1-n { background-position: 0 -16px; }
+.player-ui .ui-icon-triangle-1-ne { background-position: -16px -16px; }
+.player-ui .ui-icon-triangle-1-e { background-position: -32px -16px; }
+.player-ui .ui-icon-triangle-1-se { background-position: -48px -16px; }
+.player-ui .ui-icon-triangle-1-s { background-position: -64px -16px; }
+.player-ui .ui-icon-triangle-1-sw { background-position: -80px -16px; }
+.player-ui .ui-icon-triangle-1-w { background-position: -96px -16px; }
+.player-ui .ui-icon-triangle-1-nw { background-position: -112px -16px; }
+.player-ui .ui-icon-triangle-2-n-s { background-position: -128px -16px; }
+.player-ui .ui-icon-triangle-2-e-w { background-position: -144px -16px; }
+.player-ui .ui-icon-arrow-1-n { background-position: 0 -32px; }
+.player-ui .ui-icon-arrow-1-ne { background-position: -16px -32px; }
+.player-ui .ui-icon-arrow-1-e { background-position: -32px -32px; }
+.player-ui .ui-icon-arrow-1-se { background-position: -48px -32px; }
+.player-ui .ui-icon-arrow-1-s { background-position: -64px -32px; }
+.player-ui .ui-icon-arrow-1-sw { background-position: -80px -32px; }
+.player-ui .ui-icon-arrow-1-w { background-position: -96px -32px; }
+.player-ui .ui-icon-arrow-1-nw { background-position: -112px -32px; }
+.player-ui .ui-icon-arrow-2-n-s { background-position: -128px -32px; }
+.player-ui .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
+.player-ui .ui-icon-arrow-2-e-w { background-position: -160px -32px; }
+.player-ui .ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
+.player-ui .ui-icon-arrowstop-1-n { background-position: -192px -32px; }
+.player-ui .ui-icon-arrowstop-1-e { background-position: -208px -32px; }
+.player-ui .ui-icon-arrowstop-1-s { background-position: -224px -32px; }
+.player-ui .ui-icon-arrowstop-1-w { background-position: -240px -32px; }
+.player-ui .ui-icon-arrowthick-1-n { background-position: 0 -48px; }
+.player-ui .ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
+.player-ui .ui-icon-arrowthick-1-e { background-position: -32px -48px; }
+.player-ui .ui-icon-arrowthick-1-se { background-position: -48px -48px; }
+.player-ui .ui-icon-arrowthick-1-s { background-position: -64px -48px; }
+.player-ui .ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
+.player-ui .ui-icon-arrowthick-1-w { background-position: -96px -48px; }
+.player-ui .ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
+.player-ui .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
+.player-ui .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
+.player-ui .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
+.player-ui .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
+.player-ui .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
+.player-ui .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
+.player-ui .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
+.player-ui .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
+.player-ui .ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
+.player-ui .ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
+.player-ui .ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
+.player-ui .ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
+.player-ui .ui-icon-arrow-4 { background-position: 0 -80px; }
+.player-ui .ui-icon-arrow-4-diag { background-position: -16px -80px; }
+.player-ui .ui-icon-extlink { background-position: -32px -80px; }
+.player-ui .ui-icon-newwin { background-position: -48px -80px; }
+.player-ui .ui-icon-refresh { background-position: -64px -80px; }
+.player-ui .ui-icon-shuffle { background-position: -80px -80px; }
+.player-ui .ui-icon-transfer-e-w { background-position: -96px -80px; }
+.player-ui .ui-icon-transferthick-e-w { background-position: -112px -80px; }
+.player-ui .ui-icon-folder-collapsed { background-position: 0 -96px; }
+.player-ui .ui-icon-folder-open { background-position: -16px -96px; }
+.player-ui .ui-icon-document { background-position: -32px -96px; }
+.player-ui .ui-icon-document-b { background-position: -48px -96px; }
+.player-ui .ui-icon-note { background-position: -64px -96px; }
+.player-ui .ui-icon-mail-closed { background-position: -80px -96px; }
+.player-ui .ui-icon-mail-open { background-position: -96px -96px; }
+.player-ui .ui-icon-suitcase { background-position: -112px -96px; }
+.player-ui .ui-icon-comment { background-position: -128px -96px; }
+.player-ui .ui-icon-person { background-position: -144px -96px; }
+.player-ui .ui-icon-print { background-position: -160px -96px; }
+.player-ui .ui-icon-trash { background-position: -176px -96px; }
+.player-ui .ui-icon-locked { background-position: -192px -96px; }
+.player-ui .ui-icon-unlocked { background-position: -208px -96px; }
+.player-ui .ui-icon-bookmark { background-position: -224px -96px; }
+.player-ui .ui-icon-tag { background-position: -240px -96px; }
+.player-ui .ui-icon-home { background-position: 0 -112px; }
+.player-ui .ui-icon-flag { background-position: -16px -112px; }
+.player-ui .ui-icon-calendar { background-position: -32px -112px; }
+.player-ui .ui-icon-cart { background-position: -48px -112px; }
+.player-ui .ui-icon-pencil { background-position: -64px -112px; }
+.player-ui .ui-icon-clock { background-position: -80px -112px; }
+.player-ui .ui-icon-disk { background-position: -96px -112px; }
+.player-ui .ui-icon-calculator { background-position: -112px -112px; }
+.player-ui .ui-icon-zoomin { background-position: -128px -112px; }
+.player-ui .ui-icon-zoomout { background-position: -144px -112px; }
+.player-ui .ui-icon-search { background-position: -160px -112px; }
+.player-ui .ui-icon-wrench { background-position: -176px -112px; }
+.player-ui .ui-icon-gear { background-position: -192px -112px; }
+.player-ui .ui-icon-heart { background-position: -208px -112px; }
+.player-ui .ui-icon-star { background-position: -224px -112px; }
+.player-ui .ui-icon-link { background-position: -240px -112px; }
+.player-ui .ui-icon-cancel { background-position: 0 -128px; }
+.player-ui .ui-icon-plus { background-position: -16px -128px; }
+.player-ui .ui-icon-plusthick { background-position: -32px -128px; }
+.player-ui .ui-icon-minus { background-position: -48px -128px; }
+.player-ui .ui-icon-minusthick { background-position: -64px -128px; }
+.player-ui .ui-icon-close { background-position: -80px -128px; }
+.player-ui .ui-icon-closethick { background-position: -96px -128px; }
+.player-ui .ui-icon-key { background-position: -112px -128px; }
+.player-ui .ui-icon-lightbulb { background-position: -128px -128px; }
+.player-ui .ui-icon-scissors { background-position: -144px -128px; }
+.player-ui .ui-icon-clipboard { background-position: -160px -128px; }
+.player-ui .ui-icon-copy { background-position: -176px -128px; }
+.player-ui .ui-icon-contact { background-position: -192px -128px; }
+.player-ui .ui-icon-image { background-position: -208px -128px; }
+.player-ui .ui-icon-video { background-position: -224px -128px; }
+.player-ui .ui-icon-script { background-position: -240px -128px; }
+.player-ui .ui-icon-alert { background-position: 0 -144px; }
+.player-ui .ui-icon-info { background-position: -16px -144px; }
+.player-ui .ui-icon-notice { background-position: -32px -144px; }
+.player-ui .ui-icon-help { background-position: -48px -144px; }
+.player-ui .ui-icon-check { background-position: -64px -144px; }
+.player-ui .ui-icon-bullet { background-position: -80px -144px; }
+.player-ui .ui-icon-radio-off { background-position: -96px -144px; }
+.player-ui .ui-icon-radio-on { background-position: -112px -144px; }
+.player-ui .ui-icon-pin-w { background-position: -128px -144px; }
+.player-ui .ui-icon-pin-s { background-position: -144px -144px; }
+.player-ui .ui-icon-play { background-position: 0 -160px; }
+.player-ui .ui-icon-pause { background-position: -16px -160px; }
+.player-ui .ui-icon-seek-next { background-position: -32px -160px; }
+.player-ui .ui-icon-seek-prev { background-position: -48px -160px; }
+.player-ui .ui-icon-seek-end { background-position: -64px -160px; }
+.player-ui .ui-icon-seek-start { background-position: -80px -160px; }
+/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
+.player-ui .ui-icon-seek-first { background-position: -80px -160px; }
+.player-ui .ui-icon-stop { background-position: -96px -160px; }
+.player-ui .ui-icon-eject { background-position: -112px -160px; }
+.player-ui .ui-icon-volume-off { background-position: -128px -160px; }
+.player-ui .ui-icon-volume-on { background-position: -144px -160px; }
+.player-ui .ui-icon-power { background-position: 0 -176px; }
+.player-ui .ui-icon-signal-diag { background-position: -16px -176px; }
+.player-ui .ui-icon-signal { background-position: -32px -176px; }
+.player-ui .ui-icon-battery-0 { background-position: -48px -176px; }
+.player-ui .ui-icon-battery-1 { background-position: -64px -176px; }
+.player-ui .ui-icon-battery-2 { background-position: -80px -176px; }
+.player-ui .ui-icon-battery-3 { background-position: -96px -176px; }
+.player-ui .ui-icon-circle-plus { background-position: 0 -192px; }
+.player-ui .ui-icon-circle-minus { background-position: -16px -192px; }
+.player-ui .ui-icon-circle-close { background-position: -32px -192px; }
+.player-ui .ui-icon-circle-triangle-e { background-position: -48px -192px; }
+.player-ui .ui-icon-circle-triangle-s { background-position: -64px -192px; }
+.player-ui .ui-icon-circle-triangle-w { background-position: -80px -192px; }
+.player-ui .ui-icon-circle-triangle-n { background-position: -96px -192px; }
+.player-ui .ui-icon-circle-arrow-e { background-position: -112px -192px; }
+.player-ui .ui-icon-circle-arrow-s { background-position: -128px -192px; }
+.player-ui .ui-icon-circle-arrow-w { background-position: -144px -192px; }
+.player-ui .ui-icon-circle-arrow-n { background-position: -160px -192px; }
+.player-ui .ui-icon-circle-zoomin { background-position: -176px -192px; }
+.player-ui .ui-icon-circle-zoomout { background-position: -192px -192px; }
+.player-ui .ui-icon-circle-check { background-position: -208px -192px; }
+.player-ui .ui-icon-circlesmall-plus { background-position: 0 -208px; }
+.player-ui .ui-icon-circlesmall-minus { background-position: -16px -208px; }
+.player-ui .ui-icon-circlesmall-close { background-position: -32px -208px; }
+.player-ui .ui-icon-squaresmall-plus { background-position: -48px -208px; }
+.player-ui .ui-icon-squaresmall-minus { background-position: -64px -208px; }
+.player-ui .ui-icon-squaresmall-close { background-position: -80px -208px; }
+.player-ui .ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
+.player-ui .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
+.player-ui .ui-icon-grip-solid-vertical { background-position: -32px -224px; }
+.player-ui .ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
+.player-ui .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
+.player-ui .ui-icon-grip-diagonal-se { background-position: -80px -224px; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Corner radius */
+.player-ui .ui-corner-all, .player-ui .ui-corner-top, .player-ui .ui-corner-left, .player-ui .ui-corner-tl { -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; -khtml-border-top-left-radius: 6px; border-top-left-radius: 6px; }
+.player-ui .ui-corner-all, .player-ui .ui-corner-top, .player-ui .ui-corner-right, .player-ui .ui-corner-tr { -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; -khtml-border-top-right-radius: 6px; border-top-right-radius: 6px; }
+.player-ui .ui-corner-all, .player-ui .ui-corner-bottom, .player-ui .ui-corner-left, .player-ui .ui-corner-bl { -moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; -khtml-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px; }
+.player-ui .ui-corner-all, .player-ui .ui-corner-bottom, .player-ui .ui-corner-right, .player-ui .ui-corner-br { -moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; -khtml-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px; }
+
+/* Overlays */
+.player-ui .ui-widget-overlay { background: #5c5c5c url(images/ui-bg_flat_50_5c5c5c_40x100.png) 50% 50% repeat-x; opacity: .80;filter:Alpha(Opacity=80); }
+.player-ui .ui-widget-shadow { margin: -7px 0 0 -7px; padding: 7px; background: #cccccc url(images/ui-bg_flat_30_cccccc_40x100.png) 50% 50% repeat-x; opacity: .60;filter:Alpha(Opacity=60); -moz-border-radius: 8px; -khtml-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/*
+ * jQuery UI Resizable 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Resizable#theming
+ */
+.player-ui .ui-resizable { position: relative;}
+.player-ui .ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block; }
+.player-ui .ui-resizable-disabled .ui-resizable-handle, .player-ui .ui-resizable-autohide .ui-resizable-handle { display: none; }
+.player-ui .ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
+.player-ui .ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
+.player-ui .ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
+.player-ui .ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
+.player-ui .ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
+.player-ui .ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
+.player-ui .ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
+.player-ui .ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/*
+ * jQuery UI Selectable 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Selectable#theming
+ */
+.player-ui .ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }
+/*
+ * jQuery UI Accordion 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Accordion#theming
+ */
+/* IE/Win - Fix animation bug - #4615 */
+.player-ui .ui-accordion { width: 100%; }
+.player-ui .ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
+.player-ui .ui-accordion .ui-accordion-li-fix { display: inline; }
+.player-ui .ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
+.player-ui .ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; }
+.player-ui .ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; }
+.player-ui .ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
+.player-ui .ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; }
+.player-ui .ui-accordion .ui-accordion-content-active { display: block; }
+/*
+ * jQuery UI Autocomplete 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Autocomplete#theming
+ */
+.player-ui .ui-autocomplete { position: absolute; cursor: default; }	
+
+/* workarounds */
+* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
+
+/*
+ * jQuery UI Menu 1.8.18
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Menu#theming
+ */
+.player-ui .ui-menu {
+	list-style:none;
+	padding: 2px;
+	margin: 0;
+	display:block;
+	float: left;
+}
+.player-ui .ui-menu .ui-menu {
+	margin-top: -3px;
+}
+.player-ui .ui-menu .ui-menu-item {
+	margin:0;
+	padding: 0;
+	zoom: 1;
+	float: left;
+	clear: left;
+	width: 100%;
+}
+.player-ui .ui-menu .ui-menu-item a {
+	text-decoration:none;
+	display:block;
+	padding:.2em .4em;
+	line-height:1.5;
+	zoom:1;
+}
+.player-ui .ui-menu .ui-menu-item a.ui-state-hover,
+.player-ui .ui-menu .ui-menu-item a.ui-state-active {
+	font-weight: normal;
+	margin: -1px;
+}
+/*
+ * jQuery UI Button 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Button#theming
+ */
+.player-ui .ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: hidden; *overflow: visible; } /* the overflow property removes extra width in IE */
+.player-ui .ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
+button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
+.player-ui .ui-button-icons-only { width: 3.4em; } 
+button.ui-button-icons-only { width: 3.7em; } 
+
+/*button text element */
+.player-ui .ui-button .ui-button-text { display: block; line-height: 1.4;  }
+.player-ui .ui-button-text-only .ui-button-text { padding: .4em 1em; }
+.player-ui .ui-button-icon-only .ui-button-text, .player-ui .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
+.player-ui .ui-button-text-icon-primary .ui-button-text, .player-ui .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
+.player-ui .ui-button-text-icon-secondary .ui-button-text, .player-ui .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }
+.player-ui .ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }
+/* no icon support for input elements, provide padding by default */
+input.ui-button { padding: .4em 1em; }
+
+/*button icon element(s) */
+.player-ui .ui-button-icon-only .ui-icon, .player-ui .ui-button-text-icon-primary .ui-icon, .player-ui .ui-button-text-icon-secondary .ui-icon, .player-ui .ui-button-text-icons .ui-icon, .player-ui .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
+.player-ui .ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
+.player-ui .ui-button-text-icon-primary .ui-button-icon-primary, .player-ui .ui-button-text-icons .ui-button-icon-primary, .player-ui .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
+.player-ui .ui-button-text-icon-secondary .ui-button-icon-secondary, .player-ui .ui-button-text-icons .ui-button-icon-secondary, .player-ui .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
+.player-ui .ui-button-text-icons .ui-button-icon-secondary, .player-ui .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
+
+/*button sets*/
+.player-ui .ui-buttonset { margin-right: 7px; }
+.player-ui .ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }
+
+/* workarounds */
+button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
+/*
+ * jQuery UI Dialog 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Dialog#theming
+ */
+.player-ui .ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; }
+.player-ui .ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative;  }
+.player-ui .ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; } 
+.player-ui .ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
+.player-ui .ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
+.player-ui .ui-dialog .ui-dialog-titlebar-close:hover, .player-ui .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
+.player-ui .ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
+.player-ui .ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
+.player-ui .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
+.player-ui .ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
+.player-ui .ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
+.player-ui .ui-draggable .ui-dialog-titlebar { cursor: move; }
+/*
+ * jQuery UI Slider 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Slider#theming
+ */
+.player-ui .ui-slider { position: relative; text-align: left; }
+.player-ui .ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
+.player-ui .ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
+
+.player-ui .ui-slider-horizontal { height: .8em; }
+.player-ui .ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
+.player-ui .ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
+.player-ui .ui-slider-horizontal .ui-slider-range-min { left: 0; }
+.player-ui .ui-slider-horizontal .ui-slider-range-max { right: 0; }
+
+.player-ui .ui-slider-vertical { width: .8em; height: 100px; }
+.player-ui .ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
+.player-ui .ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
+.player-ui .ui-slider-vertical .ui-slider-range-min { bottom: 0; }
+.player-ui .ui-slider-vertical .ui-slider-range-max { top: 0; }/*
+ * jQuery UI Tabs 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Tabs#theming
+ */
+.player-ui .ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
+.player-ui .ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
+.player-ui .ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
+.player-ui .ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }
+.player-ui .ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; }
+.player-ui .ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .player-ui .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .player-ui .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
+.player-ui .ui-tabs .ui-tabs-nav li a, .player-ui .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
+.player-ui .ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }
+.player-ui .ui-tabs .ui-tabs-hide { display: none !important; }
+/*
+ * jQuery UI Datepicker 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Datepicker#theming
+ */
+.player-ui .ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }
+.player-ui .ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
+.player-ui .ui-datepicker .ui-datepicker-prev, .player-ui .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
+.player-ui .ui-datepicker .ui-datepicker-prev-hover, .player-ui .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
+.player-ui .ui-datepicker .ui-datepicker-prev { left:2px; }
+.player-ui .ui-datepicker .ui-datepicker-next { right:2px; }
+.player-ui .ui-datepicker .ui-datepicker-prev-hover { left:1px; }
+.player-ui .ui-datepicker .ui-datepicker-next-hover { right:1px; }
+.player-ui .ui-datepicker .ui-datepicker-prev span, .player-ui .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px;  }
+.player-ui .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
+.player-ui .ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
+.player-ui .ui-datepicker select.ui-datepicker-month-year {width: 100%;}
+.player-ui .ui-datepicker select.ui-datepicker-month, 
+.player-ui .ui-datepicker select.ui-datepicker-year { width: 49%;}
+.player-ui .ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
+.player-ui .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0;  }
+.player-ui .ui-datepicker td { border: 0; padding: 1px; }
+.player-ui .ui-datepicker td span, .player-ui .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
+.player-ui .ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
+.player-ui .ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
+.player-ui .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
+
+/* with multiple calendars */
+.player-ui .ui-datepicker.ui-datepicker-multi { width:auto; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group { float:left; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
+.player-ui .ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
+.player-ui .ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
+.player-ui .ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
+.player-ui .ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
+.player-ui .ui-datepicker-row-break { clear:both; width:100%; font-size:0em; }
+
+/* RTL support */
+.player-ui .ui-datepicker-rtl { direction: rtl; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-group { float:right; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+
+/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
+.player-ui .ui-datepicker-cover {
+    display: none; /*sorry for IE5*/
+    display/**/: block; /*sorry for IE5*/
+    position: absolute; /*must have*/
+    z-index: -1; /*must have*/
+    filter: mask(); /*must have*/
+    top: -4px; /*must have*/
+    left: -4px; /*must have*/
+    width: 200px; /*must have*/
+    height: 200px; /*must have*/
+}/*
+ * jQuery UI Progressbar 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Progressbar#theming
+ */
+.player-ui .ui-progressbar { height:2em; text-align: left; overflow: hidden; }
+.player-ui .ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/jquery-ui/dot-luv/images/ui-bg_diagonals-thick_15_0b3e6f_40x40.png b/public/admin/js/osmplayer/jquery-ui/dot-luv/images/ui-bg_diagonals-thick_15_0b3e6f_40x40.png
new file mode 100644
index 0000000000000000000000000000000000000000..792c59b6f304ee1bc59a0c1aeffdd979b3fd0dcf
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/dot-luv/images/ui-bg_diagonals-thick_15_0b3e6f_40x40.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/dot-luv/images/ui-bg_dots-medium_30_0b58a2_4x4.png b/public/admin/js/osmplayer/jquery-ui/dot-luv/images/ui-bg_dots-medium_30_0b58a2_4x4.png
new file mode 100644
index 0000000000000000000000000000000000000000..fa6c9cb810781fcc1575630fa8d8663ccff71e23
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/dot-luv/images/ui-bg_dots-medium_30_0b58a2_4x4.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/dot-luv/images/ui-bg_dots-small_20_333333_2x2.png b/public/admin/js/osmplayer/jquery-ui/dot-luv/images/ui-bg_dots-small_20_333333_2x2.png
new file mode 100644
index 0000000000000000000000000000000000000000..b90acb9e2fd681f24c1073efb17ff4bbebe35fa8
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/dot-luv/images/ui-bg_dots-small_20_333333_2x2.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/dot-luv/images/ui-bg_dots-small_30_a32d00_2x2.png b/public/admin/js/osmplayer/jquery-ui/dot-luv/images/ui-bg_dots-small_30_a32d00_2x2.png
new file mode 100644
index 0000000000000000000000000000000000000000..88fa7f0b0085437bf060a61e2bdf0b3c95ceb56e
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/dot-luv/images/ui-bg_dots-small_30_a32d00_2x2.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/dot-luv/images/ui-bg_dots-small_40_00498f_2x2.png b/public/admin/js/osmplayer/jquery-ui/dot-luv/images/ui-bg_dots-small_40_00498f_2x2.png
new file mode 100644
index 0000000000000000000000000000000000000000..fa3531359377d9a0ecb22022123cc6f40c352b13
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/dot-luv/images/ui-bg_dots-small_40_00498f_2x2.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/dot-luv/images/ui-bg_flat_0_aaaaaa_40x100.png b/public/admin/js/osmplayer/jquery-ui/dot-luv/images/ui-bg_flat_0_aaaaaa_40x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..5b5dab2ab7b1c50dea9cfe73dc5a269a92d2d4b4
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/dot-luv/images/ui-bg_flat_0_aaaaaa_40x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/dot-luv/images/ui-bg_flat_40_292929_40x100.png b/public/admin/js/osmplayer/jquery-ui/dot-luv/images/ui-bg_flat_40_292929_40x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..acaf6999fd579a3b566b880e465c2ded564ce6f6
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/dot-luv/images/ui-bg_flat_40_292929_40x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/dot-luv/images/ui-bg_gloss-wave_20_111111_500x100.png b/public/admin/js/osmplayer/jquery-ui/dot-luv/images/ui-bg_gloss-wave_20_111111_500x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..60fcd810496ba56122d46d5b2237ae7d47f6fa17
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/dot-luv/images/ui-bg_gloss-wave_20_111111_500x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/dot-luv/images/ui-icons_00498f_256x240.png b/public/admin/js/osmplayer/jquery-ui/dot-luv/images/ui-icons_00498f_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..cc4834e01815725c98ba35fdfcb1d30d0716be42
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/dot-luv/images/ui-icons_00498f_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/dot-luv/images/ui-icons_98d2fb_256x240.png b/public/admin/js/osmplayer/jquery-ui/dot-luv/images/ui-icons_98d2fb_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..81c5eb0bc51430515660cba7aa18f440ed3a478c
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/dot-luv/images/ui-icons_98d2fb_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/dot-luv/images/ui-icons_9ccdfc_256x240.png b/public/admin/js/osmplayer/jquery-ui/dot-luv/images/ui-icons_9ccdfc_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..2022d21052809832e0367d77849ecc479d756cd0
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/dot-luv/images/ui-icons_9ccdfc_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/dot-luv/images/ui-icons_ffffff_256x240.png b/public/admin/js/osmplayer/jquery-ui/dot-luv/images/ui-icons_ffffff_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..42f8f992c727ddaa617da224a522e463df690387
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/dot-luv/images/ui-icons_ffffff_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/dot-luv/jquery-ui-1.8.18.custom.css b/public/admin/js/osmplayer/jquery-ui/dot-luv/jquery-ui-1.8.18.custom.css
new file mode 100644
index 0000000000000000000000000000000000000000..13c5d065e2ecbd08631276110889a5c9ae5687ad
--- /dev/null
+++ b/public/admin/js/osmplayer/jquery-ui/dot-luv/jquery-ui-1.8.18.custom.css
@@ -0,0 +1,565 @@
+/*
+ * jQuery UI CSS Framework 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ */
+
+/* Layout helpers
+----------------------------------*/
+.player-ui .ui-helper-hidden { display: none; }
+.player-ui .ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
+.player-ui .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
+.player-ui .ui-helper-clearfix:before, .player-ui .ui-helper-clearfix:after { content: ""; display: table; }
+.player-ui .ui-helper-clearfix:after { clear: both; }
+.player-ui .ui-helper-clearfix { zoom: 1; }
+.player-ui .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
+
+
+/* Interaction Cues
+----------------------------------*/
+.player-ui .ui-state-disabled { cursor: default !important; }
+
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.player-ui .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+.player-ui .ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
+
+
+/*
+ * jQuery UI CSS Framework 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ *
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Arial,%20sans-serif&fwDefault=bold&fsDefault=1.3em&cornerRadius=4px&bgColorHeader=0b3e6f&bgTextureHeader=08_diagonals_thick.png&bgImgOpacityHeader=15&borderColorHeader=0b3e6f&fcHeader=f6f6f6&iconColorHeader=98d2fb&bgColorContent=111111&bgTextureContent=12_gloss_wave.png&bgImgOpacityContent=20&borderColorContent=000000&fcContent=d9d9d9&iconColorContent=9ccdfc&bgColorDefault=333333&bgTextureDefault=09_dots_small.png&bgImgOpacityDefault=20&borderColorDefault=333333&fcDefault=ffffff&iconColorDefault=9ccdfc&bgColorHover=00498f&bgTextureHover=09_dots_small.png&bgImgOpacityHover=40&borderColorHover=222222&fcHover=ffffff&iconColorHover=ffffff&bgColorActive=292929&bgTextureActive=01_flat.png&bgImgOpacityActive=40&borderColorActive=096ac8&fcActive=75abff&iconColorActive=00498f&bgColorHighlight=0b58a2&bgTextureHighlight=10_dots_medium.png&bgImgOpacityHighlight=30&borderColorHighlight=052f57&fcHighlight=ffffff&iconColorHighlight=ffffff&bgColorError=a32d00&bgTextureError=09_dots_small.png&bgImgOpacityError=30&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffffff&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
+ */
+
+
+/* Component containers
+----------------------------------*/
+.player-ui .ui-widget { font-family: Arial, sans-serif; font-size: 1.3em; }
+.player-ui .ui-widget .ui-widget { font-size: 1em; }
+.player-ui .ui-widget input, .player-ui .ui-widget select, .player-ui .ui-widget textarea, .player-ui .ui-widget button { font-family: Arial, sans-serif; font-size: 1em; }
+.player-ui .ui-widget-content { border: 1px solid #000000; background: #111111 url(images/ui-bg_gloss-wave_20_111111_500x100.png) 50% top repeat-x; color: #d9d9d9; }
+.player-ui .ui-widget-content a { color: #d9d9d9; }
+.player-ui .ui-widget-header { border: 1px solid #0b3e6f; background: #0b3e6f url(images/ui-bg_diagonals-thick_15_0b3e6f_40x40.png) 50% 50% repeat; color: #f6f6f6; font-weight: bold; }
+.player-ui .ui-widget-header a { color: #f6f6f6; }
+
+/* Interaction states
+----------------------------------*/
+.player-ui .ui-state-default, .player-ui .ui-widget-content .ui-state-default, .player-ui .ui-widget-header .ui-state-default { border: 1px solid #333333; background: #333333 url(images/ui-bg_dots-small_20_333333_2x2.png) 50% 50% repeat; font-weight: bold; color: #ffffff; }
+.player-ui .ui-state-default a, .player-ui .ui-state-default a:link, .player-ui .ui-state-default a:visited { color: #ffffff; text-decoration: none; }
+.player-ui .ui-state-hover, .player-ui .ui-widget-content .ui-state-hover, .player-ui .ui-widget-header .ui-state-hover, .player-ui .ui-state-focus, .player-ui .ui-widget-content .ui-state-focus, .player-ui .ui-widget-header .ui-state-focus { border: 1px solid #222222; background: #00498f url(images/ui-bg_dots-small_40_00498f_2x2.png) 50% 50% repeat; font-weight: bold; color: #ffffff; }
+.player-ui .ui-state-hover a, .player-ui .ui-state-hover a:hover { color: #ffffff; text-decoration: none; }
+.player-ui .ui-state-active, .player-ui .ui-widget-content .ui-state-active, .player-ui .ui-widget-header .ui-state-active { border: 1px solid #096ac8; background: #292929 url(images/ui-bg_flat_40_292929_40x100.png) 50% 50% repeat-x; font-weight: bold; color: #75abff; }
+.player-ui .ui-state-active a, .player-ui .ui-state-active a:link, .player-ui .ui-state-active a:visited { color: #75abff; text-decoration: none; }
+.player-ui .ui-widget :active { outline: none; }
+
+/* Interaction Cues
+----------------------------------*/
+.player-ui .ui-state-highlight, .player-ui .ui-widget-content .ui-state-highlight, .player-ui .ui-widget-header .ui-state-highlight  {border: 1px solid #052f57; background: #0b58a2 url(images/ui-bg_dots-medium_30_0b58a2_4x4.png) 50% 50% repeat; color: #ffffff; }
+.player-ui .ui-state-highlight a, .player-ui .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #ffffff; }
+.player-ui .ui-state-error, .player-ui .ui-widget-content .ui-state-error, .player-ui .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #a32d00 url(images/ui-bg_dots-small_30_a32d00_2x2.png) 50% 50% repeat; color: #ffffff; }
+.player-ui .ui-state-error a, .player-ui .ui-widget-content .ui-state-error a, .player-ui .ui-widget-header .ui-state-error a { color: #ffffff; }
+.player-ui .ui-state-error-text, .player-ui .ui-widget-content .ui-state-error-text, .player-ui .ui-widget-header .ui-state-error-text { color: #ffffff; }
+.player-ui .ui-priority-primary, .player-ui .ui-widget-content .ui-priority-primary, .player-ui .ui-widget-header .ui-priority-primary { font-weight: bold; }
+.player-ui .ui-priority-secondary, .player-ui .ui-widget-content .ui-priority-secondary,  .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
+.player-ui .ui-state-disabled, .player-ui .ui-widget-content .ui-state-disabled, .player-ui .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.player-ui .ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_9ccdfc_256x240.png); }
+.player-ui .ui-widget-content .ui-icon {background-image: url(images/ui-icons_9ccdfc_256x240.png); }
+.player-ui .ui-widget-header .ui-icon {background-image: url(images/ui-icons_98d2fb_256x240.png); }
+.player-ui .ui-state-default .ui-icon { background-image: url(images/ui-icons_9ccdfc_256x240.png); }
+.player-ui .ui-state-hover .ui-icon, .player-ui .ui-state-focus .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); }
+.player-ui .ui-state-active .ui-icon {background-image: url(images/ui-icons_00498f_256x240.png); }
+.player-ui .ui-state-highlight .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); }
+.player-ui .ui-state-error .ui-icon, .player-ui .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); }
+
+/* positioning */
+.player-ui .ui-icon-carat-1-n { background-position: 0 0; }
+.player-ui .ui-icon-carat-1-ne { background-position: -16px 0; }
+.player-ui .ui-icon-carat-1-e { background-position: -32px 0; }
+.player-ui .ui-icon-carat-1-se { background-position: -48px 0; }
+.player-ui .ui-icon-carat-1-s { background-position: -64px 0; }
+.player-ui .ui-icon-carat-1-sw { background-position: -80px 0; }
+.player-ui .ui-icon-carat-1-w { background-position: -96px 0; }
+.player-ui .ui-icon-carat-1-nw { background-position: -112px 0; }
+.player-ui .ui-icon-carat-2-n-s { background-position: -128px 0; }
+.player-ui .ui-icon-carat-2-e-w { background-position: -144px 0; }
+.player-ui .ui-icon-triangle-1-n { background-position: 0 -16px; }
+.player-ui .ui-icon-triangle-1-ne { background-position: -16px -16px; }
+.player-ui .ui-icon-triangle-1-e { background-position: -32px -16px; }
+.player-ui .ui-icon-triangle-1-se { background-position: -48px -16px; }
+.player-ui .ui-icon-triangle-1-s { background-position: -64px -16px; }
+.player-ui .ui-icon-triangle-1-sw { background-position: -80px -16px; }
+.player-ui .ui-icon-triangle-1-w { background-position: -96px -16px; }
+.player-ui .ui-icon-triangle-1-nw { background-position: -112px -16px; }
+.player-ui .ui-icon-triangle-2-n-s { background-position: -128px -16px; }
+.player-ui .ui-icon-triangle-2-e-w { background-position: -144px -16px; }
+.player-ui .ui-icon-arrow-1-n { background-position: 0 -32px; }
+.player-ui .ui-icon-arrow-1-ne { background-position: -16px -32px; }
+.player-ui .ui-icon-arrow-1-e { background-position: -32px -32px; }
+.player-ui .ui-icon-arrow-1-se { background-position: -48px -32px; }
+.player-ui .ui-icon-arrow-1-s { background-position: -64px -32px; }
+.player-ui .ui-icon-arrow-1-sw { background-position: -80px -32px; }
+.player-ui .ui-icon-arrow-1-w { background-position: -96px -32px; }
+.player-ui .ui-icon-arrow-1-nw { background-position: -112px -32px; }
+.player-ui .ui-icon-arrow-2-n-s { background-position: -128px -32px; }
+.player-ui .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
+.player-ui .ui-icon-arrow-2-e-w { background-position: -160px -32px; }
+.player-ui .ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
+.player-ui .ui-icon-arrowstop-1-n { background-position: -192px -32px; }
+.player-ui .ui-icon-arrowstop-1-e { background-position: -208px -32px; }
+.player-ui .ui-icon-arrowstop-1-s { background-position: -224px -32px; }
+.player-ui .ui-icon-arrowstop-1-w { background-position: -240px -32px; }
+.player-ui .ui-icon-arrowthick-1-n { background-position: 0 -48px; }
+.player-ui .ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
+.player-ui .ui-icon-arrowthick-1-e { background-position: -32px -48px; }
+.player-ui .ui-icon-arrowthick-1-se { background-position: -48px -48px; }
+.player-ui .ui-icon-arrowthick-1-s { background-position: -64px -48px; }
+.player-ui .ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
+.player-ui .ui-icon-arrowthick-1-w { background-position: -96px -48px; }
+.player-ui .ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
+.player-ui .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
+.player-ui .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
+.player-ui .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
+.player-ui .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
+.player-ui .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
+.player-ui .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
+.player-ui .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
+.player-ui .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
+.player-ui .ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
+.player-ui .ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
+.player-ui .ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
+.player-ui .ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
+.player-ui .ui-icon-arrow-4 { background-position: 0 -80px; }
+.player-ui .ui-icon-arrow-4-diag { background-position: -16px -80px; }
+.player-ui .ui-icon-extlink { background-position: -32px -80px; }
+.player-ui .ui-icon-newwin { background-position: -48px -80px; }
+.player-ui .ui-icon-refresh { background-position: -64px -80px; }
+.player-ui .ui-icon-shuffle { background-position: -80px -80px; }
+.player-ui .ui-icon-transfer-e-w { background-position: -96px -80px; }
+.player-ui .ui-icon-transferthick-e-w { background-position: -112px -80px; }
+.player-ui .ui-icon-folder-collapsed { background-position: 0 -96px; }
+.player-ui .ui-icon-folder-open { background-position: -16px -96px; }
+.player-ui .ui-icon-document { background-position: -32px -96px; }
+.player-ui .ui-icon-document-b { background-position: -48px -96px; }
+.player-ui .ui-icon-note { background-position: -64px -96px; }
+.player-ui .ui-icon-mail-closed { background-position: -80px -96px; }
+.player-ui .ui-icon-mail-open { background-position: -96px -96px; }
+.player-ui .ui-icon-suitcase { background-position: -112px -96px; }
+.player-ui .ui-icon-comment { background-position: -128px -96px; }
+.player-ui .ui-icon-person { background-position: -144px -96px; }
+.player-ui .ui-icon-print { background-position: -160px -96px; }
+.player-ui .ui-icon-trash { background-position: -176px -96px; }
+.player-ui .ui-icon-locked { background-position: -192px -96px; }
+.player-ui .ui-icon-unlocked { background-position: -208px -96px; }
+.player-ui .ui-icon-bookmark { background-position: -224px -96px; }
+.player-ui .ui-icon-tag { background-position: -240px -96px; }
+.player-ui .ui-icon-home { background-position: 0 -112px; }
+.player-ui .ui-icon-flag { background-position: -16px -112px; }
+.player-ui .ui-icon-calendar { background-position: -32px -112px; }
+.player-ui .ui-icon-cart { background-position: -48px -112px; }
+.player-ui .ui-icon-pencil { background-position: -64px -112px; }
+.player-ui .ui-icon-clock { background-position: -80px -112px; }
+.player-ui .ui-icon-disk { background-position: -96px -112px; }
+.player-ui .ui-icon-calculator { background-position: -112px -112px; }
+.player-ui .ui-icon-zoomin { background-position: -128px -112px; }
+.player-ui .ui-icon-zoomout { background-position: -144px -112px; }
+.player-ui .ui-icon-search { background-position: -160px -112px; }
+.player-ui .ui-icon-wrench { background-position: -176px -112px; }
+.player-ui .ui-icon-gear { background-position: -192px -112px; }
+.player-ui .ui-icon-heart { background-position: -208px -112px; }
+.player-ui .ui-icon-star { background-position: -224px -112px; }
+.player-ui .ui-icon-link { background-position: -240px -112px; }
+.player-ui .ui-icon-cancel { background-position: 0 -128px; }
+.player-ui .ui-icon-plus { background-position: -16px -128px; }
+.player-ui .ui-icon-plusthick { background-position: -32px -128px; }
+.player-ui .ui-icon-minus { background-position: -48px -128px; }
+.player-ui .ui-icon-minusthick { background-position: -64px -128px; }
+.player-ui .ui-icon-close { background-position: -80px -128px; }
+.player-ui .ui-icon-closethick { background-position: -96px -128px; }
+.player-ui .ui-icon-key { background-position: -112px -128px; }
+.player-ui .ui-icon-lightbulb { background-position: -128px -128px; }
+.player-ui .ui-icon-scissors { background-position: -144px -128px; }
+.player-ui .ui-icon-clipboard { background-position: -160px -128px; }
+.player-ui .ui-icon-copy { background-position: -176px -128px; }
+.player-ui .ui-icon-contact { background-position: -192px -128px; }
+.player-ui .ui-icon-image { background-position: -208px -128px; }
+.player-ui .ui-icon-video { background-position: -224px -128px; }
+.player-ui .ui-icon-script { background-position: -240px -128px; }
+.player-ui .ui-icon-alert { background-position: 0 -144px; }
+.player-ui .ui-icon-info { background-position: -16px -144px; }
+.player-ui .ui-icon-notice { background-position: -32px -144px; }
+.player-ui .ui-icon-help { background-position: -48px -144px; }
+.player-ui .ui-icon-check { background-position: -64px -144px; }
+.player-ui .ui-icon-bullet { background-position: -80px -144px; }
+.player-ui .ui-icon-radio-off { background-position: -96px -144px; }
+.player-ui .ui-icon-radio-on { background-position: -112px -144px; }
+.player-ui .ui-icon-pin-w { background-position: -128px -144px; }
+.player-ui .ui-icon-pin-s { background-position: -144px -144px; }
+.player-ui .ui-icon-play { background-position: 0 -160px; }
+.player-ui .ui-icon-pause { background-position: -16px -160px; }
+.player-ui .ui-icon-seek-next { background-position: -32px -160px; }
+.player-ui .ui-icon-seek-prev { background-position: -48px -160px; }
+.player-ui .ui-icon-seek-end { background-position: -64px -160px; }
+.player-ui .ui-icon-seek-start { background-position: -80px -160px; }
+/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
+.player-ui .ui-icon-seek-first { background-position: -80px -160px; }
+.player-ui .ui-icon-stop { background-position: -96px -160px; }
+.player-ui .ui-icon-eject { background-position: -112px -160px; }
+.player-ui .ui-icon-volume-off { background-position: -128px -160px; }
+.player-ui .ui-icon-volume-on { background-position: -144px -160px; }
+.player-ui .ui-icon-power { background-position: 0 -176px; }
+.player-ui .ui-icon-signal-diag { background-position: -16px -176px; }
+.player-ui .ui-icon-signal { background-position: -32px -176px; }
+.player-ui .ui-icon-battery-0 { background-position: -48px -176px; }
+.player-ui .ui-icon-battery-1 { background-position: -64px -176px; }
+.player-ui .ui-icon-battery-2 { background-position: -80px -176px; }
+.player-ui .ui-icon-battery-3 { background-position: -96px -176px; }
+.player-ui .ui-icon-circle-plus { background-position: 0 -192px; }
+.player-ui .ui-icon-circle-minus { background-position: -16px -192px; }
+.player-ui .ui-icon-circle-close { background-position: -32px -192px; }
+.player-ui .ui-icon-circle-triangle-e { background-position: -48px -192px; }
+.player-ui .ui-icon-circle-triangle-s { background-position: -64px -192px; }
+.player-ui .ui-icon-circle-triangle-w { background-position: -80px -192px; }
+.player-ui .ui-icon-circle-triangle-n { background-position: -96px -192px; }
+.player-ui .ui-icon-circle-arrow-e { background-position: -112px -192px; }
+.player-ui .ui-icon-circle-arrow-s { background-position: -128px -192px; }
+.player-ui .ui-icon-circle-arrow-w { background-position: -144px -192px; }
+.player-ui .ui-icon-circle-arrow-n { background-position: -160px -192px; }
+.player-ui .ui-icon-circle-zoomin { background-position: -176px -192px; }
+.player-ui .ui-icon-circle-zoomout { background-position: -192px -192px; }
+.player-ui .ui-icon-circle-check { background-position: -208px -192px; }
+.player-ui .ui-icon-circlesmall-plus { background-position: 0 -208px; }
+.player-ui .ui-icon-circlesmall-minus { background-position: -16px -208px; }
+.player-ui .ui-icon-circlesmall-close { background-position: -32px -208px; }
+.player-ui .ui-icon-squaresmall-plus { background-position: -48px -208px; }
+.player-ui .ui-icon-squaresmall-minus { background-position: -64px -208px; }
+.player-ui .ui-icon-squaresmall-close { background-position: -80px -208px; }
+.player-ui .ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
+.player-ui .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
+.player-ui .ui-icon-grip-solid-vertical { background-position: -32px -224px; }
+.player-ui .ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
+.player-ui .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
+.player-ui .ui-icon-grip-diagonal-se { background-position: -80px -224px; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Corner radius */
+.player-ui .ui-corner-all, .player-ui .ui-corner-top, .player-ui .ui-corner-left, .player-ui .ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -khtml-border-top-left-radius: 4px; border-top-left-radius: 4px; }
+.player-ui .ui-corner-all, .player-ui .ui-corner-top, .player-ui .ui-corner-right, .player-ui .ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; -khtml-border-top-right-radius: 4px; border-top-right-radius: 4px; }
+.player-ui .ui-corner-all, .player-ui .ui-corner-bottom, .player-ui .ui-corner-left, .player-ui .ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; -khtml-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }
+.player-ui .ui-corner-all, .player-ui .ui-corner-bottom, .player-ui .ui-corner-right, .player-ui .ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; -khtml-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
+
+/* Overlays */
+.player-ui .ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); }
+.player-ui .ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -khtml-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/*
+ * jQuery UI Resizable 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Resizable#theming
+ */
+.player-ui .ui-resizable { position: relative;}
+.player-ui .ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block; }
+.player-ui .ui-resizable-disabled .ui-resizable-handle, .player-ui .ui-resizable-autohide .ui-resizable-handle { display: none; }
+.player-ui .ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
+.player-ui .ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
+.player-ui .ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
+.player-ui .ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
+.player-ui .ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
+.player-ui .ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
+.player-ui .ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
+.player-ui .ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/*
+ * jQuery UI Selectable 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Selectable#theming
+ */
+.player-ui .ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }
+/*
+ * jQuery UI Accordion 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Accordion#theming
+ */
+/* IE/Win - Fix animation bug - #4615 */
+.player-ui .ui-accordion { width: 100%; }
+.player-ui .ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
+.player-ui .ui-accordion .ui-accordion-li-fix { display: inline; }
+.player-ui .ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
+.player-ui .ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; }
+.player-ui .ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; }
+.player-ui .ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
+.player-ui .ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; }
+.player-ui .ui-accordion .ui-accordion-content-active { display: block; }
+/*
+ * jQuery UI Autocomplete 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Autocomplete#theming
+ */
+.player-ui .ui-autocomplete { position: absolute; cursor: default; }	
+
+/* workarounds */
+* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
+
+/*
+ * jQuery UI Menu 1.8.18
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Menu#theming
+ */
+.player-ui .ui-menu {
+	list-style:none;
+	padding: 2px;
+	margin: 0;
+	display:block;
+	float: left;
+}
+.player-ui .ui-menu .ui-menu {
+	margin-top: -3px;
+}
+.player-ui .ui-menu .ui-menu-item {
+	margin:0;
+	padding: 0;
+	zoom: 1;
+	float: left;
+	clear: left;
+	width: 100%;
+}
+.player-ui .ui-menu .ui-menu-item a {
+	text-decoration:none;
+	display:block;
+	padding:.2em .4em;
+	line-height:1.5;
+	zoom:1;
+}
+.player-ui .ui-menu .ui-menu-item a.ui-state-hover,
+.player-ui .ui-menu .ui-menu-item a.ui-state-active {
+	font-weight: normal;
+	margin: -1px;
+}
+/*
+ * jQuery UI Button 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Button#theming
+ */
+.player-ui .ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: hidden; *overflow: visible; } /* the overflow property removes extra width in IE */
+.player-ui .ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
+button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
+.player-ui .ui-button-icons-only { width: 3.4em; } 
+button.ui-button-icons-only { width: 3.7em; } 
+
+/*button text element */
+.player-ui .ui-button .ui-button-text { display: block; line-height: 1.4;  }
+.player-ui .ui-button-text-only .ui-button-text { padding: .4em 1em; }
+.player-ui .ui-button-icon-only .ui-button-text, .player-ui .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
+.player-ui .ui-button-text-icon-primary .ui-button-text, .player-ui .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
+.player-ui .ui-button-text-icon-secondary .ui-button-text, .player-ui .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }
+.player-ui .ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }
+/* no icon support for input elements, provide padding by default */
+input.ui-button { padding: .4em 1em; }
+
+/*button icon element(s) */
+.player-ui .ui-button-icon-only .ui-icon, .player-ui .ui-button-text-icon-primary .ui-icon, .player-ui .ui-button-text-icon-secondary .ui-icon, .player-ui .ui-button-text-icons .ui-icon, .player-ui .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
+.player-ui .ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
+.player-ui .ui-button-text-icon-primary .ui-button-icon-primary, .player-ui .ui-button-text-icons .ui-button-icon-primary, .player-ui .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
+.player-ui .ui-button-text-icon-secondary .ui-button-icon-secondary, .player-ui .ui-button-text-icons .ui-button-icon-secondary, .player-ui .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
+.player-ui .ui-button-text-icons .ui-button-icon-secondary, .player-ui .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
+
+/*button sets*/
+.player-ui .ui-buttonset { margin-right: 7px; }
+.player-ui .ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }
+
+/* workarounds */
+button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
+/*
+ * jQuery UI Dialog 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Dialog#theming
+ */
+.player-ui .ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; }
+.player-ui .ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative;  }
+.player-ui .ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; } 
+.player-ui .ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
+.player-ui .ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
+.player-ui .ui-dialog .ui-dialog-titlebar-close:hover, .player-ui .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
+.player-ui .ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
+.player-ui .ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
+.player-ui .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
+.player-ui .ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
+.player-ui .ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
+.player-ui .ui-draggable .ui-dialog-titlebar { cursor: move; }
+/*
+ * jQuery UI Slider 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Slider#theming
+ */
+.player-ui .ui-slider { position: relative; text-align: left; }
+.player-ui .ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
+.player-ui .ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
+
+.player-ui .ui-slider-horizontal { height: .8em; }
+.player-ui .ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
+.player-ui .ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
+.player-ui .ui-slider-horizontal .ui-slider-range-min { left: 0; }
+.player-ui .ui-slider-horizontal .ui-slider-range-max { right: 0; }
+
+.player-ui .ui-slider-vertical { width: .8em; height: 100px; }
+.player-ui .ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
+.player-ui .ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
+.player-ui .ui-slider-vertical .ui-slider-range-min { bottom: 0; }
+.player-ui .ui-slider-vertical .ui-slider-range-max { top: 0; }/*
+ * jQuery UI Tabs 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Tabs#theming
+ */
+.player-ui .ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
+.player-ui .ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
+.player-ui .ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
+.player-ui .ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }
+.player-ui .ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; }
+.player-ui .ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .player-ui .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .player-ui .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
+.player-ui .ui-tabs .ui-tabs-nav li a, .player-ui .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
+.player-ui .ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }
+.player-ui .ui-tabs .ui-tabs-hide { display: none !important; }
+/*
+ * jQuery UI Datepicker 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Datepicker#theming
+ */
+.player-ui .ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }
+.player-ui .ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
+.player-ui .ui-datepicker .ui-datepicker-prev, .player-ui .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
+.player-ui .ui-datepicker .ui-datepicker-prev-hover, .player-ui .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
+.player-ui .ui-datepicker .ui-datepicker-prev { left:2px; }
+.player-ui .ui-datepicker .ui-datepicker-next { right:2px; }
+.player-ui .ui-datepicker .ui-datepicker-prev-hover { left:1px; }
+.player-ui .ui-datepicker .ui-datepicker-next-hover { right:1px; }
+.player-ui .ui-datepicker .ui-datepicker-prev span, .player-ui .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px;  }
+.player-ui .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
+.player-ui .ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
+.player-ui .ui-datepicker select.ui-datepicker-month-year {width: 100%;}
+.player-ui .ui-datepicker select.ui-datepicker-month, 
+.player-ui .ui-datepicker select.ui-datepicker-year { width: 49%;}
+.player-ui .ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
+.player-ui .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0;  }
+.player-ui .ui-datepicker td { border: 0; padding: 1px; }
+.player-ui .ui-datepicker td span, .player-ui .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
+.player-ui .ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
+.player-ui .ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
+.player-ui .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
+
+/* with multiple calendars */
+.player-ui .ui-datepicker.ui-datepicker-multi { width:auto; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group { float:left; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
+.player-ui .ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
+.player-ui .ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
+.player-ui .ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
+.player-ui .ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
+.player-ui .ui-datepicker-row-break { clear:both; width:100%; font-size:0em; }
+
+/* RTL support */
+.player-ui .ui-datepicker-rtl { direction: rtl; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-group { float:right; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+
+/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
+.player-ui .ui-datepicker-cover {
+    display: none; /*sorry for IE5*/
+    display/**/: block; /*sorry for IE5*/
+    position: absolute; /*must have*/
+    z-index: -1; /*must have*/
+    filter: mask(); /*must have*/
+    top: -4px; /*must have*/
+    left: -4px; /*must have*/
+    width: 200px; /*must have*/
+    height: 200px; /*must have*/
+}/*
+ * jQuery UI Progressbar 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Progressbar#theming
+ */
+.player-ui .ui-progressbar { height:2em; text-align: left; overflow: hidden; }
+.player-ui .ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/jquery-ui/eggplant/images/ui-bg_flat_0_aaaaaa_40x100.png b/public/admin/js/osmplayer/jquery-ui/eggplant/images/ui-bg_flat_0_aaaaaa_40x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..5b5dab2ab7b1c50dea9cfe73dc5a269a92d2d4b4
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/eggplant/images/ui-bg_flat_0_aaaaaa_40x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/eggplant/images/ui-bg_flat_0_eeeeee_40x100.png b/public/admin/js/osmplayer/jquery-ui/eggplant/images/ui-bg_flat_0_eeeeee_40x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..e44f861be1ccdfec4275eb20d9b056f14992f649
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/eggplant/images/ui-bg_flat_0_eeeeee_40x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/eggplant/images/ui-bg_flat_55_994d53_40x100.png b/public/admin/js/osmplayer/jquery-ui/eggplant/images/ui-bg_flat_55_994d53_40x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..822d52054437a6e488be3a4e8bb75f09106eeded
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/eggplant/images/ui-bg_flat_55_994d53_40x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/eggplant/images/ui-bg_flat_55_fafafa_40x100.png b/public/admin/js/osmplayer/jquery-ui/eggplant/images/ui-bg_flat_55_fafafa_40x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..17b75c54691b9bec723af30dd7acdc82ecc7b392
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/eggplant/images/ui-bg_flat_55_fafafa_40x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/eggplant/images/ui-bg_gloss-wave_30_3d3644_500x100.png b/public/admin/js/osmplayer/jquery-ui/eggplant/images/ui-bg_gloss-wave_30_3d3644_500x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..5a36f3184272db85e61f8a4a3f9fa4505f951765
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/eggplant/images/ui-bg_gloss-wave_30_3d3644_500x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/eggplant/images/ui-bg_highlight-soft_100_dcd9de_1x100.png b/public/admin/js/osmplayer/jquery-ui/eggplant/images/ui-bg_highlight-soft_100_dcd9de_1x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..1e7feae1474f62ef8502d6c532513a4a9d01b1a3
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/eggplant/images/ui-bg_highlight-soft_100_dcd9de_1x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/eggplant/images/ui-bg_highlight-soft_100_eae6ea_1x100.png b/public/admin/js/osmplayer/jquery-ui/eggplant/images/ui-bg_highlight-soft_100_eae6ea_1x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..1e2ae7c9ffc6116aba9b2cd57ee913eb2de7015b
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/eggplant/images/ui-bg_highlight-soft_100_eae6ea_1x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/eggplant/images/ui-bg_highlight-soft_25_30273a_1x100.png b/public/admin/js/osmplayer/jquery-ui/eggplant/images/ui-bg_highlight-soft_25_30273a_1x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..cf8ad4a9f31d8e2e77f7210e2f608d5f6778fe87
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/eggplant/images/ui-bg_highlight-soft_25_30273a_1x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/eggplant/images/ui-bg_highlight-soft_45_5f5964_1x100.png b/public/admin/js/osmplayer/jquery-ui/eggplant/images/ui-bg_highlight-soft_45_5f5964_1x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..4dec1d0bf96c038d99e19d6f7b5f6cf5c39b7f1d
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/eggplant/images/ui-bg_highlight-soft_45_5f5964_1x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/eggplant/images/ui-icons_454545_256x240.png b/public/admin/js/osmplayer/jquery-ui/eggplant/images/ui-icons_454545_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..59bd45b907c4fd965697774ce8c5fc6b2fd9c105
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/eggplant/images/ui-icons_454545_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/eggplant/images/ui-icons_734d99_256x240.png b/public/admin/js/osmplayer/jquery-ui/eggplant/images/ui-icons_734d99_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..ebfc4f83eb1928365e165ef36b076872b497e4f0
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/eggplant/images/ui-icons_734d99_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/eggplant/images/ui-icons_8d78a5_256x240.png b/public/admin/js/osmplayer/jquery-ui/eggplant/images/ui-icons_8d78a5_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..6ca0cff90c3301600757ad9cf5acc5f06886fe4d
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/eggplant/images/ui-icons_8d78a5_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/eggplant/images/ui-icons_a8a3ae_256x240.png b/public/admin/js/osmplayer/jquery-ui/eggplant/images/ui-icons_a8a3ae_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..8783bf3e866c3cd668b089bbac6728b0f5fec462
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/eggplant/images/ui-icons_a8a3ae_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/eggplant/images/ui-icons_ebccce_256x240.png b/public/admin/js/osmplayer/jquery-ui/eggplant/images/ui-icons_ebccce_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..e7dc5fa1f0a5e5297ed145234aeeac68947003c9
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/eggplant/images/ui-icons_ebccce_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/eggplant/images/ui-icons_ffffff_256x240.png b/public/admin/js/osmplayer/jquery-ui/eggplant/images/ui-icons_ffffff_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..42f8f992c727ddaa617da224a522e463df690387
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/eggplant/images/ui-icons_ffffff_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/eggplant/jquery-ui-1.8.18.custom.css b/public/admin/js/osmplayer/jquery-ui/eggplant/jquery-ui-1.8.18.custom.css
new file mode 100644
index 0000000000000000000000000000000000000000..aab622b004e63a424d860f64a8dd8fa6d67ac703
--- /dev/null
+++ b/public/admin/js/osmplayer/jquery-ui/eggplant/jquery-ui-1.8.18.custom.css
@@ -0,0 +1,565 @@
+/*
+ * jQuery UI CSS Framework 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ */
+
+/* Layout helpers
+----------------------------------*/
+.player-ui .ui-helper-hidden { display: none; }
+.player-ui .ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
+.player-ui .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
+.player-ui .ui-helper-clearfix:before, .player-ui .ui-helper-clearfix:after { content: ""; display: table; }
+.player-ui .ui-helper-clearfix:after { clear: both; }
+.player-ui .ui-helper-clearfix { zoom: 1; }
+.player-ui .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
+
+
+/* Interaction Cues
+----------------------------------*/
+.player-ui .ui-state-disabled { cursor: default !important; }
+
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.player-ui .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+.player-ui .ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
+
+
+/*
+ * jQuery UI CSS Framework 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ *
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Lucida%20Grande,%20Lucida%20Sans,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=6px&bgColorHeader=30273a&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=25&borderColorHeader=231d2b&fcHeader=ffffff&iconColorHeader=a8a3ae&bgColorContent=3d3644&bgTextureContent=12_gloss_wave.png&bgImgOpacityContent=30&borderColorContent=7e7783&fcContent=ffffff&iconColorContent=ffffff&bgColorDefault=dcd9de&bgTextureDefault=03_highlight_soft.png&bgImgOpacityDefault=100&borderColorDefault=dcd9de&fcDefault=665874&iconColorDefault=8d78a5&bgColorHover=eae6ea&bgTextureHover=03_highlight_soft.png&bgImgOpacityHover=100&borderColorHover=d1c5d8&fcHover=734d99&iconColorHover=734d99&bgColorActive=5f5964&bgTextureActive=03_highlight_soft.png&bgImgOpacityActive=45&borderColorActive=7e7783&fcActive=ffffff&iconColorActive=454545&bgColorHighlight=fafafa&bgTextureHighlight=01_flat.png&bgImgOpacityHighlight=55&borderColorHighlight=ffdb1f&fcHighlight=333333&iconColorHighlight=8d78a5&bgColorError=994d53&bgTextureError=01_flat.png&bgImgOpacityError=55&borderColorError=994d53&fcError=ffffff&iconColorError=ebccce&bgColorOverlay=eeeeee&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=80&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=60&thicknessShadow=4px&offsetTopShadow=-4px&offsetLeftShadow=-4px&cornerRadiusShadow=0px
+ */
+
+
+/* Component containers
+----------------------------------*/
+.player-ui .ui-widget { font-family: Lucida Grande, Lucida Sans, Arial, sans-serif; font-size: 1.1em; }
+.player-ui .ui-widget .ui-widget { font-size: 1em; }
+.player-ui .ui-widget input, .player-ui .ui-widget select, .player-ui .ui-widget textarea, .player-ui .ui-widget button { font-family: Lucida Grande, Lucida Sans, Arial, sans-serif; font-size: 1em; }
+.player-ui .ui-widget-content { border: 1px solid #7e7783; background: #3d3644 url(images/ui-bg_gloss-wave_30_3d3644_500x100.png) 50% top repeat-x; color: #ffffff; }
+.player-ui .ui-widget-content a { color: #ffffff; }
+.player-ui .ui-widget-header { border: 1px solid #231d2b; background: #30273a url(images/ui-bg_highlight-soft_25_30273a_1x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; }
+.player-ui .ui-widget-header a { color: #ffffff; }
+
+/* Interaction states
+----------------------------------*/
+.player-ui .ui-state-default, .player-ui .ui-widget-content .ui-state-default, .player-ui .ui-widget-header .ui-state-default { border: 1px solid #dcd9de; background: #dcd9de url(images/ui-bg_highlight-soft_100_dcd9de_1x100.png) 50% 50% repeat-x; font-weight: bold; color: #665874; }
+.player-ui .ui-state-default a, .player-ui .ui-state-default a:link, .player-ui .ui-state-default a:visited { color: #665874; text-decoration: none; }
+.player-ui .ui-state-hover, .player-ui .ui-widget-content .ui-state-hover, .player-ui .ui-widget-header .ui-state-hover, .player-ui .ui-state-focus, .player-ui .ui-widget-content .ui-state-focus, .player-ui .ui-widget-header .ui-state-focus { border: 1px solid #d1c5d8; background: #eae6ea url(images/ui-bg_highlight-soft_100_eae6ea_1x100.png) 50% 50% repeat-x; font-weight: bold; color: #734d99; }
+.player-ui .ui-state-hover a, .player-ui .ui-state-hover a:hover { color: #734d99; text-decoration: none; }
+.player-ui .ui-state-active, .player-ui .ui-widget-content .ui-state-active, .player-ui .ui-widget-header .ui-state-active { border: 1px solid #7e7783; background: #5f5964 url(images/ui-bg_highlight-soft_45_5f5964_1x100.png) 50% 50% repeat-x; font-weight: bold; color: #ffffff; }
+.player-ui .ui-state-active a, .player-ui .ui-state-active a:link, .player-ui .ui-state-active a:visited { color: #ffffff; text-decoration: none; }
+.player-ui .ui-widget :active { outline: none; }
+
+/* Interaction Cues
+----------------------------------*/
+.player-ui .ui-state-highlight, .player-ui .ui-widget-content .ui-state-highlight, .player-ui .ui-widget-header .ui-state-highlight  {border: 1px solid #ffdb1f; background: #fafafa url(images/ui-bg_flat_55_fafafa_40x100.png) 50% 50% repeat-x; color: #333333; }
+.player-ui .ui-state-highlight a, .player-ui .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #333333; }
+.player-ui .ui-state-error, .player-ui .ui-widget-content .ui-state-error, .player-ui .ui-widget-header .ui-state-error {border: 1px solid #994d53; background: #994d53 url(images/ui-bg_flat_55_994d53_40x100.png) 50% 50% repeat-x; color: #ffffff; }
+.player-ui .ui-state-error a, .player-ui .ui-widget-content .ui-state-error a, .player-ui .ui-widget-header .ui-state-error a { color: #ffffff; }
+.player-ui .ui-state-error-text, .player-ui .ui-widget-content .ui-state-error-text, .player-ui .ui-widget-header .ui-state-error-text { color: #ffffff; }
+.player-ui .ui-priority-primary, .player-ui .ui-widget-content .ui-priority-primary, .player-ui .ui-widget-header .ui-priority-primary { font-weight: bold; }
+.player-ui .ui-priority-secondary, .player-ui .ui-widget-content .ui-priority-secondary,  .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
+.player-ui .ui-state-disabled, .player-ui .ui-widget-content .ui-state-disabled, .player-ui .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.player-ui .ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_ffffff_256x240.png); }
+.player-ui .ui-widget-content .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); }
+.player-ui .ui-widget-header .ui-icon {background-image: url(images/ui-icons_a8a3ae_256x240.png); }
+.player-ui .ui-state-default .ui-icon { background-image: url(images/ui-icons_8d78a5_256x240.png); }
+.player-ui .ui-state-hover .ui-icon, .player-ui .ui-state-focus .ui-icon {background-image: url(images/ui-icons_734d99_256x240.png); }
+.player-ui .ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
+.player-ui .ui-state-highlight .ui-icon {background-image: url(images/ui-icons_8d78a5_256x240.png); }
+.player-ui .ui-state-error .ui-icon, .player-ui .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_ebccce_256x240.png); }
+
+/* positioning */
+.player-ui .ui-icon-carat-1-n { background-position: 0 0; }
+.player-ui .ui-icon-carat-1-ne { background-position: -16px 0; }
+.player-ui .ui-icon-carat-1-e { background-position: -32px 0; }
+.player-ui .ui-icon-carat-1-se { background-position: -48px 0; }
+.player-ui .ui-icon-carat-1-s { background-position: -64px 0; }
+.player-ui .ui-icon-carat-1-sw { background-position: -80px 0; }
+.player-ui .ui-icon-carat-1-w { background-position: -96px 0; }
+.player-ui .ui-icon-carat-1-nw { background-position: -112px 0; }
+.player-ui .ui-icon-carat-2-n-s { background-position: -128px 0; }
+.player-ui .ui-icon-carat-2-e-w { background-position: -144px 0; }
+.player-ui .ui-icon-triangle-1-n { background-position: 0 -16px; }
+.player-ui .ui-icon-triangle-1-ne { background-position: -16px -16px; }
+.player-ui .ui-icon-triangle-1-e { background-position: -32px -16px; }
+.player-ui .ui-icon-triangle-1-se { background-position: -48px -16px; }
+.player-ui .ui-icon-triangle-1-s { background-position: -64px -16px; }
+.player-ui .ui-icon-triangle-1-sw { background-position: -80px -16px; }
+.player-ui .ui-icon-triangle-1-w { background-position: -96px -16px; }
+.player-ui .ui-icon-triangle-1-nw { background-position: -112px -16px; }
+.player-ui .ui-icon-triangle-2-n-s { background-position: -128px -16px; }
+.player-ui .ui-icon-triangle-2-e-w { background-position: -144px -16px; }
+.player-ui .ui-icon-arrow-1-n { background-position: 0 -32px; }
+.player-ui .ui-icon-arrow-1-ne { background-position: -16px -32px; }
+.player-ui .ui-icon-arrow-1-e { background-position: -32px -32px; }
+.player-ui .ui-icon-arrow-1-se { background-position: -48px -32px; }
+.player-ui .ui-icon-arrow-1-s { background-position: -64px -32px; }
+.player-ui .ui-icon-arrow-1-sw { background-position: -80px -32px; }
+.player-ui .ui-icon-arrow-1-w { background-position: -96px -32px; }
+.player-ui .ui-icon-arrow-1-nw { background-position: -112px -32px; }
+.player-ui .ui-icon-arrow-2-n-s { background-position: -128px -32px; }
+.player-ui .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
+.player-ui .ui-icon-arrow-2-e-w { background-position: -160px -32px; }
+.player-ui .ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
+.player-ui .ui-icon-arrowstop-1-n { background-position: -192px -32px; }
+.player-ui .ui-icon-arrowstop-1-e { background-position: -208px -32px; }
+.player-ui .ui-icon-arrowstop-1-s { background-position: -224px -32px; }
+.player-ui .ui-icon-arrowstop-1-w { background-position: -240px -32px; }
+.player-ui .ui-icon-arrowthick-1-n { background-position: 0 -48px; }
+.player-ui .ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
+.player-ui .ui-icon-arrowthick-1-e { background-position: -32px -48px; }
+.player-ui .ui-icon-arrowthick-1-se { background-position: -48px -48px; }
+.player-ui .ui-icon-arrowthick-1-s { background-position: -64px -48px; }
+.player-ui .ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
+.player-ui .ui-icon-arrowthick-1-w { background-position: -96px -48px; }
+.player-ui .ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
+.player-ui .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
+.player-ui .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
+.player-ui .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
+.player-ui .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
+.player-ui .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
+.player-ui .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
+.player-ui .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
+.player-ui .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
+.player-ui .ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
+.player-ui .ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
+.player-ui .ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
+.player-ui .ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
+.player-ui .ui-icon-arrow-4 { background-position: 0 -80px; }
+.player-ui .ui-icon-arrow-4-diag { background-position: -16px -80px; }
+.player-ui .ui-icon-extlink { background-position: -32px -80px; }
+.player-ui .ui-icon-newwin { background-position: -48px -80px; }
+.player-ui .ui-icon-refresh { background-position: -64px -80px; }
+.player-ui .ui-icon-shuffle { background-position: -80px -80px; }
+.player-ui .ui-icon-transfer-e-w { background-position: -96px -80px; }
+.player-ui .ui-icon-transferthick-e-w { background-position: -112px -80px; }
+.player-ui .ui-icon-folder-collapsed { background-position: 0 -96px; }
+.player-ui .ui-icon-folder-open { background-position: -16px -96px; }
+.player-ui .ui-icon-document { background-position: -32px -96px; }
+.player-ui .ui-icon-document-b { background-position: -48px -96px; }
+.player-ui .ui-icon-note { background-position: -64px -96px; }
+.player-ui .ui-icon-mail-closed { background-position: -80px -96px; }
+.player-ui .ui-icon-mail-open { background-position: -96px -96px; }
+.player-ui .ui-icon-suitcase { background-position: -112px -96px; }
+.player-ui .ui-icon-comment { background-position: -128px -96px; }
+.player-ui .ui-icon-person { background-position: -144px -96px; }
+.player-ui .ui-icon-print { background-position: -160px -96px; }
+.player-ui .ui-icon-trash { background-position: -176px -96px; }
+.player-ui .ui-icon-locked { background-position: -192px -96px; }
+.player-ui .ui-icon-unlocked { background-position: -208px -96px; }
+.player-ui .ui-icon-bookmark { background-position: -224px -96px; }
+.player-ui .ui-icon-tag { background-position: -240px -96px; }
+.player-ui .ui-icon-home { background-position: 0 -112px; }
+.player-ui .ui-icon-flag { background-position: -16px -112px; }
+.player-ui .ui-icon-calendar { background-position: -32px -112px; }
+.player-ui .ui-icon-cart { background-position: -48px -112px; }
+.player-ui .ui-icon-pencil { background-position: -64px -112px; }
+.player-ui .ui-icon-clock { background-position: -80px -112px; }
+.player-ui .ui-icon-disk { background-position: -96px -112px; }
+.player-ui .ui-icon-calculator { background-position: -112px -112px; }
+.player-ui .ui-icon-zoomin { background-position: -128px -112px; }
+.player-ui .ui-icon-zoomout { background-position: -144px -112px; }
+.player-ui .ui-icon-search { background-position: -160px -112px; }
+.player-ui .ui-icon-wrench { background-position: -176px -112px; }
+.player-ui .ui-icon-gear { background-position: -192px -112px; }
+.player-ui .ui-icon-heart { background-position: -208px -112px; }
+.player-ui .ui-icon-star { background-position: -224px -112px; }
+.player-ui .ui-icon-link { background-position: -240px -112px; }
+.player-ui .ui-icon-cancel { background-position: 0 -128px; }
+.player-ui .ui-icon-plus { background-position: -16px -128px; }
+.player-ui .ui-icon-plusthick { background-position: -32px -128px; }
+.player-ui .ui-icon-minus { background-position: -48px -128px; }
+.player-ui .ui-icon-minusthick { background-position: -64px -128px; }
+.player-ui .ui-icon-close { background-position: -80px -128px; }
+.player-ui .ui-icon-closethick { background-position: -96px -128px; }
+.player-ui .ui-icon-key { background-position: -112px -128px; }
+.player-ui .ui-icon-lightbulb { background-position: -128px -128px; }
+.player-ui .ui-icon-scissors { background-position: -144px -128px; }
+.player-ui .ui-icon-clipboard { background-position: -160px -128px; }
+.player-ui .ui-icon-copy { background-position: -176px -128px; }
+.player-ui .ui-icon-contact { background-position: -192px -128px; }
+.player-ui .ui-icon-image { background-position: -208px -128px; }
+.player-ui .ui-icon-video { background-position: -224px -128px; }
+.player-ui .ui-icon-script { background-position: -240px -128px; }
+.player-ui .ui-icon-alert { background-position: 0 -144px; }
+.player-ui .ui-icon-info { background-position: -16px -144px; }
+.player-ui .ui-icon-notice { background-position: -32px -144px; }
+.player-ui .ui-icon-help { background-position: -48px -144px; }
+.player-ui .ui-icon-check { background-position: -64px -144px; }
+.player-ui .ui-icon-bullet { background-position: -80px -144px; }
+.player-ui .ui-icon-radio-off { background-position: -96px -144px; }
+.player-ui .ui-icon-radio-on { background-position: -112px -144px; }
+.player-ui .ui-icon-pin-w { background-position: -128px -144px; }
+.player-ui .ui-icon-pin-s { background-position: -144px -144px; }
+.player-ui .ui-icon-play { background-position: 0 -160px; }
+.player-ui .ui-icon-pause { background-position: -16px -160px; }
+.player-ui .ui-icon-seek-next { background-position: -32px -160px; }
+.player-ui .ui-icon-seek-prev { background-position: -48px -160px; }
+.player-ui .ui-icon-seek-end { background-position: -64px -160px; }
+.player-ui .ui-icon-seek-start { background-position: -80px -160px; }
+/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
+.player-ui .ui-icon-seek-first { background-position: -80px -160px; }
+.player-ui .ui-icon-stop { background-position: -96px -160px; }
+.player-ui .ui-icon-eject { background-position: -112px -160px; }
+.player-ui .ui-icon-volume-off { background-position: -128px -160px; }
+.player-ui .ui-icon-volume-on { background-position: -144px -160px; }
+.player-ui .ui-icon-power { background-position: 0 -176px; }
+.player-ui .ui-icon-signal-diag { background-position: -16px -176px; }
+.player-ui .ui-icon-signal { background-position: -32px -176px; }
+.player-ui .ui-icon-battery-0 { background-position: -48px -176px; }
+.player-ui .ui-icon-battery-1 { background-position: -64px -176px; }
+.player-ui .ui-icon-battery-2 { background-position: -80px -176px; }
+.player-ui .ui-icon-battery-3 { background-position: -96px -176px; }
+.player-ui .ui-icon-circle-plus { background-position: 0 -192px; }
+.player-ui .ui-icon-circle-minus { background-position: -16px -192px; }
+.player-ui .ui-icon-circle-close { background-position: -32px -192px; }
+.player-ui .ui-icon-circle-triangle-e { background-position: -48px -192px; }
+.player-ui .ui-icon-circle-triangle-s { background-position: -64px -192px; }
+.player-ui .ui-icon-circle-triangle-w { background-position: -80px -192px; }
+.player-ui .ui-icon-circle-triangle-n { background-position: -96px -192px; }
+.player-ui .ui-icon-circle-arrow-e { background-position: -112px -192px; }
+.player-ui .ui-icon-circle-arrow-s { background-position: -128px -192px; }
+.player-ui .ui-icon-circle-arrow-w { background-position: -144px -192px; }
+.player-ui .ui-icon-circle-arrow-n { background-position: -160px -192px; }
+.player-ui .ui-icon-circle-zoomin { background-position: -176px -192px; }
+.player-ui .ui-icon-circle-zoomout { background-position: -192px -192px; }
+.player-ui .ui-icon-circle-check { background-position: -208px -192px; }
+.player-ui .ui-icon-circlesmall-plus { background-position: 0 -208px; }
+.player-ui .ui-icon-circlesmall-minus { background-position: -16px -208px; }
+.player-ui .ui-icon-circlesmall-close { background-position: -32px -208px; }
+.player-ui .ui-icon-squaresmall-plus { background-position: -48px -208px; }
+.player-ui .ui-icon-squaresmall-minus { background-position: -64px -208px; }
+.player-ui .ui-icon-squaresmall-close { background-position: -80px -208px; }
+.player-ui .ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
+.player-ui .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
+.player-ui .ui-icon-grip-solid-vertical { background-position: -32px -224px; }
+.player-ui .ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
+.player-ui .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
+.player-ui .ui-icon-grip-diagonal-se { background-position: -80px -224px; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Corner radius */
+.player-ui .ui-corner-all, .player-ui .ui-corner-top, .player-ui .ui-corner-left, .player-ui .ui-corner-tl { -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; -khtml-border-top-left-radius: 6px; border-top-left-radius: 6px; }
+.player-ui .ui-corner-all, .player-ui .ui-corner-top, .player-ui .ui-corner-right, .player-ui .ui-corner-tr { -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; -khtml-border-top-right-radius: 6px; border-top-right-radius: 6px; }
+.player-ui .ui-corner-all, .player-ui .ui-corner-bottom, .player-ui .ui-corner-left, .player-ui .ui-corner-bl { -moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; -khtml-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px; }
+.player-ui .ui-corner-all, .player-ui .ui-corner-bottom, .player-ui .ui-corner-right, .player-ui .ui-corner-br { -moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; -khtml-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px; }
+
+/* Overlays */
+.player-ui .ui-widget-overlay { background: #eeeeee url(images/ui-bg_flat_0_eeeeee_40x100.png) 50% 50% repeat-x; opacity: .80;filter:Alpha(Opacity=80); }
+.player-ui .ui-widget-shadow { margin: -4px 0 0 -4px; padding: 4px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .60;filter:Alpha(Opacity=60); -moz-border-radius: 0px; -khtml-border-radius: 0px; -webkit-border-radius: 0px; border-radius: 0px; }/*
+ * jQuery UI Resizable 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Resizable#theming
+ */
+.player-ui .ui-resizable { position: relative;}
+.player-ui .ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block; }
+.player-ui .ui-resizable-disabled .ui-resizable-handle, .player-ui .ui-resizable-autohide .ui-resizable-handle { display: none; }
+.player-ui .ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
+.player-ui .ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
+.player-ui .ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
+.player-ui .ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
+.player-ui .ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
+.player-ui .ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
+.player-ui .ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
+.player-ui .ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/*
+ * jQuery UI Selectable 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Selectable#theming
+ */
+.player-ui .ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }
+/*
+ * jQuery UI Accordion 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Accordion#theming
+ */
+/* IE/Win - Fix animation bug - #4615 */
+.player-ui .ui-accordion { width: 100%; }
+.player-ui .ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
+.player-ui .ui-accordion .ui-accordion-li-fix { display: inline; }
+.player-ui .ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
+.player-ui .ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; }
+.player-ui .ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; }
+.player-ui .ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
+.player-ui .ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; }
+.player-ui .ui-accordion .ui-accordion-content-active { display: block; }
+/*
+ * jQuery UI Autocomplete 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Autocomplete#theming
+ */
+.player-ui .ui-autocomplete { position: absolute; cursor: default; }	
+
+/* workarounds */
+* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
+
+/*
+ * jQuery UI Menu 1.8.18
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Menu#theming
+ */
+.player-ui .ui-menu {
+	list-style:none;
+	padding: 2px;
+	margin: 0;
+	display:block;
+	float: left;
+}
+.player-ui .ui-menu .ui-menu {
+	margin-top: -3px;
+}
+.player-ui .ui-menu .ui-menu-item {
+	margin:0;
+	padding: 0;
+	zoom: 1;
+	float: left;
+	clear: left;
+	width: 100%;
+}
+.player-ui .ui-menu .ui-menu-item a {
+	text-decoration:none;
+	display:block;
+	padding:.2em .4em;
+	line-height:1.5;
+	zoom:1;
+}
+.player-ui .ui-menu .ui-menu-item a.ui-state-hover,
+.player-ui .ui-menu .ui-menu-item a.ui-state-active {
+	font-weight: normal;
+	margin: -1px;
+}
+/*
+ * jQuery UI Button 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Button#theming
+ */
+.player-ui .ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: hidden; *overflow: visible; } /* the overflow property removes extra width in IE */
+.player-ui .ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
+button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
+.player-ui .ui-button-icons-only { width: 3.4em; } 
+button.ui-button-icons-only { width: 3.7em; } 
+
+/*button text element */
+.player-ui .ui-button .ui-button-text { display: block; line-height: 1.4;  }
+.player-ui .ui-button-text-only .ui-button-text { padding: .4em 1em; }
+.player-ui .ui-button-icon-only .ui-button-text, .player-ui .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
+.player-ui .ui-button-text-icon-primary .ui-button-text, .player-ui .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
+.player-ui .ui-button-text-icon-secondary .ui-button-text, .player-ui .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }
+.player-ui .ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }
+/* no icon support for input elements, provide padding by default */
+input.ui-button { padding: .4em 1em; }
+
+/*button icon element(s) */
+.player-ui .ui-button-icon-only .ui-icon, .player-ui .ui-button-text-icon-primary .ui-icon, .player-ui .ui-button-text-icon-secondary .ui-icon, .player-ui .ui-button-text-icons .ui-icon, .player-ui .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
+.player-ui .ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
+.player-ui .ui-button-text-icon-primary .ui-button-icon-primary, .player-ui .ui-button-text-icons .ui-button-icon-primary, .player-ui .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
+.player-ui .ui-button-text-icon-secondary .ui-button-icon-secondary, .player-ui .ui-button-text-icons .ui-button-icon-secondary, .player-ui .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
+.player-ui .ui-button-text-icons .ui-button-icon-secondary, .player-ui .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
+
+/*button sets*/
+.player-ui .ui-buttonset { margin-right: 7px; }
+.player-ui .ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }
+
+/* workarounds */
+button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
+/*
+ * jQuery UI Dialog 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Dialog#theming
+ */
+.player-ui .ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; }
+.player-ui .ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative;  }
+.player-ui .ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; } 
+.player-ui .ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
+.player-ui .ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
+.player-ui .ui-dialog .ui-dialog-titlebar-close:hover, .player-ui .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
+.player-ui .ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
+.player-ui .ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
+.player-ui .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
+.player-ui .ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
+.player-ui .ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
+.player-ui .ui-draggable .ui-dialog-titlebar { cursor: move; }
+/*
+ * jQuery UI Slider 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Slider#theming
+ */
+.player-ui .ui-slider { position: relative; text-align: left; }
+.player-ui .ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
+.player-ui .ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
+
+.player-ui .ui-slider-horizontal { height: .8em; }
+.player-ui .ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
+.player-ui .ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
+.player-ui .ui-slider-horizontal .ui-slider-range-min { left: 0; }
+.player-ui .ui-slider-horizontal .ui-slider-range-max { right: 0; }
+
+.player-ui .ui-slider-vertical { width: .8em; height: 100px; }
+.player-ui .ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
+.player-ui .ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
+.player-ui .ui-slider-vertical .ui-slider-range-min { bottom: 0; }
+.player-ui .ui-slider-vertical .ui-slider-range-max { top: 0; }/*
+ * jQuery UI Tabs 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Tabs#theming
+ */
+.player-ui .ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
+.player-ui .ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
+.player-ui .ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
+.player-ui .ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }
+.player-ui .ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; }
+.player-ui .ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .player-ui .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .player-ui .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
+.player-ui .ui-tabs .ui-tabs-nav li a, .player-ui .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
+.player-ui .ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }
+.player-ui .ui-tabs .ui-tabs-hide { display: none !important; }
+/*
+ * jQuery UI Datepicker 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Datepicker#theming
+ */
+.player-ui .ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }
+.player-ui .ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
+.player-ui .ui-datepicker .ui-datepicker-prev, .player-ui .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
+.player-ui .ui-datepicker .ui-datepicker-prev-hover, .player-ui .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
+.player-ui .ui-datepicker .ui-datepicker-prev { left:2px; }
+.player-ui .ui-datepicker .ui-datepicker-next { right:2px; }
+.player-ui .ui-datepicker .ui-datepicker-prev-hover { left:1px; }
+.player-ui .ui-datepicker .ui-datepicker-next-hover { right:1px; }
+.player-ui .ui-datepicker .ui-datepicker-prev span, .player-ui .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px;  }
+.player-ui .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
+.player-ui .ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
+.player-ui .ui-datepicker select.ui-datepicker-month-year {width: 100%;}
+.player-ui .ui-datepicker select.ui-datepicker-month, 
+.player-ui .ui-datepicker select.ui-datepicker-year { width: 49%;}
+.player-ui .ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
+.player-ui .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0;  }
+.player-ui .ui-datepicker td { border: 0; padding: 1px; }
+.player-ui .ui-datepicker td span, .player-ui .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
+.player-ui .ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
+.player-ui .ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
+.player-ui .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
+
+/* with multiple calendars */
+.player-ui .ui-datepicker.ui-datepicker-multi { width:auto; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group { float:left; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
+.player-ui .ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
+.player-ui .ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
+.player-ui .ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
+.player-ui .ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
+.player-ui .ui-datepicker-row-break { clear:both; width:100%; font-size:0em; }
+
+/* RTL support */
+.player-ui .ui-datepicker-rtl { direction: rtl; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-group { float:right; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+
+/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
+.player-ui .ui-datepicker-cover {
+    display: none; /*sorry for IE5*/
+    display/**/: block; /*sorry for IE5*/
+    position: absolute; /*must have*/
+    z-index: -1; /*must have*/
+    filter: mask(); /*must have*/
+    top: -4px; /*must have*/
+    left: -4px; /*must have*/
+    width: 200px; /*must have*/
+    height: 200px; /*must have*/
+}/*
+ * jQuery UI Progressbar 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Progressbar#theming
+ */
+.player-ui .ui-progressbar { height:2em; text-align: left; overflow: hidden; }
+.player-ui .ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/jquery-ui/excite-bike/images/ui-bg_diagonals-small_25_c5ddfc_40x40.png b/public/admin/js/osmplayer/jquery-ui/excite-bike/images/ui-bg_diagonals-small_25_c5ddfc_40x40.png
new file mode 100644
index 0000000000000000000000000000000000000000..82524abb377b8f113b8b9895f8f49a183ec5811c
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/excite-bike/images/ui-bg_diagonals-small_25_c5ddfc_40x40.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/excite-bike/images/ui-bg_diagonals-thick_20_e69700_40x40.png b/public/admin/js/osmplayer/jquery-ui/excite-bike/images/ui-bg_diagonals-thick_20_e69700_40x40.png
new file mode 100644
index 0000000000000000000000000000000000000000..6aed97a24dedc2a09d965b2b1a123a4bf936c9e9
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/excite-bike/images/ui-bg_diagonals-thick_20_e69700_40x40.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/excite-bike/images/ui-bg_diagonals-thick_22_1484e6_40x40.png b/public/admin/js/osmplayer/jquery-ui/excite-bike/images/ui-bg_diagonals-thick_22_1484e6_40x40.png
new file mode 100644
index 0000000000000000000000000000000000000000..f11ca67ad51a62da5a97de25f4575d88a2ba75f4
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/excite-bike/images/ui-bg_diagonals-thick_22_1484e6_40x40.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/excite-bike/images/ui-bg_diagonals-thick_26_2293f7_40x40.png b/public/admin/js/osmplayer/jquery-ui/excite-bike/images/ui-bg_diagonals-thick_26_2293f7_40x40.png
new file mode 100644
index 0000000000000000000000000000000000000000..ce71868345562574ce31c6a9be2b4e47780e980f
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/excite-bike/images/ui-bg_diagonals-thick_26_2293f7_40x40.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/excite-bike/images/ui-bg_flat_0_e69700_40x100.png b/public/admin/js/osmplayer/jquery-ui/excite-bike/images/ui-bg_flat_0_e69700_40x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..f567c286dd5c809f92cb4649e42f67a9054e21d8
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/excite-bike/images/ui-bg_flat_0_e69700_40x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/excite-bike/images/ui-bg_flat_0_e6b900_40x100.png b/public/admin/js/osmplayer/jquery-ui/excite-bike/images/ui-bg_flat_0_e6b900_40x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..29e996551cf85a3f0ffc3989ca30f336d5f10f88
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/excite-bike/images/ui-bg_flat_0_e6b900_40x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/excite-bike/images/ui-bg_highlight-soft_100_f9f9f9_1x100.png b/public/admin/js/osmplayer/jquery-ui/excite-bike/images/ui-bg_highlight-soft_100_f9f9f9_1x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..9a46d19597e33b2e8363774397887d7c49906316
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/excite-bike/images/ui-bg_highlight-soft_100_f9f9f9_1x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/excite-bike/images/ui-bg_inset-hard_100_eeeeee_1x100.png b/public/admin/js/osmplayer/jquery-ui/excite-bike/images/ui-bg_inset-hard_100_eeeeee_1x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..f811f30900ba306c6450847392ad67bade6d4431
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/excite-bike/images/ui-bg_inset-hard_100_eeeeee_1x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/excite-bike/images/ui-icons_0a82eb_256x240.png b/public/admin/js/osmplayer/jquery-ui/excite-bike/images/ui-icons_0a82eb_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..f0491c4ba11e879bd95ac348cdb3783063ac7834
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/excite-bike/images/ui-icons_0a82eb_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/excite-bike/images/ui-icons_0b54d5_256x240.png b/public/admin/js/osmplayer/jquery-ui/excite-bike/images/ui-icons_0b54d5_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..98705f93f451deabcfde17ef6ed66c4f4b4585f7
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/excite-bike/images/ui-icons_0b54d5_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/excite-bike/images/ui-icons_5fa5e3_256x240.png b/public/admin/js/osmplayer/jquery-ui/excite-bike/images/ui-icons_5fa5e3_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..3f67ecaf338c1b1e23f65af47710bc563739a75e
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/excite-bike/images/ui-icons_5fa5e3_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/excite-bike/images/ui-icons_fcdd4a_256x240.png b/public/admin/js/osmplayer/jquery-ui/excite-bike/images/ui-icons_fcdd4a_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..4a8f8126bc5ae0e7a4242a3dc53b3983c21e129b
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/excite-bike/images/ui-icons_fcdd4a_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/excite-bike/images/ui-icons_ffffff_256x240.png b/public/admin/js/osmplayer/jquery-ui/excite-bike/images/ui-icons_ffffff_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..42f8f992c727ddaa617da224a522e463df690387
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/excite-bike/images/ui-icons_ffffff_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/excite-bike/jquery-ui-1.8.18.custom.css b/public/admin/js/osmplayer/jquery-ui/excite-bike/jquery-ui-1.8.18.custom.css
new file mode 100644
index 0000000000000000000000000000000000000000..0ce4d8aba8bdc52d474abc11c9e355f8f1439f71
--- /dev/null
+++ b/public/admin/js/osmplayer/jquery-ui/excite-bike/jquery-ui-1.8.18.custom.css
@@ -0,0 +1,565 @@
+/*
+ * jQuery UI CSS Framework 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ */
+
+/* Layout helpers
+----------------------------------*/
+.player-ui .ui-helper-hidden { display: none; }
+.player-ui .ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
+.player-ui .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
+.player-ui .ui-helper-clearfix:before, .player-ui .ui-helper-clearfix:after { content: ""; display: table; }
+.player-ui .ui-helper-clearfix:after { clear: both; }
+.player-ui .ui-helper-clearfix { zoom: 1; }
+.player-ui .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
+
+
+/* Interaction Cues
+----------------------------------*/
+.player-ui .ui-state-disabled { cursor: default !important; }
+
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.player-ui .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+.player-ui .ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
+
+
+/*
+ * jQuery UI CSS Framework 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ *
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=segoe%20ui,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=3px&bgColorHeader=f9f9f9&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=100&borderColorHeader=cccccc&fcHeader=e69700&iconColorHeader=5fa5e3&bgColorContent=eeeeee&bgTextureContent=06_inset_hard.png&bgImgOpacityContent=100&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=0a82eb&bgColorDefault=1484e6&bgTextureDefault=08_diagonals_thick.png&bgImgOpacityDefault=22&borderColorDefault=ffffff&fcDefault=ffffff&iconColorDefault=fcdd4a&bgColorHover=2293f7&bgTextureHover=08_diagonals_thick.png&bgImgOpacityHover=26&borderColorHover=2293f7&fcHover=ffffff&iconColorHover=ffffff&bgColorActive=e69700&bgTextureActive=08_diagonals_thick.png&bgImgOpacityActive=20&borderColorActive=e69700&fcActive=ffffff&iconColorActive=ffffff&bgColorHighlight=c5ddfc&bgTextureHighlight=07_diagonals_small.png&bgImgOpacityHighlight=25&borderColorHighlight=ffffff&fcHighlight=333333&iconColorHighlight=0b54d5&bgColorError=e69700&bgTextureError=08_diagonals_thick.png&bgImgOpacityError=20&borderColorError=e69700&fcError=ffffff&iconColorError=ffffff&bgColorOverlay=e6b900&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=e69700&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=20&thicknessShadow=0px&offsetTopShadow=6px&offsetLeftShadow=6px&cornerRadiusShadow=3px
+ */
+
+
+/* Component containers
+----------------------------------*/
+.player-ui .ui-widget { font-family: segoe ui, Arial, sans-serif; font-size: 1.1em; }
+.player-ui .ui-widget .ui-widget { font-size: 1em; }
+.player-ui .ui-widget input, .player-ui .ui-widget select, .player-ui .ui-widget textarea, .player-ui .ui-widget button { font-family: segoe ui, Arial, sans-serif; font-size: 1em; }
+.player-ui .ui-widget-content { border: 1px solid #aaaaaa; background: #eeeeee url(images/ui-bg_inset-hard_100_eeeeee_1x100.png) 50% bottom repeat-x; color: #222222; }
+.player-ui .ui-widget-content a { color: #222222; }
+.player-ui .ui-widget-header { border: 1px solid #cccccc; background: #f9f9f9 url(images/ui-bg_highlight-soft_100_f9f9f9_1x100.png) 50% 50% repeat-x; color: #e69700; font-weight: bold; }
+.player-ui .ui-widget-header a { color: #e69700; }
+
+/* Interaction states
+----------------------------------*/
+.player-ui .ui-state-default, .player-ui .ui-widget-content .ui-state-default, .player-ui .ui-widget-header .ui-state-default { border: 1px solid #ffffff; background: #1484e6 url(images/ui-bg_diagonals-thick_22_1484e6_40x40.png) 50% 50% repeat; font-weight: bold; color: #ffffff; }
+.player-ui .ui-state-default a, .player-ui .ui-state-default a:link, .player-ui .ui-state-default a:visited { color: #ffffff; text-decoration: none; }
+.player-ui .ui-state-hover, .player-ui .ui-widget-content .ui-state-hover, .player-ui .ui-widget-header .ui-state-hover, .player-ui .ui-state-focus, .player-ui .ui-widget-content .ui-state-focus, .player-ui .ui-widget-header .ui-state-focus { border: 1px solid #2293f7; background: #2293f7 url(images/ui-bg_diagonals-thick_26_2293f7_40x40.png) 50% 50% repeat; font-weight: bold; color: #ffffff; }
+.player-ui .ui-state-hover a, .player-ui .ui-state-hover a:hover { color: #ffffff; text-decoration: none; }
+.player-ui .ui-state-active, .player-ui .ui-widget-content .ui-state-active, .player-ui .ui-widget-header .ui-state-active { border: 1px solid #e69700; background: #e69700 url(images/ui-bg_diagonals-thick_20_e69700_40x40.png) 50% 50% repeat; font-weight: bold; color: #ffffff; }
+.player-ui .ui-state-active a, .player-ui .ui-state-active a:link, .player-ui .ui-state-active a:visited { color: #ffffff; text-decoration: none; }
+.player-ui .ui-widget :active { outline: none; }
+
+/* Interaction Cues
+----------------------------------*/
+.player-ui .ui-state-highlight, .player-ui .ui-widget-content .ui-state-highlight, .player-ui .ui-widget-header .ui-state-highlight  {border: 1px solid #ffffff; background: #c5ddfc url(images/ui-bg_diagonals-small_25_c5ddfc_40x40.png) 50% 50% repeat; color: #333333; }
+.player-ui .ui-state-highlight a, .player-ui .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #333333; }
+.player-ui .ui-state-error, .player-ui .ui-widget-content .ui-state-error, .player-ui .ui-widget-header .ui-state-error {border: 1px solid #e69700; background: #e69700 url(images/ui-bg_diagonals-thick_20_e69700_40x40.png) 50% 50% repeat; color: #ffffff; }
+.player-ui .ui-state-error a, .player-ui .ui-widget-content .ui-state-error a, .player-ui .ui-widget-header .ui-state-error a { color: #ffffff; }
+.player-ui .ui-state-error-text, .player-ui .ui-widget-content .ui-state-error-text, .player-ui .ui-widget-header .ui-state-error-text { color: #ffffff; }
+.player-ui .ui-priority-primary, .player-ui .ui-widget-content .ui-priority-primary, .player-ui .ui-widget-header .ui-priority-primary { font-weight: bold; }
+.player-ui .ui-priority-secondary, .player-ui .ui-widget-content .ui-priority-secondary,  .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
+.player-ui .ui-state-disabled, .player-ui .ui-widget-content .ui-state-disabled, .player-ui .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.player-ui .ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_0a82eb_256x240.png); }
+.player-ui .ui-widget-content .ui-icon {background-image: url(images/ui-icons_0a82eb_256x240.png); }
+.player-ui .ui-widget-header .ui-icon {background-image: url(images/ui-icons_5fa5e3_256x240.png); }
+.player-ui .ui-state-default .ui-icon { background-image: url(images/ui-icons_fcdd4a_256x240.png); }
+.player-ui .ui-state-hover .ui-icon, .player-ui .ui-state-focus .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); }
+.player-ui .ui-state-active .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); }
+.player-ui .ui-state-highlight .ui-icon {background-image: url(images/ui-icons_0b54d5_256x240.png); }
+.player-ui .ui-state-error .ui-icon, .player-ui .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); }
+
+/* positioning */
+.player-ui .ui-icon-carat-1-n { background-position: 0 0; }
+.player-ui .ui-icon-carat-1-ne { background-position: -16px 0; }
+.player-ui .ui-icon-carat-1-e { background-position: -32px 0; }
+.player-ui .ui-icon-carat-1-se { background-position: -48px 0; }
+.player-ui .ui-icon-carat-1-s { background-position: -64px 0; }
+.player-ui .ui-icon-carat-1-sw { background-position: -80px 0; }
+.player-ui .ui-icon-carat-1-w { background-position: -96px 0; }
+.player-ui .ui-icon-carat-1-nw { background-position: -112px 0; }
+.player-ui .ui-icon-carat-2-n-s { background-position: -128px 0; }
+.player-ui .ui-icon-carat-2-e-w { background-position: -144px 0; }
+.player-ui .ui-icon-triangle-1-n { background-position: 0 -16px; }
+.player-ui .ui-icon-triangle-1-ne { background-position: -16px -16px; }
+.player-ui .ui-icon-triangle-1-e { background-position: -32px -16px; }
+.player-ui .ui-icon-triangle-1-se { background-position: -48px -16px; }
+.player-ui .ui-icon-triangle-1-s { background-position: -64px -16px; }
+.player-ui .ui-icon-triangle-1-sw { background-position: -80px -16px; }
+.player-ui .ui-icon-triangle-1-w { background-position: -96px -16px; }
+.player-ui .ui-icon-triangle-1-nw { background-position: -112px -16px; }
+.player-ui .ui-icon-triangle-2-n-s { background-position: -128px -16px; }
+.player-ui .ui-icon-triangle-2-e-w { background-position: -144px -16px; }
+.player-ui .ui-icon-arrow-1-n { background-position: 0 -32px; }
+.player-ui .ui-icon-arrow-1-ne { background-position: -16px -32px; }
+.player-ui .ui-icon-arrow-1-e { background-position: -32px -32px; }
+.player-ui .ui-icon-arrow-1-se { background-position: -48px -32px; }
+.player-ui .ui-icon-arrow-1-s { background-position: -64px -32px; }
+.player-ui .ui-icon-arrow-1-sw { background-position: -80px -32px; }
+.player-ui .ui-icon-arrow-1-w { background-position: -96px -32px; }
+.player-ui .ui-icon-arrow-1-nw { background-position: -112px -32px; }
+.player-ui .ui-icon-arrow-2-n-s { background-position: -128px -32px; }
+.player-ui .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
+.player-ui .ui-icon-arrow-2-e-w { background-position: -160px -32px; }
+.player-ui .ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
+.player-ui .ui-icon-arrowstop-1-n { background-position: -192px -32px; }
+.player-ui .ui-icon-arrowstop-1-e { background-position: -208px -32px; }
+.player-ui .ui-icon-arrowstop-1-s { background-position: -224px -32px; }
+.player-ui .ui-icon-arrowstop-1-w { background-position: -240px -32px; }
+.player-ui .ui-icon-arrowthick-1-n { background-position: 0 -48px; }
+.player-ui .ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
+.player-ui .ui-icon-arrowthick-1-e { background-position: -32px -48px; }
+.player-ui .ui-icon-arrowthick-1-se { background-position: -48px -48px; }
+.player-ui .ui-icon-arrowthick-1-s { background-position: -64px -48px; }
+.player-ui .ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
+.player-ui .ui-icon-arrowthick-1-w { background-position: -96px -48px; }
+.player-ui .ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
+.player-ui .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
+.player-ui .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
+.player-ui .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
+.player-ui .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
+.player-ui .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
+.player-ui .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
+.player-ui .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
+.player-ui .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
+.player-ui .ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
+.player-ui .ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
+.player-ui .ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
+.player-ui .ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
+.player-ui .ui-icon-arrow-4 { background-position: 0 -80px; }
+.player-ui .ui-icon-arrow-4-diag { background-position: -16px -80px; }
+.player-ui .ui-icon-extlink { background-position: -32px -80px; }
+.player-ui .ui-icon-newwin { background-position: -48px -80px; }
+.player-ui .ui-icon-refresh { background-position: -64px -80px; }
+.player-ui .ui-icon-shuffle { background-position: -80px -80px; }
+.player-ui .ui-icon-transfer-e-w { background-position: -96px -80px; }
+.player-ui .ui-icon-transferthick-e-w { background-position: -112px -80px; }
+.player-ui .ui-icon-folder-collapsed { background-position: 0 -96px; }
+.player-ui .ui-icon-folder-open { background-position: -16px -96px; }
+.player-ui .ui-icon-document { background-position: -32px -96px; }
+.player-ui .ui-icon-document-b { background-position: -48px -96px; }
+.player-ui .ui-icon-note { background-position: -64px -96px; }
+.player-ui .ui-icon-mail-closed { background-position: -80px -96px; }
+.player-ui .ui-icon-mail-open { background-position: -96px -96px; }
+.player-ui .ui-icon-suitcase { background-position: -112px -96px; }
+.player-ui .ui-icon-comment { background-position: -128px -96px; }
+.player-ui .ui-icon-person { background-position: -144px -96px; }
+.player-ui .ui-icon-print { background-position: -160px -96px; }
+.player-ui .ui-icon-trash { background-position: -176px -96px; }
+.player-ui .ui-icon-locked { background-position: -192px -96px; }
+.player-ui .ui-icon-unlocked { background-position: -208px -96px; }
+.player-ui .ui-icon-bookmark { background-position: -224px -96px; }
+.player-ui .ui-icon-tag { background-position: -240px -96px; }
+.player-ui .ui-icon-home { background-position: 0 -112px; }
+.player-ui .ui-icon-flag { background-position: -16px -112px; }
+.player-ui .ui-icon-calendar { background-position: -32px -112px; }
+.player-ui .ui-icon-cart { background-position: -48px -112px; }
+.player-ui .ui-icon-pencil { background-position: -64px -112px; }
+.player-ui .ui-icon-clock { background-position: -80px -112px; }
+.player-ui .ui-icon-disk { background-position: -96px -112px; }
+.player-ui .ui-icon-calculator { background-position: -112px -112px; }
+.player-ui .ui-icon-zoomin { background-position: -128px -112px; }
+.player-ui .ui-icon-zoomout { background-position: -144px -112px; }
+.player-ui .ui-icon-search { background-position: -160px -112px; }
+.player-ui .ui-icon-wrench { background-position: -176px -112px; }
+.player-ui .ui-icon-gear { background-position: -192px -112px; }
+.player-ui .ui-icon-heart { background-position: -208px -112px; }
+.player-ui .ui-icon-star { background-position: -224px -112px; }
+.player-ui .ui-icon-link { background-position: -240px -112px; }
+.player-ui .ui-icon-cancel { background-position: 0 -128px; }
+.player-ui .ui-icon-plus { background-position: -16px -128px; }
+.player-ui .ui-icon-plusthick { background-position: -32px -128px; }
+.player-ui .ui-icon-minus { background-position: -48px -128px; }
+.player-ui .ui-icon-minusthick { background-position: -64px -128px; }
+.player-ui .ui-icon-close { background-position: -80px -128px; }
+.player-ui .ui-icon-closethick { background-position: -96px -128px; }
+.player-ui .ui-icon-key { background-position: -112px -128px; }
+.player-ui .ui-icon-lightbulb { background-position: -128px -128px; }
+.player-ui .ui-icon-scissors { background-position: -144px -128px; }
+.player-ui .ui-icon-clipboard { background-position: -160px -128px; }
+.player-ui .ui-icon-copy { background-position: -176px -128px; }
+.player-ui .ui-icon-contact { background-position: -192px -128px; }
+.player-ui .ui-icon-image { background-position: -208px -128px; }
+.player-ui .ui-icon-video { background-position: -224px -128px; }
+.player-ui .ui-icon-script { background-position: -240px -128px; }
+.player-ui .ui-icon-alert { background-position: 0 -144px; }
+.player-ui .ui-icon-info { background-position: -16px -144px; }
+.player-ui .ui-icon-notice { background-position: -32px -144px; }
+.player-ui .ui-icon-help { background-position: -48px -144px; }
+.player-ui .ui-icon-check { background-position: -64px -144px; }
+.player-ui .ui-icon-bullet { background-position: -80px -144px; }
+.player-ui .ui-icon-radio-off { background-position: -96px -144px; }
+.player-ui .ui-icon-radio-on { background-position: -112px -144px; }
+.player-ui .ui-icon-pin-w { background-position: -128px -144px; }
+.player-ui .ui-icon-pin-s { background-position: -144px -144px; }
+.player-ui .ui-icon-play { background-position: 0 -160px; }
+.player-ui .ui-icon-pause { background-position: -16px -160px; }
+.player-ui .ui-icon-seek-next { background-position: -32px -160px; }
+.player-ui .ui-icon-seek-prev { background-position: -48px -160px; }
+.player-ui .ui-icon-seek-end { background-position: -64px -160px; }
+.player-ui .ui-icon-seek-start { background-position: -80px -160px; }
+/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
+.player-ui .ui-icon-seek-first { background-position: -80px -160px; }
+.player-ui .ui-icon-stop { background-position: -96px -160px; }
+.player-ui .ui-icon-eject { background-position: -112px -160px; }
+.player-ui .ui-icon-volume-off { background-position: -128px -160px; }
+.player-ui .ui-icon-volume-on { background-position: -144px -160px; }
+.player-ui .ui-icon-power { background-position: 0 -176px; }
+.player-ui .ui-icon-signal-diag { background-position: -16px -176px; }
+.player-ui .ui-icon-signal { background-position: -32px -176px; }
+.player-ui .ui-icon-battery-0 { background-position: -48px -176px; }
+.player-ui .ui-icon-battery-1 { background-position: -64px -176px; }
+.player-ui .ui-icon-battery-2 { background-position: -80px -176px; }
+.player-ui .ui-icon-battery-3 { background-position: -96px -176px; }
+.player-ui .ui-icon-circle-plus { background-position: 0 -192px; }
+.player-ui .ui-icon-circle-minus { background-position: -16px -192px; }
+.player-ui .ui-icon-circle-close { background-position: -32px -192px; }
+.player-ui .ui-icon-circle-triangle-e { background-position: -48px -192px; }
+.player-ui .ui-icon-circle-triangle-s { background-position: -64px -192px; }
+.player-ui .ui-icon-circle-triangle-w { background-position: -80px -192px; }
+.player-ui .ui-icon-circle-triangle-n { background-position: -96px -192px; }
+.player-ui .ui-icon-circle-arrow-e { background-position: -112px -192px; }
+.player-ui .ui-icon-circle-arrow-s { background-position: -128px -192px; }
+.player-ui .ui-icon-circle-arrow-w { background-position: -144px -192px; }
+.player-ui .ui-icon-circle-arrow-n { background-position: -160px -192px; }
+.player-ui .ui-icon-circle-zoomin { background-position: -176px -192px; }
+.player-ui .ui-icon-circle-zoomout { background-position: -192px -192px; }
+.player-ui .ui-icon-circle-check { background-position: -208px -192px; }
+.player-ui .ui-icon-circlesmall-plus { background-position: 0 -208px; }
+.player-ui .ui-icon-circlesmall-minus { background-position: -16px -208px; }
+.player-ui .ui-icon-circlesmall-close { background-position: -32px -208px; }
+.player-ui .ui-icon-squaresmall-plus { background-position: -48px -208px; }
+.player-ui .ui-icon-squaresmall-minus { background-position: -64px -208px; }
+.player-ui .ui-icon-squaresmall-close { background-position: -80px -208px; }
+.player-ui .ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
+.player-ui .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
+.player-ui .ui-icon-grip-solid-vertical { background-position: -32px -224px; }
+.player-ui .ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
+.player-ui .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
+.player-ui .ui-icon-grip-diagonal-se { background-position: -80px -224px; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Corner radius */
+.player-ui .ui-corner-all, .player-ui .ui-corner-top, .player-ui .ui-corner-left, .player-ui .ui-corner-tl { -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; -khtml-border-top-left-radius: 3px; border-top-left-radius: 3px; }
+.player-ui .ui-corner-all, .player-ui .ui-corner-top, .player-ui .ui-corner-right, .player-ui .ui-corner-tr { -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; -khtml-border-top-right-radius: 3px; border-top-right-radius: 3px; }
+.player-ui .ui-corner-all, .player-ui .ui-corner-bottom, .player-ui .ui-corner-left, .player-ui .ui-corner-bl { -moz-border-radius-bottomleft: 3px; -webkit-border-bottom-left-radius: 3px; -khtml-border-bottom-left-radius: 3px; border-bottom-left-radius: 3px; }
+.player-ui .ui-corner-all, .player-ui .ui-corner-bottom, .player-ui .ui-corner-right, .player-ui .ui-corner-br { -moz-border-radius-bottomright: 3px; -webkit-border-bottom-right-radius: 3px; -khtml-border-bottom-right-radius: 3px; border-bottom-right-radius: 3px; }
+
+/* Overlays */
+.player-ui .ui-widget-overlay { background: #e6b900 url(images/ui-bg_flat_0_e6b900_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); }
+.player-ui .ui-widget-shadow { margin: 6px 0 0 6px; padding: 0px; background: #e69700 url(images/ui-bg_flat_0_e69700_40x100.png) 50% 50% repeat-x; opacity: .20;filter:Alpha(Opacity=20); -moz-border-radius: 3px; -khtml-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; }/*
+ * jQuery UI Resizable 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Resizable#theming
+ */
+.player-ui .ui-resizable { position: relative;}
+.player-ui .ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block; }
+.player-ui .ui-resizable-disabled .ui-resizable-handle, .player-ui .ui-resizable-autohide .ui-resizable-handle { display: none; }
+.player-ui .ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
+.player-ui .ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
+.player-ui .ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
+.player-ui .ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
+.player-ui .ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
+.player-ui .ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
+.player-ui .ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
+.player-ui .ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/*
+ * jQuery UI Selectable 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Selectable#theming
+ */
+.player-ui .ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }
+/*
+ * jQuery UI Accordion 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Accordion#theming
+ */
+/* IE/Win - Fix animation bug - #4615 */
+.player-ui .ui-accordion { width: 100%; }
+.player-ui .ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
+.player-ui .ui-accordion .ui-accordion-li-fix { display: inline; }
+.player-ui .ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
+.player-ui .ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; }
+.player-ui .ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; }
+.player-ui .ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
+.player-ui .ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; }
+.player-ui .ui-accordion .ui-accordion-content-active { display: block; }
+/*
+ * jQuery UI Autocomplete 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Autocomplete#theming
+ */
+.player-ui .ui-autocomplete { position: absolute; cursor: default; }	
+
+/* workarounds */
+* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
+
+/*
+ * jQuery UI Menu 1.8.18
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Menu#theming
+ */
+.player-ui .ui-menu {
+	list-style:none;
+	padding: 2px;
+	margin: 0;
+	display:block;
+	float: left;
+}
+.player-ui .ui-menu .ui-menu {
+	margin-top: -3px;
+}
+.player-ui .ui-menu .ui-menu-item {
+	margin:0;
+	padding: 0;
+	zoom: 1;
+	float: left;
+	clear: left;
+	width: 100%;
+}
+.player-ui .ui-menu .ui-menu-item a {
+	text-decoration:none;
+	display:block;
+	padding:.2em .4em;
+	line-height:1.5;
+	zoom:1;
+}
+.player-ui .ui-menu .ui-menu-item a.ui-state-hover,
+.player-ui .ui-menu .ui-menu-item a.ui-state-active {
+	font-weight: normal;
+	margin: -1px;
+}
+/*
+ * jQuery UI Button 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Button#theming
+ */
+.player-ui .ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: hidden; *overflow: visible; } /* the overflow property removes extra width in IE */
+.player-ui .ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
+button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
+.player-ui .ui-button-icons-only { width: 3.4em; } 
+button.ui-button-icons-only { width: 3.7em; } 
+
+/*button text element */
+.player-ui .ui-button .ui-button-text { display: block; line-height: 1.4;  }
+.player-ui .ui-button-text-only .ui-button-text { padding: .4em 1em; }
+.player-ui .ui-button-icon-only .ui-button-text, .player-ui .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
+.player-ui .ui-button-text-icon-primary .ui-button-text, .player-ui .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
+.player-ui .ui-button-text-icon-secondary .ui-button-text, .player-ui .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }
+.player-ui .ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }
+/* no icon support for input elements, provide padding by default */
+input.ui-button { padding: .4em 1em; }
+
+/*button icon element(s) */
+.player-ui .ui-button-icon-only .ui-icon, .player-ui .ui-button-text-icon-primary .ui-icon, .player-ui .ui-button-text-icon-secondary .ui-icon, .player-ui .ui-button-text-icons .ui-icon, .player-ui .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
+.player-ui .ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
+.player-ui .ui-button-text-icon-primary .ui-button-icon-primary, .player-ui .ui-button-text-icons .ui-button-icon-primary, .player-ui .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
+.player-ui .ui-button-text-icon-secondary .ui-button-icon-secondary, .player-ui .ui-button-text-icons .ui-button-icon-secondary, .player-ui .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
+.player-ui .ui-button-text-icons .ui-button-icon-secondary, .player-ui .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
+
+/*button sets*/
+.player-ui .ui-buttonset { margin-right: 7px; }
+.player-ui .ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }
+
+/* workarounds */
+button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
+/*
+ * jQuery UI Dialog 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Dialog#theming
+ */
+.player-ui .ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; }
+.player-ui .ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative;  }
+.player-ui .ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; } 
+.player-ui .ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
+.player-ui .ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
+.player-ui .ui-dialog .ui-dialog-titlebar-close:hover, .player-ui .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
+.player-ui .ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
+.player-ui .ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
+.player-ui .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
+.player-ui .ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
+.player-ui .ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
+.player-ui .ui-draggable .ui-dialog-titlebar { cursor: move; }
+/*
+ * jQuery UI Slider 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Slider#theming
+ */
+.player-ui .ui-slider { position: relative; text-align: left; }
+.player-ui .ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
+.player-ui .ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
+
+.player-ui .ui-slider-horizontal { height: .8em; }
+.player-ui .ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
+.player-ui .ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
+.player-ui .ui-slider-horizontal .ui-slider-range-min { left: 0; }
+.player-ui .ui-slider-horizontal .ui-slider-range-max { right: 0; }
+
+.player-ui .ui-slider-vertical { width: .8em; height: 100px; }
+.player-ui .ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
+.player-ui .ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
+.player-ui .ui-slider-vertical .ui-slider-range-min { bottom: 0; }
+.player-ui .ui-slider-vertical .ui-slider-range-max { top: 0; }/*
+ * jQuery UI Tabs 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Tabs#theming
+ */
+.player-ui .ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
+.player-ui .ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
+.player-ui .ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
+.player-ui .ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }
+.player-ui .ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; }
+.player-ui .ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .player-ui .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .player-ui .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
+.player-ui .ui-tabs .ui-tabs-nav li a, .player-ui .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
+.player-ui .ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }
+.player-ui .ui-tabs .ui-tabs-hide { display: none !important; }
+/*
+ * jQuery UI Datepicker 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Datepicker#theming
+ */
+.player-ui .ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }
+.player-ui .ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
+.player-ui .ui-datepicker .ui-datepicker-prev, .player-ui .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
+.player-ui .ui-datepicker .ui-datepicker-prev-hover, .player-ui .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
+.player-ui .ui-datepicker .ui-datepicker-prev { left:2px; }
+.player-ui .ui-datepicker .ui-datepicker-next { right:2px; }
+.player-ui .ui-datepicker .ui-datepicker-prev-hover { left:1px; }
+.player-ui .ui-datepicker .ui-datepicker-next-hover { right:1px; }
+.player-ui .ui-datepicker .ui-datepicker-prev span, .player-ui .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px;  }
+.player-ui .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
+.player-ui .ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
+.player-ui .ui-datepicker select.ui-datepicker-month-year {width: 100%;}
+.player-ui .ui-datepicker select.ui-datepicker-month, 
+.player-ui .ui-datepicker select.ui-datepicker-year { width: 49%;}
+.player-ui .ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
+.player-ui .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0;  }
+.player-ui .ui-datepicker td { border: 0; padding: 1px; }
+.player-ui .ui-datepicker td span, .player-ui .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
+.player-ui .ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
+.player-ui .ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
+.player-ui .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
+
+/* with multiple calendars */
+.player-ui .ui-datepicker.ui-datepicker-multi { width:auto; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group { float:left; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
+.player-ui .ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
+.player-ui .ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
+.player-ui .ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
+.player-ui .ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
+.player-ui .ui-datepicker-row-break { clear:both; width:100%; font-size:0em; }
+
+/* RTL support */
+.player-ui .ui-datepicker-rtl { direction: rtl; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-group { float:right; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+
+/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
+.player-ui .ui-datepicker-cover {
+    display: none; /*sorry for IE5*/
+    display/**/: block; /*sorry for IE5*/
+    position: absolute; /*must have*/
+    z-index: -1; /*must have*/
+    filter: mask(); /*must have*/
+    top: -4px; /*must have*/
+    left: -4px; /*must have*/
+    width: 200px; /*must have*/
+    height: 200px; /*must have*/
+}/*
+ * jQuery UI Progressbar 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Progressbar#theming
+ */
+.player-ui .ui-progressbar { height:2em; text-align: left; overflow: hidden; }
+.player-ui .ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/jquery-ui/flick/images/ui-bg_flat_0_aaaaaa_40x100.png b/public/admin/js/osmplayer/jquery-ui/flick/images/ui-bg_flat_0_aaaaaa_40x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..5b5dab2ab7b1c50dea9cfe73dc5a269a92d2d4b4
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/flick/images/ui-bg_flat_0_aaaaaa_40x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/flick/images/ui-bg_flat_0_eeeeee_40x100.png b/public/admin/js/osmplayer/jquery-ui/flick/images/ui-bg_flat_0_eeeeee_40x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..e44f861be1ccdfec4275eb20d9b056f14992f649
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/flick/images/ui-bg_flat_0_eeeeee_40x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/flick/images/ui-bg_flat_55_ffffff_40x100.png b/public/admin/js/osmplayer/jquery-ui/flick/images/ui-bg_flat_55_ffffff_40x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..ac8b229af950c29356abf64a6c4aa894575445f0
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/flick/images/ui-bg_flat_55_ffffff_40x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/flick/images/ui-bg_flat_75_ffffff_40x100.png b/public/admin/js/osmplayer/jquery-ui/flick/images/ui-bg_flat_75_ffffff_40x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..ac8b229af950c29356abf64a6c4aa894575445f0
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/flick/images/ui-bg_flat_75_ffffff_40x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/flick/images/ui-bg_glass_65_ffffff_1x400.png b/public/admin/js/osmplayer/jquery-ui/flick/images/ui-bg_glass_65_ffffff_1x400.png
new file mode 100644
index 0000000000000000000000000000000000000000..42ccba269b6e91bef12ad0fa18be651b5ef0ee68
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/flick/images/ui-bg_glass_65_ffffff_1x400.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/flick/images/ui-bg_highlight-soft_100_f6f6f6_1x100.png b/public/admin/js/osmplayer/jquery-ui/flick/images/ui-bg_highlight-soft_100_f6f6f6_1x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..5dcfaa9a0168d65db3b8de1401cdf4e795880fa9
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/flick/images/ui-bg_highlight-soft_100_f6f6f6_1x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/flick/images/ui-bg_highlight-soft_25_0073ea_1x100.png b/public/admin/js/osmplayer/jquery-ui/flick/images/ui-bg_highlight-soft_25_0073ea_1x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..1530eff881ff92df6b63782dc7eb4d5fe1d587ae
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/flick/images/ui-bg_highlight-soft_25_0073ea_1x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/flick/images/ui-bg_highlight-soft_50_dddddd_1x100.png b/public/admin/js/osmplayer/jquery-ui/flick/images/ui-bg_highlight-soft_50_dddddd_1x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..b47a4da5243c82396c15beedbe1584489bcce5b8
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/flick/images/ui-bg_highlight-soft_50_dddddd_1x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/flick/images/ui-icons_0073ea_256x240.png b/public/admin/js/osmplayer/jquery-ui/flick/images/ui-icons_0073ea_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..6b852b618ad4e91b4c5fe65693731f160b9fb3cb
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/flick/images/ui-icons_0073ea_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/flick/images/ui-icons_454545_256x240.png b/public/admin/js/osmplayer/jquery-ui/flick/images/ui-icons_454545_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..59bd45b907c4fd965697774ce8c5fc6b2fd9c105
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/flick/images/ui-icons_454545_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/flick/images/ui-icons_666666_256x240.png b/public/admin/js/osmplayer/jquery-ui/flick/images/ui-icons_666666_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..f87de1ca1dc2eeefd7c2a4bed06c3f8bbfe2d483
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/flick/images/ui-icons_666666_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/flick/images/ui-icons_ff0084_256x240.png b/public/admin/js/osmplayer/jquery-ui/flick/images/ui-icons_ff0084_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..0ca605d62f94b0919e567ae866c6aa0172987de0
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/flick/images/ui-icons_ff0084_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/flick/images/ui-icons_ffffff_256x240.png b/public/admin/js/osmplayer/jquery-ui/flick/images/ui-icons_ffffff_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..42f8f992c727ddaa617da224a522e463df690387
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/flick/images/ui-icons_ffffff_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/flick/jquery-ui-1.8.18.custom.css b/public/admin/js/osmplayer/jquery-ui/flick/jquery-ui-1.8.18.custom.css
new file mode 100644
index 0000000000000000000000000000000000000000..a066b44a9d17b4d18c60286debaeaa1d8c93bbac
--- /dev/null
+++ b/public/admin/js/osmplayer/jquery-ui/flick/jquery-ui-1.8.18.custom.css
@@ -0,0 +1,565 @@
+/*
+ * jQuery UI CSS Framework 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ */
+
+/* Layout helpers
+----------------------------------*/
+.player-ui .ui-helper-hidden { display: none; }
+.player-ui .ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
+.player-ui .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
+.player-ui .ui-helper-clearfix:before, .player-ui .ui-helper-clearfix:after { content: ""; display: table; }
+.player-ui .ui-helper-clearfix:after { clear: both; }
+.player-ui .ui-helper-clearfix { zoom: 1; }
+.player-ui .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
+
+
+/* Interaction Cues
+----------------------------------*/
+.player-ui .ui-state-disabled { cursor: default !important; }
+
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.player-ui .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+.player-ui .ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
+
+
+/*
+ * jQuery UI CSS Framework 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ *
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Helvetica,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=2px&bgColorHeader=dddddd&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=50&borderColorHeader=dddddd&fcHeader=444444&iconColorHeader=0073ea&bgColorContent=ffffff&bgTextureContent=01_flat.png&bgImgOpacityContent=75&borderColorContent=dddddd&fcContent=444444&iconColorContent=ff0084&bgColorDefault=f6f6f6&bgTextureDefault=03_highlight_soft.png&bgImgOpacityDefault=100&borderColorDefault=dddddd&fcDefault=0073ea&iconColorDefault=666666&bgColorHover=0073ea&bgTextureHover=03_highlight_soft.png&bgImgOpacityHover=25&borderColorHover=0073ea&fcHover=ffffff&iconColorHover=ffffff&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=dddddd&fcActive=ff0084&iconColorActive=454545&bgColorHighlight=ffffff&bgTextureHighlight=01_flat.png&bgImgOpacityHighlight=55&borderColorHighlight=cccccc&fcHighlight=444444&iconColorHighlight=0073ea&bgColorError=ffffff&bgTextureError=01_flat.png&bgImgOpacityError=55&borderColorError=ff0084&fcError=222222&iconColorError=ff0084&bgColorOverlay=eeeeee&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=80&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=60&thicknessShadow=4px&offsetTopShadow=-4px&offsetLeftShadow=-4px&cornerRadiusShadow=0px
+ */
+
+
+/* Component containers
+----------------------------------*/
+.player-ui .ui-widget { font-family: Helvetica, Arial, sans-serif; font-size: 1.1em; }
+.player-ui .ui-widget .ui-widget { font-size: 1em; }
+.player-ui .ui-widget input, .player-ui .ui-widget select, .player-ui .ui-widget textarea, .player-ui .ui-widget button { font-family: Helvetica, Arial, sans-serif; font-size: 1em; }
+.player-ui .ui-widget-content { border: 1px solid #dddddd; background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; color: #444444; }
+.player-ui .ui-widget-content a { color: #444444; }
+.player-ui .ui-widget-header { border: 1px solid #dddddd; background: #dddddd url(images/ui-bg_highlight-soft_50_dddddd_1x100.png) 50% 50% repeat-x; color: #444444; font-weight: bold; }
+.player-ui .ui-widget-header a { color: #444444; }
+
+/* Interaction states
+----------------------------------*/
+.player-ui .ui-state-default, .player-ui .ui-widget-content .ui-state-default, .player-ui .ui-widget-header .ui-state-default { border: 1px solid #dddddd; background: #f6f6f6 url(images/ui-bg_highlight-soft_100_f6f6f6_1x100.png) 50% 50% repeat-x; font-weight: bold; color: #0073ea; }
+.player-ui .ui-state-default a, .player-ui .ui-state-default a:link, .player-ui .ui-state-default a:visited { color: #0073ea; text-decoration: none; }
+.player-ui .ui-state-hover, .player-ui .ui-widget-content .ui-state-hover, .player-ui .ui-widget-header .ui-state-hover, .player-ui .ui-state-focus, .player-ui .ui-widget-content .ui-state-focus, .player-ui .ui-widget-header .ui-state-focus { border: 1px solid #0073ea; background: #0073ea url(images/ui-bg_highlight-soft_25_0073ea_1x100.png) 50% 50% repeat-x; font-weight: bold; color: #ffffff; }
+.player-ui .ui-state-hover a, .player-ui .ui-state-hover a:hover { color: #ffffff; text-decoration: none; }
+.player-ui .ui-state-active, .player-ui .ui-widget-content .ui-state-active, .player-ui .ui-widget-header .ui-state-active { border: 1px solid #dddddd; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #ff0084; }
+.player-ui .ui-state-active a, .player-ui .ui-state-active a:link, .player-ui .ui-state-active a:visited { color: #ff0084; text-decoration: none; }
+.player-ui .ui-widget :active { outline: none; }
+
+/* Interaction Cues
+----------------------------------*/
+.player-ui .ui-state-highlight, .player-ui .ui-widget-content .ui-state-highlight, .player-ui .ui-widget-header .ui-state-highlight  {border: 1px solid #cccccc; background: #ffffff url(images/ui-bg_flat_55_ffffff_40x100.png) 50% 50% repeat-x; color: #444444; }
+.player-ui .ui-state-highlight a, .player-ui .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #444444; }
+.player-ui .ui-state-error, .player-ui .ui-widget-content .ui-state-error, .player-ui .ui-widget-header .ui-state-error {border: 1px solid #ff0084; background: #ffffff url(images/ui-bg_flat_55_ffffff_40x100.png) 50% 50% repeat-x; color: #222222; }
+.player-ui .ui-state-error a, .player-ui .ui-widget-content .ui-state-error a, .player-ui .ui-widget-header .ui-state-error a { color: #222222; }
+.player-ui .ui-state-error-text, .player-ui .ui-widget-content .ui-state-error-text, .player-ui .ui-widget-header .ui-state-error-text { color: #222222; }
+.player-ui .ui-priority-primary, .player-ui .ui-widget-content .ui-priority-primary, .player-ui .ui-widget-header .ui-priority-primary { font-weight: bold; }
+.player-ui .ui-priority-secondary, .player-ui .ui-widget-content .ui-priority-secondary,  .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
+.player-ui .ui-state-disabled, .player-ui .ui-widget-content .ui-state-disabled, .player-ui .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.player-ui .ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_ff0084_256x240.png); }
+.player-ui .ui-widget-content .ui-icon {background-image: url(images/ui-icons_ff0084_256x240.png); }
+.player-ui .ui-widget-header .ui-icon {background-image: url(images/ui-icons_0073ea_256x240.png); }
+.player-ui .ui-state-default .ui-icon { background-image: url(images/ui-icons_666666_256x240.png); }
+.player-ui .ui-state-hover .ui-icon, .player-ui .ui-state-focus .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); }
+.player-ui .ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
+.player-ui .ui-state-highlight .ui-icon {background-image: url(images/ui-icons_0073ea_256x240.png); }
+.player-ui .ui-state-error .ui-icon, .player-ui .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_ff0084_256x240.png); }
+
+/* positioning */
+.player-ui .ui-icon-carat-1-n { background-position: 0 0; }
+.player-ui .ui-icon-carat-1-ne { background-position: -16px 0; }
+.player-ui .ui-icon-carat-1-e { background-position: -32px 0; }
+.player-ui .ui-icon-carat-1-se { background-position: -48px 0; }
+.player-ui .ui-icon-carat-1-s { background-position: -64px 0; }
+.player-ui .ui-icon-carat-1-sw { background-position: -80px 0; }
+.player-ui .ui-icon-carat-1-w { background-position: -96px 0; }
+.player-ui .ui-icon-carat-1-nw { background-position: -112px 0; }
+.player-ui .ui-icon-carat-2-n-s { background-position: -128px 0; }
+.player-ui .ui-icon-carat-2-e-w { background-position: -144px 0; }
+.player-ui .ui-icon-triangle-1-n { background-position: 0 -16px; }
+.player-ui .ui-icon-triangle-1-ne { background-position: -16px -16px; }
+.player-ui .ui-icon-triangle-1-e { background-position: -32px -16px; }
+.player-ui .ui-icon-triangle-1-se { background-position: -48px -16px; }
+.player-ui .ui-icon-triangle-1-s { background-position: -64px -16px; }
+.player-ui .ui-icon-triangle-1-sw { background-position: -80px -16px; }
+.player-ui .ui-icon-triangle-1-w { background-position: -96px -16px; }
+.player-ui .ui-icon-triangle-1-nw { background-position: -112px -16px; }
+.player-ui .ui-icon-triangle-2-n-s { background-position: -128px -16px; }
+.player-ui .ui-icon-triangle-2-e-w { background-position: -144px -16px; }
+.player-ui .ui-icon-arrow-1-n { background-position: 0 -32px; }
+.player-ui .ui-icon-arrow-1-ne { background-position: -16px -32px; }
+.player-ui .ui-icon-arrow-1-e { background-position: -32px -32px; }
+.player-ui .ui-icon-arrow-1-se { background-position: -48px -32px; }
+.player-ui .ui-icon-arrow-1-s { background-position: -64px -32px; }
+.player-ui .ui-icon-arrow-1-sw { background-position: -80px -32px; }
+.player-ui .ui-icon-arrow-1-w { background-position: -96px -32px; }
+.player-ui .ui-icon-arrow-1-nw { background-position: -112px -32px; }
+.player-ui .ui-icon-arrow-2-n-s { background-position: -128px -32px; }
+.player-ui .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
+.player-ui .ui-icon-arrow-2-e-w { background-position: -160px -32px; }
+.player-ui .ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
+.player-ui .ui-icon-arrowstop-1-n { background-position: -192px -32px; }
+.player-ui .ui-icon-arrowstop-1-e { background-position: -208px -32px; }
+.player-ui .ui-icon-arrowstop-1-s { background-position: -224px -32px; }
+.player-ui .ui-icon-arrowstop-1-w { background-position: -240px -32px; }
+.player-ui .ui-icon-arrowthick-1-n { background-position: 0 -48px; }
+.player-ui .ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
+.player-ui .ui-icon-arrowthick-1-e { background-position: -32px -48px; }
+.player-ui .ui-icon-arrowthick-1-se { background-position: -48px -48px; }
+.player-ui .ui-icon-arrowthick-1-s { background-position: -64px -48px; }
+.player-ui .ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
+.player-ui .ui-icon-arrowthick-1-w { background-position: -96px -48px; }
+.player-ui .ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
+.player-ui .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
+.player-ui .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
+.player-ui .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
+.player-ui .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
+.player-ui .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
+.player-ui .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
+.player-ui .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
+.player-ui .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
+.player-ui .ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
+.player-ui .ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
+.player-ui .ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
+.player-ui .ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
+.player-ui .ui-icon-arrow-4 { background-position: 0 -80px; }
+.player-ui .ui-icon-arrow-4-diag { background-position: -16px -80px; }
+.player-ui .ui-icon-extlink { background-position: -32px -80px; }
+.player-ui .ui-icon-newwin { background-position: -48px -80px; }
+.player-ui .ui-icon-refresh { background-position: -64px -80px; }
+.player-ui .ui-icon-shuffle { background-position: -80px -80px; }
+.player-ui .ui-icon-transfer-e-w { background-position: -96px -80px; }
+.player-ui .ui-icon-transferthick-e-w { background-position: -112px -80px; }
+.player-ui .ui-icon-folder-collapsed { background-position: 0 -96px; }
+.player-ui .ui-icon-folder-open { background-position: -16px -96px; }
+.player-ui .ui-icon-document { background-position: -32px -96px; }
+.player-ui .ui-icon-document-b { background-position: -48px -96px; }
+.player-ui .ui-icon-note { background-position: -64px -96px; }
+.player-ui .ui-icon-mail-closed { background-position: -80px -96px; }
+.player-ui .ui-icon-mail-open { background-position: -96px -96px; }
+.player-ui .ui-icon-suitcase { background-position: -112px -96px; }
+.player-ui .ui-icon-comment { background-position: -128px -96px; }
+.player-ui .ui-icon-person { background-position: -144px -96px; }
+.player-ui .ui-icon-print { background-position: -160px -96px; }
+.player-ui .ui-icon-trash { background-position: -176px -96px; }
+.player-ui .ui-icon-locked { background-position: -192px -96px; }
+.player-ui .ui-icon-unlocked { background-position: -208px -96px; }
+.player-ui .ui-icon-bookmark { background-position: -224px -96px; }
+.player-ui .ui-icon-tag { background-position: -240px -96px; }
+.player-ui .ui-icon-home { background-position: 0 -112px; }
+.player-ui .ui-icon-flag { background-position: -16px -112px; }
+.player-ui .ui-icon-calendar { background-position: -32px -112px; }
+.player-ui .ui-icon-cart { background-position: -48px -112px; }
+.player-ui .ui-icon-pencil { background-position: -64px -112px; }
+.player-ui .ui-icon-clock { background-position: -80px -112px; }
+.player-ui .ui-icon-disk { background-position: -96px -112px; }
+.player-ui .ui-icon-calculator { background-position: -112px -112px; }
+.player-ui .ui-icon-zoomin { background-position: -128px -112px; }
+.player-ui .ui-icon-zoomout { background-position: -144px -112px; }
+.player-ui .ui-icon-search { background-position: -160px -112px; }
+.player-ui .ui-icon-wrench { background-position: -176px -112px; }
+.player-ui .ui-icon-gear { background-position: -192px -112px; }
+.player-ui .ui-icon-heart { background-position: -208px -112px; }
+.player-ui .ui-icon-star { background-position: -224px -112px; }
+.player-ui .ui-icon-link { background-position: -240px -112px; }
+.player-ui .ui-icon-cancel { background-position: 0 -128px; }
+.player-ui .ui-icon-plus { background-position: -16px -128px; }
+.player-ui .ui-icon-plusthick { background-position: -32px -128px; }
+.player-ui .ui-icon-minus { background-position: -48px -128px; }
+.player-ui .ui-icon-minusthick { background-position: -64px -128px; }
+.player-ui .ui-icon-close { background-position: -80px -128px; }
+.player-ui .ui-icon-closethick { background-position: -96px -128px; }
+.player-ui .ui-icon-key { background-position: -112px -128px; }
+.player-ui .ui-icon-lightbulb { background-position: -128px -128px; }
+.player-ui .ui-icon-scissors { background-position: -144px -128px; }
+.player-ui .ui-icon-clipboard { background-position: -160px -128px; }
+.player-ui .ui-icon-copy { background-position: -176px -128px; }
+.player-ui .ui-icon-contact { background-position: -192px -128px; }
+.player-ui .ui-icon-image { background-position: -208px -128px; }
+.player-ui .ui-icon-video { background-position: -224px -128px; }
+.player-ui .ui-icon-script { background-position: -240px -128px; }
+.player-ui .ui-icon-alert { background-position: 0 -144px; }
+.player-ui .ui-icon-info { background-position: -16px -144px; }
+.player-ui .ui-icon-notice { background-position: -32px -144px; }
+.player-ui .ui-icon-help { background-position: -48px -144px; }
+.player-ui .ui-icon-check { background-position: -64px -144px; }
+.player-ui .ui-icon-bullet { background-position: -80px -144px; }
+.player-ui .ui-icon-radio-off { background-position: -96px -144px; }
+.player-ui .ui-icon-radio-on { background-position: -112px -144px; }
+.player-ui .ui-icon-pin-w { background-position: -128px -144px; }
+.player-ui .ui-icon-pin-s { background-position: -144px -144px; }
+.player-ui .ui-icon-play { background-position: 0 -160px; }
+.player-ui .ui-icon-pause { background-position: -16px -160px; }
+.player-ui .ui-icon-seek-next { background-position: -32px -160px; }
+.player-ui .ui-icon-seek-prev { background-position: -48px -160px; }
+.player-ui .ui-icon-seek-end { background-position: -64px -160px; }
+.player-ui .ui-icon-seek-start { background-position: -80px -160px; }
+/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
+.player-ui .ui-icon-seek-first { background-position: -80px -160px; }
+.player-ui .ui-icon-stop { background-position: -96px -160px; }
+.player-ui .ui-icon-eject { background-position: -112px -160px; }
+.player-ui .ui-icon-volume-off { background-position: -128px -160px; }
+.player-ui .ui-icon-volume-on { background-position: -144px -160px; }
+.player-ui .ui-icon-power { background-position: 0 -176px; }
+.player-ui .ui-icon-signal-diag { background-position: -16px -176px; }
+.player-ui .ui-icon-signal { background-position: -32px -176px; }
+.player-ui .ui-icon-battery-0 { background-position: -48px -176px; }
+.player-ui .ui-icon-battery-1 { background-position: -64px -176px; }
+.player-ui .ui-icon-battery-2 { background-position: -80px -176px; }
+.player-ui .ui-icon-battery-3 { background-position: -96px -176px; }
+.player-ui .ui-icon-circle-plus { background-position: 0 -192px; }
+.player-ui .ui-icon-circle-minus { background-position: -16px -192px; }
+.player-ui .ui-icon-circle-close { background-position: -32px -192px; }
+.player-ui .ui-icon-circle-triangle-e { background-position: -48px -192px; }
+.player-ui .ui-icon-circle-triangle-s { background-position: -64px -192px; }
+.player-ui .ui-icon-circle-triangle-w { background-position: -80px -192px; }
+.player-ui .ui-icon-circle-triangle-n { background-position: -96px -192px; }
+.player-ui .ui-icon-circle-arrow-e { background-position: -112px -192px; }
+.player-ui .ui-icon-circle-arrow-s { background-position: -128px -192px; }
+.player-ui .ui-icon-circle-arrow-w { background-position: -144px -192px; }
+.player-ui .ui-icon-circle-arrow-n { background-position: -160px -192px; }
+.player-ui .ui-icon-circle-zoomin { background-position: -176px -192px; }
+.player-ui .ui-icon-circle-zoomout { background-position: -192px -192px; }
+.player-ui .ui-icon-circle-check { background-position: -208px -192px; }
+.player-ui .ui-icon-circlesmall-plus { background-position: 0 -208px; }
+.player-ui .ui-icon-circlesmall-minus { background-position: -16px -208px; }
+.player-ui .ui-icon-circlesmall-close { background-position: -32px -208px; }
+.player-ui .ui-icon-squaresmall-plus { background-position: -48px -208px; }
+.player-ui .ui-icon-squaresmall-minus { background-position: -64px -208px; }
+.player-ui .ui-icon-squaresmall-close { background-position: -80px -208px; }
+.player-ui .ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
+.player-ui .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
+.player-ui .ui-icon-grip-solid-vertical { background-position: -32px -224px; }
+.player-ui .ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
+.player-ui .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
+.player-ui .ui-icon-grip-diagonal-se { background-position: -80px -224px; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Corner radius */
+.player-ui .ui-corner-all, .player-ui .ui-corner-top, .player-ui .ui-corner-left, .player-ui .ui-corner-tl { -moz-border-radius-topleft: 2px; -webkit-border-top-left-radius: 2px; -khtml-border-top-left-radius: 2px; border-top-left-radius: 2px; }
+.player-ui .ui-corner-all, .player-ui .ui-corner-top, .player-ui .ui-corner-right, .player-ui .ui-corner-tr { -moz-border-radius-topright: 2px; -webkit-border-top-right-radius: 2px; -khtml-border-top-right-radius: 2px; border-top-right-radius: 2px; }
+.player-ui .ui-corner-all, .player-ui .ui-corner-bottom, .player-ui .ui-corner-left, .player-ui .ui-corner-bl { -moz-border-radius-bottomleft: 2px; -webkit-border-bottom-left-radius: 2px; -khtml-border-bottom-left-radius: 2px; border-bottom-left-radius: 2px; }
+.player-ui .ui-corner-all, .player-ui .ui-corner-bottom, .player-ui .ui-corner-right, .player-ui .ui-corner-br { -moz-border-radius-bottomright: 2px; -webkit-border-bottom-right-radius: 2px; -khtml-border-bottom-right-radius: 2px; border-bottom-right-radius: 2px; }
+
+/* Overlays */
+.player-ui .ui-widget-overlay { background: #eeeeee url(images/ui-bg_flat_0_eeeeee_40x100.png) 50% 50% repeat-x; opacity: .80;filter:Alpha(Opacity=80); }
+.player-ui .ui-widget-shadow { margin: -4px 0 0 -4px; padding: 4px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .60;filter:Alpha(Opacity=60); -moz-border-radius: 0px; -khtml-border-radius: 0px; -webkit-border-radius: 0px; border-radius: 0px; }/*
+ * jQuery UI Resizable 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Resizable#theming
+ */
+.player-ui .ui-resizable { position: relative;}
+.player-ui .ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block; }
+.player-ui .ui-resizable-disabled .ui-resizable-handle, .player-ui .ui-resizable-autohide .ui-resizable-handle { display: none; }
+.player-ui .ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
+.player-ui .ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
+.player-ui .ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
+.player-ui .ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
+.player-ui .ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
+.player-ui .ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
+.player-ui .ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
+.player-ui .ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/*
+ * jQuery UI Selectable 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Selectable#theming
+ */
+.player-ui .ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }
+/*
+ * jQuery UI Accordion 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Accordion#theming
+ */
+/* IE/Win - Fix animation bug - #4615 */
+.player-ui .ui-accordion { width: 100%; }
+.player-ui .ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
+.player-ui .ui-accordion .ui-accordion-li-fix { display: inline; }
+.player-ui .ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
+.player-ui .ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; }
+.player-ui .ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; }
+.player-ui .ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
+.player-ui .ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; }
+.player-ui .ui-accordion .ui-accordion-content-active { display: block; }
+/*
+ * jQuery UI Autocomplete 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Autocomplete#theming
+ */
+.player-ui .ui-autocomplete { position: absolute; cursor: default; }	
+
+/* workarounds */
+* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
+
+/*
+ * jQuery UI Menu 1.8.18
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Menu#theming
+ */
+.player-ui .ui-menu {
+	list-style:none;
+	padding: 2px;
+	margin: 0;
+	display:block;
+	float: left;
+}
+.player-ui .ui-menu .ui-menu {
+	margin-top: -3px;
+}
+.player-ui .ui-menu .ui-menu-item {
+	margin:0;
+	padding: 0;
+	zoom: 1;
+	float: left;
+	clear: left;
+	width: 100%;
+}
+.player-ui .ui-menu .ui-menu-item a {
+	text-decoration:none;
+	display:block;
+	padding:.2em .4em;
+	line-height:1.5;
+	zoom:1;
+}
+.player-ui .ui-menu .ui-menu-item a.ui-state-hover,
+.player-ui .ui-menu .ui-menu-item a.ui-state-active {
+	font-weight: normal;
+	margin: -1px;
+}
+/*
+ * jQuery UI Button 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Button#theming
+ */
+.player-ui .ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: hidden; *overflow: visible; } /* the overflow property removes extra width in IE */
+.player-ui .ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
+button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
+.player-ui .ui-button-icons-only { width: 3.4em; } 
+button.ui-button-icons-only { width: 3.7em; } 
+
+/*button text element */
+.player-ui .ui-button .ui-button-text { display: block; line-height: 1.4;  }
+.player-ui .ui-button-text-only .ui-button-text { padding: .4em 1em; }
+.player-ui .ui-button-icon-only .ui-button-text, .player-ui .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
+.player-ui .ui-button-text-icon-primary .ui-button-text, .player-ui .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
+.player-ui .ui-button-text-icon-secondary .ui-button-text, .player-ui .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }
+.player-ui .ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }
+/* no icon support for input elements, provide padding by default */
+input.ui-button { padding: .4em 1em; }
+
+/*button icon element(s) */
+.player-ui .ui-button-icon-only .ui-icon, .player-ui .ui-button-text-icon-primary .ui-icon, .player-ui .ui-button-text-icon-secondary .ui-icon, .player-ui .ui-button-text-icons .ui-icon, .player-ui .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
+.player-ui .ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
+.player-ui .ui-button-text-icon-primary .ui-button-icon-primary, .player-ui .ui-button-text-icons .ui-button-icon-primary, .player-ui .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
+.player-ui .ui-button-text-icon-secondary .ui-button-icon-secondary, .player-ui .ui-button-text-icons .ui-button-icon-secondary, .player-ui .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
+.player-ui .ui-button-text-icons .ui-button-icon-secondary, .player-ui .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
+
+/*button sets*/
+.player-ui .ui-buttonset { margin-right: 7px; }
+.player-ui .ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }
+
+/* workarounds */
+button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
+/*
+ * jQuery UI Dialog 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Dialog#theming
+ */
+.player-ui .ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; }
+.player-ui .ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative;  }
+.player-ui .ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; } 
+.player-ui .ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
+.player-ui .ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
+.player-ui .ui-dialog .ui-dialog-titlebar-close:hover, .player-ui .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
+.player-ui .ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
+.player-ui .ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
+.player-ui .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
+.player-ui .ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
+.player-ui .ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
+.player-ui .ui-draggable .ui-dialog-titlebar { cursor: move; }
+/*
+ * jQuery UI Slider 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Slider#theming
+ */
+.player-ui .ui-slider { position: relative; text-align: left; }
+.player-ui .ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
+.player-ui .ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
+
+.player-ui .ui-slider-horizontal { height: .8em; }
+.player-ui .ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
+.player-ui .ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
+.player-ui .ui-slider-horizontal .ui-slider-range-min { left: 0; }
+.player-ui .ui-slider-horizontal .ui-slider-range-max { right: 0; }
+
+.player-ui .ui-slider-vertical { width: .8em; height: 100px; }
+.player-ui .ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
+.player-ui .ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
+.player-ui .ui-slider-vertical .ui-slider-range-min { bottom: 0; }
+.player-ui .ui-slider-vertical .ui-slider-range-max { top: 0; }/*
+ * jQuery UI Tabs 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Tabs#theming
+ */
+.player-ui .ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
+.player-ui .ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
+.player-ui .ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
+.player-ui .ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }
+.player-ui .ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; }
+.player-ui .ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .player-ui .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .player-ui .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
+.player-ui .ui-tabs .ui-tabs-nav li a, .player-ui .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
+.player-ui .ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }
+.player-ui .ui-tabs .ui-tabs-hide { display: none !important; }
+/*
+ * jQuery UI Datepicker 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Datepicker#theming
+ */
+.player-ui .ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }
+.player-ui .ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
+.player-ui .ui-datepicker .ui-datepicker-prev, .player-ui .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
+.player-ui .ui-datepicker .ui-datepicker-prev-hover, .player-ui .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
+.player-ui .ui-datepicker .ui-datepicker-prev { left:2px; }
+.player-ui .ui-datepicker .ui-datepicker-next { right:2px; }
+.player-ui .ui-datepicker .ui-datepicker-prev-hover { left:1px; }
+.player-ui .ui-datepicker .ui-datepicker-next-hover { right:1px; }
+.player-ui .ui-datepicker .ui-datepicker-prev span, .player-ui .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px;  }
+.player-ui .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
+.player-ui .ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
+.player-ui .ui-datepicker select.ui-datepicker-month-year {width: 100%;}
+.player-ui .ui-datepicker select.ui-datepicker-month, 
+.player-ui .ui-datepicker select.ui-datepicker-year { width: 49%;}
+.player-ui .ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
+.player-ui .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0;  }
+.player-ui .ui-datepicker td { border: 0; padding: 1px; }
+.player-ui .ui-datepicker td span, .player-ui .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
+.player-ui .ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
+.player-ui .ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
+.player-ui .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
+
+/* with multiple calendars */
+.player-ui .ui-datepicker.ui-datepicker-multi { width:auto; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group { float:left; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
+.player-ui .ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
+.player-ui .ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
+.player-ui .ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
+.player-ui .ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
+.player-ui .ui-datepicker-row-break { clear:both; width:100%; font-size:0em; }
+
+/* RTL support */
+.player-ui .ui-datepicker-rtl { direction: rtl; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-group { float:right; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+
+/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
+.player-ui .ui-datepicker-cover {
+    display: none; /*sorry for IE5*/
+    display/**/: block; /*sorry for IE5*/
+    position: absolute; /*must have*/
+    z-index: -1; /*must have*/
+    filter: mask(); /*must have*/
+    top: -4px; /*must have*/
+    left: -4px; /*must have*/
+    width: 200px; /*must have*/
+    height: 200px; /*must have*/
+}/*
+ * jQuery UI Progressbar 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Progressbar#theming
+ */
+.player-ui .ui-progressbar { height:2em; text-align: left; overflow: hidden; }
+.player-ui .ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/jquery-ui/hot-sneaks/images/ui-bg_diagonals-small_40_db4865_40x40.png b/public/admin/js/osmplayer/jquery-ui/hot-sneaks/images/ui-bg_diagonals-small_40_db4865_40x40.png
new file mode 100644
index 0000000000000000000000000000000000000000..8198e1d06d60ec3bf0624a1cdf8f04be2db49ded
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/hot-sneaks/images/ui-bg_diagonals-small_40_db4865_40x40.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/hot-sneaks/images/ui-bg_diagonals-small_50_93c3cd_40x40.png b/public/admin/js/osmplayer/jquery-ui/hot-sneaks/images/ui-bg_diagonals-small_50_93c3cd_40x40.png
new file mode 100644
index 0000000000000000000000000000000000000000..ba126df4725e0efa9ed46a149a3a07fc0a1a753e
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/hot-sneaks/images/ui-bg_diagonals-small_50_93c3cd_40x40.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/hot-sneaks/images/ui-bg_diagonals-small_50_ff3853_40x40.png b/public/admin/js/osmplayer/jquery-ui/hot-sneaks/images/ui-bg_diagonals-small_50_ff3853_40x40.png
new file mode 100644
index 0000000000000000000000000000000000000000..b355f96d299a9917b37ec454d0e0d25deff48f51
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/hot-sneaks/images/ui-bg_diagonals-small_50_ff3853_40x40.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/hot-sneaks/images/ui-bg_diagonals-small_75_ccd232_40x40.png b/public/admin/js/osmplayer/jquery-ui/hot-sneaks/images/ui-bg_diagonals-small_75_ccd232_40x40.png
new file mode 100644
index 0000000000000000000000000000000000000000..d83ecc0990f18ff31df94bcf00e33cd11897988a
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/hot-sneaks/images/ui-bg_diagonals-small_75_ccd232_40x40.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/hot-sneaks/images/ui-bg_dots-medium_80_ffff38_4x4.png b/public/admin/js/osmplayer/jquery-ui/hot-sneaks/images/ui-bg_dots-medium_80_ffff38_4x4.png
new file mode 100644
index 0000000000000000000000000000000000000000..bc6d0c737890df161b9a93154325d2f68dbce6b3
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/hot-sneaks/images/ui-bg_dots-medium_80_ffff38_4x4.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/hot-sneaks/images/ui-bg_dots-small_35_35414f_2x2.png b/public/admin/js/osmplayer/jquery-ui/hot-sneaks/images/ui-bg_dots-small_35_35414f_2x2.png
new file mode 100644
index 0000000000000000000000000000000000000000..db109df1675ad8b146a8cb976c7891aa68488cbd
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/hot-sneaks/images/ui-bg_dots-small_35_35414f_2x2.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/hot-sneaks/images/ui-bg_flat_75_ba9217_40x100.png b/public/admin/js/osmplayer/jquery-ui/hot-sneaks/images/ui-bg_flat_75_ba9217_40x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..446b43e192ccad0c9751f20e013cf07b746dbe01
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/hot-sneaks/images/ui-bg_flat_75_ba9217_40x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/hot-sneaks/images/ui-bg_flat_75_ffffff_40x100.png b/public/admin/js/osmplayer/jquery-ui/hot-sneaks/images/ui-bg_flat_75_ffffff_40x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..ac8b229af950c29356abf64a6c4aa894575445f0
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/hot-sneaks/images/ui-bg_flat_75_ffffff_40x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/hot-sneaks/images/ui-bg_white-lines_85_f7f7ba_40x100.png b/public/admin/js/osmplayer/jquery-ui/hot-sneaks/images/ui-bg_white-lines_85_f7f7ba_40x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..6cf17b2c0b742d3adac35f472372030b0ac23136
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/hot-sneaks/images/ui-bg_white-lines_85_f7f7ba_40x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/hot-sneaks/images/ui-icons_454545_256x240.png b/public/admin/js/osmplayer/jquery-ui/hot-sneaks/images/ui-icons_454545_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..59bd45b907c4fd965697774ce8c5fc6b2fd9c105
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/hot-sneaks/images/ui-icons_454545_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/hot-sneaks/images/ui-icons_88a206_256x240.png b/public/admin/js/osmplayer/jquery-ui/hot-sneaks/images/ui-icons_88a206_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..e2dde3a8cbcdc5eb10fbbc1e9260d6d138b55690
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/hot-sneaks/images/ui-icons_88a206_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/hot-sneaks/images/ui-icons_c02669_256x240.png b/public/admin/js/osmplayer/jquery-ui/hot-sneaks/images/ui-icons_c02669_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..946ad953f8c1811c7e7a9548f0c9af612594c239
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/hot-sneaks/images/ui-icons_c02669_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/hot-sneaks/images/ui-icons_e1e463_256x240.png b/public/admin/js/osmplayer/jquery-ui/hot-sneaks/images/ui-icons_e1e463_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..15af835f12046710c0b1ddb1ebdef115a2cae534
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/hot-sneaks/images/ui-icons_e1e463_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/hot-sneaks/images/ui-icons_ffeb33_256x240.png b/public/admin/js/osmplayer/jquery-ui/hot-sneaks/images/ui-icons_ffeb33_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..21ed77c197992b80025a068d1f3f8a0ce7a00e24
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/hot-sneaks/images/ui-icons_ffeb33_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/hot-sneaks/images/ui-icons_ffffff_256x240.png b/public/admin/js/osmplayer/jquery-ui/hot-sneaks/images/ui-icons_ffffff_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..42f8f992c727ddaa617da224a522e463df690387
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/hot-sneaks/images/ui-icons_ffffff_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/hot-sneaks/jquery-ui-1.8.18.custom.css b/public/admin/js/osmplayer/jquery-ui/hot-sneaks/jquery-ui-1.8.18.custom.css
new file mode 100644
index 0000000000000000000000000000000000000000..c0b56180c04de1eed17c357671c677154f88019b
--- /dev/null
+++ b/public/admin/js/osmplayer/jquery-ui/hot-sneaks/jquery-ui-1.8.18.custom.css
@@ -0,0 +1,565 @@
+/*
+ * jQuery UI CSS Framework 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ */
+
+/* Layout helpers
+----------------------------------*/
+.player-ui .ui-helper-hidden { display: none; }
+.player-ui .ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
+.player-ui .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
+.player-ui .ui-helper-clearfix:before, .player-ui .ui-helper-clearfix:after { content: ""; display: table; }
+.player-ui .ui-helper-clearfix:after { clear: both; }
+.player-ui .ui-helper-clearfix { zoom: 1; }
+.player-ui .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
+
+
+/* Interaction Cues
+----------------------------------*/
+.player-ui .ui-state-disabled { cursor: default !important; }
+
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.player-ui .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+.player-ui .ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
+
+
+/*
+ * jQuery UI CSS Framework 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ *
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Gill%20Sans,Arial,sans-serif&fwDefault=bold&fsDefault=1.2em&cornerRadius=4px&bgColorHeader=35414f&bgTextureHeader=09_dots_small.png&bgImgOpacityHeader=35&borderColorHeader=2c4359&fcHeader=e1e463&iconColorHeader=e1e463&bgColorContent=ffffff&bgTextureContent=01_flat.png&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=2c4359&iconColorContent=c02669&bgColorDefault=93c3cd&bgTextureDefault=07_diagonals_small.png&bgImgOpacityDefault=50&borderColorDefault=93c3cd&fcDefault=333333&iconColorDefault=ffffff&bgColorHover=ccd232&bgTextureHover=07_diagonals_small.png&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=db4865&bgTextureActive=07_diagonals_small.png&bgImgOpacityActive=40&borderColorActive=ff6b7f&fcActive=ffffff&iconColorActive=ffffff&bgColorHighlight=ffff38&bgTextureHighlight=10_dots_medium.png&bgImgOpacityHighlight=80&borderColorHighlight=b4d100&fcHighlight=363636&iconColorHighlight=88a206&bgColorError=ff3853&bgTextureError=07_diagonals_small.png&bgImgOpacityError=50&borderColorError=ff6b7f&fcError=ffffff&iconColorError=ffeb33&bgColorOverlay=f7f7ba&bgTextureOverlay=11_white_lines.png&bgImgOpacityOverlay=85&opacityOverlay=80&bgColorShadow=ba9217&bgTextureShadow=01_flat.png&bgImgOpacityShadow=75&opacityShadow=20&thicknessShadow=10px&offsetTopShadow=8px&offsetLeftShadow=8px&cornerRadiusShadow=5px
+ */
+
+
+/* Component containers
+----------------------------------*/
+.player-ui .ui-widget { font-family: Gill Sans,Arial,sans-serif; font-size: 1.2em; }
+.player-ui .ui-widget .ui-widget { font-size: 1em; }
+.player-ui .ui-widget input, .player-ui .ui-widget select, .player-ui .ui-widget textarea, .player-ui .ui-widget button { font-family: Gill Sans,Arial,sans-serif; font-size: 1em; }
+.player-ui .ui-widget-content { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; color: #2c4359; }
+.player-ui .ui-widget-content a { color: #2c4359; }
+.player-ui .ui-widget-header { border: 1px solid #2c4359; background: #35414f url(images/ui-bg_dots-small_35_35414f_2x2.png) 50% 50% repeat; color: #e1e463; font-weight: bold; }
+.player-ui .ui-widget-header a { color: #e1e463; }
+
+/* Interaction states
+----------------------------------*/
+.player-ui .ui-state-default, .player-ui .ui-widget-content .ui-state-default, .player-ui .ui-widget-header .ui-state-default { border: 1px solid #93c3cd; background: #93c3cd url(images/ui-bg_diagonals-small_50_93c3cd_40x40.png) 50% 50% repeat; font-weight: bold; color: #333333; }
+.player-ui .ui-state-default a, .player-ui .ui-state-default a:link, .player-ui .ui-state-default a:visited { color: #333333; text-decoration: none; }
+.player-ui .ui-state-hover, .player-ui .ui-widget-content .ui-state-hover, .player-ui .ui-widget-header .ui-state-hover, .player-ui .ui-state-focus, .player-ui .ui-widget-content .ui-state-focus, .player-ui .ui-widget-header .ui-state-focus { border: 1px solid #999999; background: #ccd232 url(images/ui-bg_diagonals-small_75_ccd232_40x40.png) 50% 50% repeat; font-weight: bold; color: #212121; }
+.player-ui .ui-state-hover a, .player-ui .ui-state-hover a:hover { color: #212121; text-decoration: none; }
+.player-ui .ui-state-active, .player-ui .ui-widget-content .ui-state-active, .player-ui .ui-widget-header .ui-state-active { border: 1px solid #ff6b7f; background: #db4865 url(images/ui-bg_diagonals-small_40_db4865_40x40.png) 50% 50% repeat; font-weight: bold; color: #ffffff; }
+.player-ui .ui-state-active a, .player-ui .ui-state-active a:link, .player-ui .ui-state-active a:visited { color: #ffffff; text-decoration: none; }
+.player-ui .ui-widget :active { outline: none; }
+
+/* Interaction Cues
+----------------------------------*/
+.player-ui .ui-state-highlight, .player-ui .ui-widget-content .ui-state-highlight, .player-ui .ui-widget-header .ui-state-highlight  {border: 1px solid #b4d100; background: #ffff38 url(images/ui-bg_dots-medium_80_ffff38_4x4.png) 50% 50% repeat; color: #363636; }
+.player-ui .ui-state-highlight a, .player-ui .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
+.player-ui .ui-state-error, .player-ui .ui-widget-content .ui-state-error, .player-ui .ui-widget-header .ui-state-error {border: 1px solid #ff6b7f; background: #ff3853 url(images/ui-bg_diagonals-small_50_ff3853_40x40.png) 50% 50% repeat; color: #ffffff; }
+.player-ui .ui-state-error a, .player-ui .ui-widget-content .ui-state-error a, .player-ui .ui-widget-header .ui-state-error a { color: #ffffff; }
+.player-ui .ui-state-error-text, .player-ui .ui-widget-content .ui-state-error-text, .player-ui .ui-widget-header .ui-state-error-text { color: #ffffff; }
+.player-ui .ui-priority-primary, .player-ui .ui-widget-content .ui-priority-primary, .player-ui .ui-widget-header .ui-priority-primary { font-weight: bold; }
+.player-ui .ui-priority-secondary, .player-ui .ui-widget-content .ui-priority-secondary,  .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
+.player-ui .ui-state-disabled, .player-ui .ui-widget-content .ui-state-disabled, .player-ui .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.player-ui .ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_c02669_256x240.png); }
+.player-ui .ui-widget-content .ui-icon {background-image: url(images/ui-icons_c02669_256x240.png); }
+.player-ui .ui-widget-header .ui-icon {background-image: url(images/ui-icons_e1e463_256x240.png); }
+.player-ui .ui-state-default .ui-icon { background-image: url(images/ui-icons_ffffff_256x240.png); }
+.player-ui .ui-state-hover .ui-icon, .player-ui .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
+.player-ui .ui-state-active .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); }
+.player-ui .ui-state-highlight .ui-icon {background-image: url(images/ui-icons_88a206_256x240.png); }
+.player-ui .ui-state-error .ui-icon, .player-ui .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_ffeb33_256x240.png); }
+
+/* positioning */
+.player-ui .ui-icon-carat-1-n { background-position: 0 0; }
+.player-ui .ui-icon-carat-1-ne { background-position: -16px 0; }
+.player-ui .ui-icon-carat-1-e { background-position: -32px 0; }
+.player-ui .ui-icon-carat-1-se { background-position: -48px 0; }
+.player-ui .ui-icon-carat-1-s { background-position: -64px 0; }
+.player-ui .ui-icon-carat-1-sw { background-position: -80px 0; }
+.player-ui .ui-icon-carat-1-w { background-position: -96px 0; }
+.player-ui .ui-icon-carat-1-nw { background-position: -112px 0; }
+.player-ui .ui-icon-carat-2-n-s { background-position: -128px 0; }
+.player-ui .ui-icon-carat-2-e-w { background-position: -144px 0; }
+.player-ui .ui-icon-triangle-1-n { background-position: 0 -16px; }
+.player-ui .ui-icon-triangle-1-ne { background-position: -16px -16px; }
+.player-ui .ui-icon-triangle-1-e { background-position: -32px -16px; }
+.player-ui .ui-icon-triangle-1-se { background-position: -48px -16px; }
+.player-ui .ui-icon-triangle-1-s { background-position: -64px -16px; }
+.player-ui .ui-icon-triangle-1-sw { background-position: -80px -16px; }
+.player-ui .ui-icon-triangle-1-w { background-position: -96px -16px; }
+.player-ui .ui-icon-triangle-1-nw { background-position: -112px -16px; }
+.player-ui .ui-icon-triangle-2-n-s { background-position: -128px -16px; }
+.player-ui .ui-icon-triangle-2-e-w { background-position: -144px -16px; }
+.player-ui .ui-icon-arrow-1-n { background-position: 0 -32px; }
+.player-ui .ui-icon-arrow-1-ne { background-position: -16px -32px; }
+.player-ui .ui-icon-arrow-1-e { background-position: -32px -32px; }
+.player-ui .ui-icon-arrow-1-se { background-position: -48px -32px; }
+.player-ui .ui-icon-arrow-1-s { background-position: -64px -32px; }
+.player-ui .ui-icon-arrow-1-sw { background-position: -80px -32px; }
+.player-ui .ui-icon-arrow-1-w { background-position: -96px -32px; }
+.player-ui .ui-icon-arrow-1-nw { background-position: -112px -32px; }
+.player-ui .ui-icon-arrow-2-n-s { background-position: -128px -32px; }
+.player-ui .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
+.player-ui .ui-icon-arrow-2-e-w { background-position: -160px -32px; }
+.player-ui .ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
+.player-ui .ui-icon-arrowstop-1-n { background-position: -192px -32px; }
+.player-ui .ui-icon-arrowstop-1-e { background-position: -208px -32px; }
+.player-ui .ui-icon-arrowstop-1-s { background-position: -224px -32px; }
+.player-ui .ui-icon-arrowstop-1-w { background-position: -240px -32px; }
+.player-ui .ui-icon-arrowthick-1-n { background-position: 0 -48px; }
+.player-ui .ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
+.player-ui .ui-icon-arrowthick-1-e { background-position: -32px -48px; }
+.player-ui .ui-icon-arrowthick-1-se { background-position: -48px -48px; }
+.player-ui .ui-icon-arrowthick-1-s { background-position: -64px -48px; }
+.player-ui .ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
+.player-ui .ui-icon-arrowthick-1-w { background-position: -96px -48px; }
+.player-ui .ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
+.player-ui .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
+.player-ui .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
+.player-ui .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
+.player-ui .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
+.player-ui .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
+.player-ui .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
+.player-ui .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
+.player-ui .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
+.player-ui .ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
+.player-ui .ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
+.player-ui .ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
+.player-ui .ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
+.player-ui .ui-icon-arrow-4 { background-position: 0 -80px; }
+.player-ui .ui-icon-arrow-4-diag { background-position: -16px -80px; }
+.player-ui .ui-icon-extlink { background-position: -32px -80px; }
+.player-ui .ui-icon-newwin { background-position: -48px -80px; }
+.player-ui .ui-icon-refresh { background-position: -64px -80px; }
+.player-ui .ui-icon-shuffle { background-position: -80px -80px; }
+.player-ui .ui-icon-transfer-e-w { background-position: -96px -80px; }
+.player-ui .ui-icon-transferthick-e-w { background-position: -112px -80px; }
+.player-ui .ui-icon-folder-collapsed { background-position: 0 -96px; }
+.player-ui .ui-icon-folder-open { background-position: -16px -96px; }
+.player-ui .ui-icon-document { background-position: -32px -96px; }
+.player-ui .ui-icon-document-b { background-position: -48px -96px; }
+.player-ui .ui-icon-note { background-position: -64px -96px; }
+.player-ui .ui-icon-mail-closed { background-position: -80px -96px; }
+.player-ui .ui-icon-mail-open { background-position: -96px -96px; }
+.player-ui .ui-icon-suitcase { background-position: -112px -96px; }
+.player-ui .ui-icon-comment { background-position: -128px -96px; }
+.player-ui .ui-icon-person { background-position: -144px -96px; }
+.player-ui .ui-icon-print { background-position: -160px -96px; }
+.player-ui .ui-icon-trash { background-position: -176px -96px; }
+.player-ui .ui-icon-locked { background-position: -192px -96px; }
+.player-ui .ui-icon-unlocked { background-position: -208px -96px; }
+.player-ui .ui-icon-bookmark { background-position: -224px -96px; }
+.player-ui .ui-icon-tag { background-position: -240px -96px; }
+.player-ui .ui-icon-home { background-position: 0 -112px; }
+.player-ui .ui-icon-flag { background-position: -16px -112px; }
+.player-ui .ui-icon-calendar { background-position: -32px -112px; }
+.player-ui .ui-icon-cart { background-position: -48px -112px; }
+.player-ui .ui-icon-pencil { background-position: -64px -112px; }
+.player-ui .ui-icon-clock { background-position: -80px -112px; }
+.player-ui .ui-icon-disk { background-position: -96px -112px; }
+.player-ui .ui-icon-calculator { background-position: -112px -112px; }
+.player-ui .ui-icon-zoomin { background-position: -128px -112px; }
+.player-ui .ui-icon-zoomout { background-position: -144px -112px; }
+.player-ui .ui-icon-search { background-position: -160px -112px; }
+.player-ui .ui-icon-wrench { background-position: -176px -112px; }
+.player-ui .ui-icon-gear { background-position: -192px -112px; }
+.player-ui .ui-icon-heart { background-position: -208px -112px; }
+.player-ui .ui-icon-star { background-position: -224px -112px; }
+.player-ui .ui-icon-link { background-position: -240px -112px; }
+.player-ui .ui-icon-cancel { background-position: 0 -128px; }
+.player-ui .ui-icon-plus { background-position: -16px -128px; }
+.player-ui .ui-icon-plusthick { background-position: -32px -128px; }
+.player-ui .ui-icon-minus { background-position: -48px -128px; }
+.player-ui .ui-icon-minusthick { background-position: -64px -128px; }
+.player-ui .ui-icon-close { background-position: -80px -128px; }
+.player-ui .ui-icon-closethick { background-position: -96px -128px; }
+.player-ui .ui-icon-key { background-position: -112px -128px; }
+.player-ui .ui-icon-lightbulb { background-position: -128px -128px; }
+.player-ui .ui-icon-scissors { background-position: -144px -128px; }
+.player-ui .ui-icon-clipboard { background-position: -160px -128px; }
+.player-ui .ui-icon-copy { background-position: -176px -128px; }
+.player-ui .ui-icon-contact { background-position: -192px -128px; }
+.player-ui .ui-icon-image { background-position: -208px -128px; }
+.player-ui .ui-icon-video { background-position: -224px -128px; }
+.player-ui .ui-icon-script { background-position: -240px -128px; }
+.player-ui .ui-icon-alert { background-position: 0 -144px; }
+.player-ui .ui-icon-info { background-position: -16px -144px; }
+.player-ui .ui-icon-notice { background-position: -32px -144px; }
+.player-ui .ui-icon-help { background-position: -48px -144px; }
+.player-ui .ui-icon-check { background-position: -64px -144px; }
+.player-ui .ui-icon-bullet { background-position: -80px -144px; }
+.player-ui .ui-icon-radio-off { background-position: -96px -144px; }
+.player-ui .ui-icon-radio-on { background-position: -112px -144px; }
+.player-ui .ui-icon-pin-w { background-position: -128px -144px; }
+.player-ui .ui-icon-pin-s { background-position: -144px -144px; }
+.player-ui .ui-icon-play { background-position: 0 -160px; }
+.player-ui .ui-icon-pause { background-position: -16px -160px; }
+.player-ui .ui-icon-seek-next { background-position: -32px -160px; }
+.player-ui .ui-icon-seek-prev { background-position: -48px -160px; }
+.player-ui .ui-icon-seek-end { background-position: -64px -160px; }
+.player-ui .ui-icon-seek-start { background-position: -80px -160px; }
+/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
+.player-ui .ui-icon-seek-first { background-position: -80px -160px; }
+.player-ui .ui-icon-stop { background-position: -96px -160px; }
+.player-ui .ui-icon-eject { background-position: -112px -160px; }
+.player-ui .ui-icon-volume-off { background-position: -128px -160px; }
+.player-ui .ui-icon-volume-on { background-position: -144px -160px; }
+.player-ui .ui-icon-power { background-position: 0 -176px; }
+.player-ui .ui-icon-signal-diag { background-position: -16px -176px; }
+.player-ui .ui-icon-signal { background-position: -32px -176px; }
+.player-ui .ui-icon-battery-0 { background-position: -48px -176px; }
+.player-ui .ui-icon-battery-1 { background-position: -64px -176px; }
+.player-ui .ui-icon-battery-2 { background-position: -80px -176px; }
+.player-ui .ui-icon-battery-3 { background-position: -96px -176px; }
+.player-ui .ui-icon-circle-plus { background-position: 0 -192px; }
+.player-ui .ui-icon-circle-minus { background-position: -16px -192px; }
+.player-ui .ui-icon-circle-close { background-position: -32px -192px; }
+.player-ui .ui-icon-circle-triangle-e { background-position: -48px -192px; }
+.player-ui .ui-icon-circle-triangle-s { background-position: -64px -192px; }
+.player-ui .ui-icon-circle-triangle-w { background-position: -80px -192px; }
+.player-ui .ui-icon-circle-triangle-n { background-position: -96px -192px; }
+.player-ui .ui-icon-circle-arrow-e { background-position: -112px -192px; }
+.player-ui .ui-icon-circle-arrow-s { background-position: -128px -192px; }
+.player-ui .ui-icon-circle-arrow-w { background-position: -144px -192px; }
+.player-ui .ui-icon-circle-arrow-n { background-position: -160px -192px; }
+.player-ui .ui-icon-circle-zoomin { background-position: -176px -192px; }
+.player-ui .ui-icon-circle-zoomout { background-position: -192px -192px; }
+.player-ui .ui-icon-circle-check { background-position: -208px -192px; }
+.player-ui .ui-icon-circlesmall-plus { background-position: 0 -208px; }
+.player-ui .ui-icon-circlesmall-minus { background-position: -16px -208px; }
+.player-ui .ui-icon-circlesmall-close { background-position: -32px -208px; }
+.player-ui .ui-icon-squaresmall-plus { background-position: -48px -208px; }
+.player-ui .ui-icon-squaresmall-minus { background-position: -64px -208px; }
+.player-ui .ui-icon-squaresmall-close { background-position: -80px -208px; }
+.player-ui .ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
+.player-ui .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
+.player-ui .ui-icon-grip-solid-vertical { background-position: -32px -224px; }
+.player-ui .ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
+.player-ui .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
+.player-ui .ui-icon-grip-diagonal-se { background-position: -80px -224px; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Corner radius */
+.player-ui .ui-corner-all, .player-ui .ui-corner-top, .player-ui .ui-corner-left, .player-ui .ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -khtml-border-top-left-radius: 4px; border-top-left-radius: 4px; }
+.player-ui .ui-corner-all, .player-ui .ui-corner-top, .player-ui .ui-corner-right, .player-ui .ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; -khtml-border-top-right-radius: 4px; border-top-right-radius: 4px; }
+.player-ui .ui-corner-all, .player-ui .ui-corner-bottom, .player-ui .ui-corner-left, .player-ui .ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; -khtml-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }
+.player-ui .ui-corner-all, .player-ui .ui-corner-bottom, .player-ui .ui-corner-right, .player-ui .ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; -khtml-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
+
+/* Overlays */
+.player-ui .ui-widget-overlay { background: #f7f7ba url(images/ui-bg_white-lines_85_f7f7ba_40x100.png) 50% 50% repeat; opacity: .80;filter:Alpha(Opacity=80); }
+.player-ui .ui-widget-shadow { margin: 8px 0 0 8px; padding: 10px; background: #ba9217 url(images/ui-bg_flat_75_ba9217_40x100.png) 50% 50% repeat-x; opacity: .20;filter:Alpha(Opacity=20); -moz-border-radius: 5px; -khtml-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; }/*
+ * jQuery UI Resizable 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Resizable#theming
+ */
+.player-ui .ui-resizable { position: relative;}
+.player-ui .ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block; }
+.player-ui .ui-resizable-disabled .ui-resizable-handle, .player-ui .ui-resizable-autohide .ui-resizable-handle { display: none; }
+.player-ui .ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
+.player-ui .ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
+.player-ui .ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
+.player-ui .ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
+.player-ui .ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
+.player-ui .ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
+.player-ui .ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
+.player-ui .ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/*
+ * jQuery UI Selectable 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Selectable#theming
+ */
+.player-ui .ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }
+/*
+ * jQuery UI Accordion 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Accordion#theming
+ */
+/* IE/Win - Fix animation bug - #4615 */
+.player-ui .ui-accordion { width: 100%; }
+.player-ui .ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
+.player-ui .ui-accordion .ui-accordion-li-fix { display: inline; }
+.player-ui .ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
+.player-ui .ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; }
+.player-ui .ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; }
+.player-ui .ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
+.player-ui .ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; }
+.player-ui .ui-accordion .ui-accordion-content-active { display: block; }
+/*
+ * jQuery UI Autocomplete 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Autocomplete#theming
+ */
+.player-ui .ui-autocomplete { position: absolute; cursor: default; }	
+
+/* workarounds */
+* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
+
+/*
+ * jQuery UI Menu 1.8.18
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Menu#theming
+ */
+.player-ui .ui-menu {
+	list-style:none;
+	padding: 2px;
+	margin: 0;
+	display:block;
+	float: left;
+}
+.player-ui .ui-menu .ui-menu {
+	margin-top: -3px;
+}
+.player-ui .ui-menu .ui-menu-item {
+	margin:0;
+	padding: 0;
+	zoom: 1;
+	float: left;
+	clear: left;
+	width: 100%;
+}
+.player-ui .ui-menu .ui-menu-item a {
+	text-decoration:none;
+	display:block;
+	padding:.2em .4em;
+	line-height:1.5;
+	zoom:1;
+}
+.player-ui .ui-menu .ui-menu-item a.ui-state-hover,
+.player-ui .ui-menu .ui-menu-item a.ui-state-active {
+	font-weight: normal;
+	margin: -1px;
+}
+/*
+ * jQuery UI Button 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Button#theming
+ */
+.player-ui .ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: hidden; *overflow: visible; } /* the overflow property removes extra width in IE */
+.player-ui .ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
+button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
+.player-ui .ui-button-icons-only { width: 3.4em; } 
+button.ui-button-icons-only { width: 3.7em; } 
+
+/*button text element */
+.player-ui .ui-button .ui-button-text { display: block; line-height: 1.4;  }
+.player-ui .ui-button-text-only .ui-button-text { padding: .4em 1em; }
+.player-ui .ui-button-icon-only .ui-button-text, .player-ui .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
+.player-ui .ui-button-text-icon-primary .ui-button-text, .player-ui .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
+.player-ui .ui-button-text-icon-secondary .ui-button-text, .player-ui .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }
+.player-ui .ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }
+/* no icon support for input elements, provide padding by default */
+input.ui-button { padding: .4em 1em; }
+
+/*button icon element(s) */
+.player-ui .ui-button-icon-only .ui-icon, .player-ui .ui-button-text-icon-primary .ui-icon, .player-ui .ui-button-text-icon-secondary .ui-icon, .player-ui .ui-button-text-icons .ui-icon, .player-ui .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
+.player-ui .ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
+.player-ui .ui-button-text-icon-primary .ui-button-icon-primary, .player-ui .ui-button-text-icons .ui-button-icon-primary, .player-ui .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
+.player-ui .ui-button-text-icon-secondary .ui-button-icon-secondary, .player-ui .ui-button-text-icons .ui-button-icon-secondary, .player-ui .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
+.player-ui .ui-button-text-icons .ui-button-icon-secondary, .player-ui .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
+
+/*button sets*/
+.player-ui .ui-buttonset { margin-right: 7px; }
+.player-ui .ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }
+
+/* workarounds */
+button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
+/*
+ * jQuery UI Dialog 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Dialog#theming
+ */
+.player-ui .ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; }
+.player-ui .ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative;  }
+.player-ui .ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; } 
+.player-ui .ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
+.player-ui .ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
+.player-ui .ui-dialog .ui-dialog-titlebar-close:hover, .player-ui .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
+.player-ui .ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
+.player-ui .ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
+.player-ui .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
+.player-ui .ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
+.player-ui .ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
+.player-ui .ui-draggable .ui-dialog-titlebar { cursor: move; }
+/*
+ * jQuery UI Slider 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Slider#theming
+ */
+.player-ui .ui-slider { position: relative; text-align: left; }
+.player-ui .ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
+.player-ui .ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
+
+.player-ui .ui-slider-horizontal { height: .8em; }
+.player-ui .ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
+.player-ui .ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
+.player-ui .ui-slider-horizontal .ui-slider-range-min { left: 0; }
+.player-ui .ui-slider-horizontal .ui-slider-range-max { right: 0; }
+
+.player-ui .ui-slider-vertical { width: .8em; height: 100px; }
+.player-ui .ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
+.player-ui .ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
+.player-ui .ui-slider-vertical .ui-slider-range-min { bottom: 0; }
+.player-ui .ui-slider-vertical .ui-slider-range-max { top: 0; }/*
+ * jQuery UI Tabs 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Tabs#theming
+ */
+.player-ui .ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
+.player-ui .ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
+.player-ui .ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
+.player-ui .ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }
+.player-ui .ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; }
+.player-ui .ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .player-ui .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .player-ui .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
+.player-ui .ui-tabs .ui-tabs-nav li a, .player-ui .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
+.player-ui .ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }
+.player-ui .ui-tabs .ui-tabs-hide { display: none !important; }
+/*
+ * jQuery UI Datepicker 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Datepicker#theming
+ */
+.player-ui .ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }
+.player-ui .ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
+.player-ui .ui-datepicker .ui-datepicker-prev, .player-ui .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
+.player-ui .ui-datepicker .ui-datepicker-prev-hover, .player-ui .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
+.player-ui .ui-datepicker .ui-datepicker-prev { left:2px; }
+.player-ui .ui-datepicker .ui-datepicker-next { right:2px; }
+.player-ui .ui-datepicker .ui-datepicker-prev-hover { left:1px; }
+.player-ui .ui-datepicker .ui-datepicker-next-hover { right:1px; }
+.player-ui .ui-datepicker .ui-datepicker-prev span, .player-ui .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px;  }
+.player-ui .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
+.player-ui .ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
+.player-ui .ui-datepicker select.ui-datepicker-month-year {width: 100%;}
+.player-ui .ui-datepicker select.ui-datepicker-month, 
+.player-ui .ui-datepicker select.ui-datepicker-year { width: 49%;}
+.player-ui .ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
+.player-ui .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0;  }
+.player-ui .ui-datepicker td { border: 0; padding: 1px; }
+.player-ui .ui-datepicker td span, .player-ui .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
+.player-ui .ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
+.player-ui .ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
+.player-ui .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
+
+/* with multiple calendars */
+.player-ui .ui-datepicker.ui-datepicker-multi { width:auto; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group { float:left; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
+.player-ui .ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
+.player-ui .ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
+.player-ui .ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
+.player-ui .ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
+.player-ui .ui-datepicker-row-break { clear:both; width:100%; font-size:0em; }
+
+/* RTL support */
+.player-ui .ui-datepicker-rtl { direction: rtl; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-group { float:right; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+
+/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
+.player-ui .ui-datepicker-cover {
+    display: none; /*sorry for IE5*/
+    display/**/: block; /*sorry for IE5*/
+    position: absolute; /*must have*/
+    z-index: -1; /*must have*/
+    filter: mask(); /*must have*/
+    top: -4px; /*must have*/
+    left: -4px; /*must have*/
+    width: 200px; /*must have*/
+    height: 200px; /*must have*/
+}/*
+ * jQuery UI Progressbar 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Progressbar#theming
+ */
+.player-ui .ui-progressbar { height:2em; text-align: left; overflow: hidden; }
+.player-ui .ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/jquery-ui/mint-choc/images/ui-bg_flat_0_aaaaaa_40x100.png b/public/admin/js/osmplayer/jquery-ui/mint-choc/images/ui-bg_flat_0_aaaaaa_40x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..5b5dab2ab7b1c50dea9cfe73dc5a269a92d2d4b4
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/mint-choc/images/ui-bg_flat_0_aaaaaa_40x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/mint-choc/images/ui-bg_glass_15_5f391b_1x400.png b/public/admin/js/osmplayer/jquery-ui/mint-choc/images/ui-bg_glass_15_5f391b_1x400.png
new file mode 100644
index 0000000000000000000000000000000000000000..427c52fc5c771b54a96bc7e9c4e5279290c04e9e
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/mint-choc/images/ui-bg_glass_15_5f391b_1x400.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/mint-choc/images/ui-bg_gloss-wave_20_1c160d_500x100.png b/public/admin/js/osmplayer/jquery-ui/mint-choc/images/ui-bg_gloss-wave_20_1c160d_500x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..dc2d8bce64d47e0ae7648a7f207928300f9e2634
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/mint-choc/images/ui-bg_gloss-wave_20_1c160d_500x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/mint-choc/images/ui-bg_gloss-wave_25_453326_500x100.png b/public/admin/js/osmplayer/jquery-ui/mint-choc/images/ui-bg_gloss-wave_25_453326_500x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..08a4957c04b03b9a91b7019b40545d56d3764300
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/mint-choc/images/ui-bg_gloss-wave_25_453326_500x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/mint-choc/images/ui-bg_gloss-wave_30_44372c_500x100.png b/public/admin/js/osmplayer/jquery-ui/mint-choc/images/ui-bg_gloss-wave_30_44372c_500x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..81bebee8234c4d3a5ac621d99525e52330b553e4
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/mint-choc/images/ui-bg_gloss-wave_30_44372c_500x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/mint-choc/images/ui-bg_highlight-soft_20_201913_1x100.png b/public/admin/js/osmplayer/jquery-ui/mint-choc/images/ui-bg_highlight-soft_20_201913_1x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..63e76095e8df360c9f2b83bdaa09e4f695bbd448
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/mint-choc/images/ui-bg_highlight-soft_20_201913_1x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/mint-choc/images/ui-bg_highlight-soft_20_619226_1x100.png b/public/admin/js/osmplayer/jquery-ui/mint-choc/images/ui-bg_highlight-soft_20_619226_1x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..1794e4e71b6173715adcafcf48706d994d80b15c
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/mint-choc/images/ui-bg_highlight-soft_20_619226_1x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/mint-choc/images/ui-bg_inset-soft_10_201913_1x100.png b/public/admin/js/osmplayer/jquery-ui/mint-choc/images/ui-bg_inset-soft_10_201913_1x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..7003624a85b062b307add5f321794aa5afea76bf
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/mint-choc/images/ui-bg_inset-soft_10_201913_1x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/mint-choc/images/ui-icons_222222_256x240.png b/public/admin/js/osmplayer/jquery-ui/mint-choc/images/ui-icons_222222_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..b273ff111d219c9b9a8b96d57683d0075fb7871a
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/mint-choc/images/ui-icons_222222_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/mint-choc/images/ui-icons_9bcc60_256x240.png b/public/admin/js/osmplayer/jquery-ui/mint-choc/images/ui-icons_9bcc60_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..ad508c9071eb6e7172ddfffbdd75a0c5b52396e1
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/mint-choc/images/ui-icons_9bcc60_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/mint-choc/images/ui-icons_add978_256x240.png b/public/admin/js/osmplayer/jquery-ui/mint-choc/images/ui-icons_add978_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..6c309b2de680092e3bb82bc28003652dcf41e89e
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/mint-choc/images/ui-icons_add978_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/mint-choc/images/ui-icons_e3ddc9_256x240.png b/public/admin/js/osmplayer/jquery-ui/mint-choc/images/ui-icons_e3ddc9_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..51308e28fca0fce5b9b644cff53210f866b9cc88
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/mint-choc/images/ui-icons_e3ddc9_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/mint-choc/images/ui-icons_f1fd86_256x240.png b/public/admin/js/osmplayer/jquery-ui/mint-choc/images/ui-icons_f1fd86_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..06ce08f1250b23f4910e60cab41665dcf2a0a019
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/mint-choc/images/ui-icons_f1fd86_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/mint-choc/images/ui-icons_ffffff_256x240.png b/public/admin/js/osmplayer/jquery-ui/mint-choc/images/ui-icons_ffffff_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..42f8f992c727ddaa617da224a522e463df690387
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/mint-choc/images/ui-icons_ffffff_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/mint-choc/jquery-ui-1.8.18.custom.css b/public/admin/js/osmplayer/jquery-ui/mint-choc/jquery-ui-1.8.18.custom.css
new file mode 100644
index 0000000000000000000000000000000000000000..d6057b38bc9aaf07a6b94f8a98a9d0fe73eee5b4
--- /dev/null
+++ b/public/admin/js/osmplayer/jquery-ui/mint-choc/jquery-ui-1.8.18.custom.css
@@ -0,0 +1,565 @@
+/*
+ * jQuery UI CSS Framework 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ */
+
+/* Layout helpers
+----------------------------------*/
+.player-ui .ui-helper-hidden { display: none; }
+.player-ui .ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
+.player-ui .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
+.player-ui .ui-helper-clearfix:before, .player-ui .ui-helper-clearfix:after { content: ""; display: table; }
+.player-ui .ui-helper-clearfix:after { clear: both; }
+.player-ui .ui-helper-clearfix { zoom: 1; }
+.player-ui .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
+
+
+/* Interaction Cues
+----------------------------------*/
+.player-ui .ui-state-disabled { cursor: default !important; }
+
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.player-ui .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+.player-ui .ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
+
+
+/*
+ * jQuery UI CSS Framework 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ *
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Segoe%20UI,%20Helvetica,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=453326&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=25&borderColorHeader=695649&fcHeader=e3ddc9&iconColorHeader=e3ddc9&bgColorContent=201913&bgTextureContent=05_inset_soft.png&bgImgOpacityContent=10&borderColorContent=9c947c&fcContent=ffffff&iconColorContent=222222&bgColorDefault=1c160d&bgTextureDefault=12_gloss_wave.png&bgImgOpacityDefault=20&borderColorDefault=695444&fcDefault=9bcc60&iconColorDefault=9bcc60&bgColorHover=44372c&bgTextureHover=12_gloss_wave.png&bgImgOpacityHover=30&borderColorHover=9c947c&fcHover=baec7e&iconColorHover=add978&bgColorActive=201913&bgTextureActive=03_highlight_soft.png&bgImgOpacityActive=20&borderColorActive=9c947c&fcActive=e3ddc9&iconColorActive=e3ddc9&bgColorHighlight=619226&bgTextureHighlight=03_highlight_soft.png&bgImgOpacityHighlight=20&borderColorHighlight=add978&fcHighlight=ffffff&iconColorHighlight=ffffff&bgColorError=5f391b&bgTextureError=02_glass.png&bgImgOpacityError=15&borderColorError=5f391b&fcError=ffffff&iconColorError=f1fd86&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
+ */
+
+
+/* Component containers
+----------------------------------*/
+.player-ui .ui-widget { font-family: Segoe UI, Helvetica, Arial, sans-serif; font-size: 1.1em; }
+.player-ui .ui-widget .ui-widget { font-size: 1em; }
+.player-ui .ui-widget input, .player-ui .ui-widget select, .player-ui .ui-widget textarea, .player-ui .ui-widget button { font-family: Segoe UI, Helvetica, Arial, sans-serif; font-size: 1em; }
+.player-ui .ui-widget-content { border: 1px solid #9c947c; background: #201913 url(images/ui-bg_inset-soft_10_201913_1x100.png) 50% bottom repeat-x; color: #ffffff; }
+.player-ui .ui-widget-content a { color: #ffffff; }
+.player-ui .ui-widget-header { border: 1px solid #695649; background: #453326 url(images/ui-bg_gloss-wave_25_453326_500x100.png) 50% 50% repeat-x; color: #e3ddc9; font-weight: bold; }
+.player-ui .ui-widget-header a { color: #e3ddc9; }
+
+/* Interaction states
+----------------------------------*/
+.player-ui .ui-state-default, .player-ui .ui-widget-content .ui-state-default, .player-ui .ui-widget-header .ui-state-default { border: 1px solid #695444; background: #1c160d url(images/ui-bg_gloss-wave_20_1c160d_500x100.png) 50% 50% repeat-x; font-weight: bold; color: #9bcc60; }
+.player-ui .ui-state-default a, .player-ui .ui-state-default a:link, .player-ui .ui-state-default a:visited { color: #9bcc60; text-decoration: none; }
+.player-ui .ui-state-hover, .player-ui .ui-widget-content .ui-state-hover, .player-ui .ui-widget-header .ui-state-hover, .player-ui .ui-state-focus, .player-ui .ui-widget-content .ui-state-focus, .player-ui .ui-widget-header .ui-state-focus { border: 1px solid #9c947c; background: #44372c url(images/ui-bg_gloss-wave_30_44372c_500x100.png) 50% 50% repeat-x; font-weight: bold; color: #baec7e; }
+.player-ui .ui-state-hover a, .player-ui .ui-state-hover a:hover { color: #baec7e; text-decoration: none; }
+.player-ui .ui-state-active, .player-ui .ui-widget-content .ui-state-active, .player-ui .ui-widget-header .ui-state-active { border: 1px solid #9c947c; background: #201913 url(images/ui-bg_highlight-soft_20_201913_1x100.png) 50% 50% repeat-x; font-weight: bold; color: #e3ddc9; }
+.player-ui .ui-state-active a, .player-ui .ui-state-active a:link, .player-ui .ui-state-active a:visited { color: #e3ddc9; text-decoration: none; }
+.player-ui .ui-widget :active { outline: none; }
+
+/* Interaction Cues
+----------------------------------*/
+.player-ui .ui-state-highlight, .player-ui .ui-widget-content .ui-state-highlight, .player-ui .ui-widget-header .ui-state-highlight  {border: 1px solid #add978; background: #619226 url(images/ui-bg_highlight-soft_20_619226_1x100.png) 50% top repeat-x; color: #ffffff; }
+.player-ui .ui-state-highlight a, .player-ui .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #ffffff; }
+.player-ui .ui-state-error, .player-ui .ui-widget-content .ui-state-error, .player-ui .ui-widget-header .ui-state-error {border: 1px solid #5f391b; background: #5f391b url(images/ui-bg_glass_15_5f391b_1x400.png) 50% 50% repeat-x; color: #ffffff; }
+.player-ui .ui-state-error a, .player-ui .ui-widget-content .ui-state-error a, .player-ui .ui-widget-header .ui-state-error a { color: #ffffff; }
+.player-ui .ui-state-error-text, .player-ui .ui-widget-content .ui-state-error-text, .player-ui .ui-widget-header .ui-state-error-text { color: #ffffff; }
+.player-ui .ui-priority-primary, .player-ui .ui-widget-content .ui-priority-primary, .player-ui .ui-widget-header .ui-priority-primary { font-weight: bold; }
+.player-ui .ui-priority-secondary, .player-ui .ui-widget-content .ui-priority-secondary,  .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
+.player-ui .ui-state-disabled, .player-ui .ui-widget-content .ui-state-disabled, .player-ui .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.player-ui .ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); }
+.player-ui .ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
+.player-ui .ui-widget-header .ui-icon {background-image: url(images/ui-icons_e3ddc9_256x240.png); }
+.player-ui .ui-state-default .ui-icon { background-image: url(images/ui-icons_9bcc60_256x240.png); }
+.player-ui .ui-state-hover .ui-icon, .player-ui .ui-state-focus .ui-icon {background-image: url(images/ui-icons_add978_256x240.png); }
+.player-ui .ui-state-active .ui-icon {background-image: url(images/ui-icons_e3ddc9_256x240.png); }
+.player-ui .ui-state-highlight .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); }
+.player-ui .ui-state-error .ui-icon, .player-ui .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_f1fd86_256x240.png); }
+
+/* positioning */
+.player-ui .ui-icon-carat-1-n { background-position: 0 0; }
+.player-ui .ui-icon-carat-1-ne { background-position: -16px 0; }
+.player-ui .ui-icon-carat-1-e { background-position: -32px 0; }
+.player-ui .ui-icon-carat-1-se { background-position: -48px 0; }
+.player-ui .ui-icon-carat-1-s { background-position: -64px 0; }
+.player-ui .ui-icon-carat-1-sw { background-position: -80px 0; }
+.player-ui .ui-icon-carat-1-w { background-position: -96px 0; }
+.player-ui .ui-icon-carat-1-nw { background-position: -112px 0; }
+.player-ui .ui-icon-carat-2-n-s { background-position: -128px 0; }
+.player-ui .ui-icon-carat-2-e-w { background-position: -144px 0; }
+.player-ui .ui-icon-triangle-1-n { background-position: 0 -16px; }
+.player-ui .ui-icon-triangle-1-ne { background-position: -16px -16px; }
+.player-ui .ui-icon-triangle-1-e { background-position: -32px -16px; }
+.player-ui .ui-icon-triangle-1-se { background-position: -48px -16px; }
+.player-ui .ui-icon-triangle-1-s { background-position: -64px -16px; }
+.player-ui .ui-icon-triangle-1-sw { background-position: -80px -16px; }
+.player-ui .ui-icon-triangle-1-w { background-position: -96px -16px; }
+.player-ui .ui-icon-triangle-1-nw { background-position: -112px -16px; }
+.player-ui .ui-icon-triangle-2-n-s { background-position: -128px -16px; }
+.player-ui .ui-icon-triangle-2-e-w { background-position: -144px -16px; }
+.player-ui .ui-icon-arrow-1-n { background-position: 0 -32px; }
+.player-ui .ui-icon-arrow-1-ne { background-position: -16px -32px; }
+.player-ui .ui-icon-arrow-1-e { background-position: -32px -32px; }
+.player-ui .ui-icon-arrow-1-se { background-position: -48px -32px; }
+.player-ui .ui-icon-arrow-1-s { background-position: -64px -32px; }
+.player-ui .ui-icon-arrow-1-sw { background-position: -80px -32px; }
+.player-ui .ui-icon-arrow-1-w { background-position: -96px -32px; }
+.player-ui .ui-icon-arrow-1-nw { background-position: -112px -32px; }
+.player-ui .ui-icon-arrow-2-n-s { background-position: -128px -32px; }
+.player-ui .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
+.player-ui .ui-icon-arrow-2-e-w { background-position: -160px -32px; }
+.player-ui .ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
+.player-ui .ui-icon-arrowstop-1-n { background-position: -192px -32px; }
+.player-ui .ui-icon-arrowstop-1-e { background-position: -208px -32px; }
+.player-ui .ui-icon-arrowstop-1-s { background-position: -224px -32px; }
+.player-ui .ui-icon-arrowstop-1-w { background-position: -240px -32px; }
+.player-ui .ui-icon-arrowthick-1-n { background-position: 0 -48px; }
+.player-ui .ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
+.player-ui .ui-icon-arrowthick-1-e { background-position: -32px -48px; }
+.player-ui .ui-icon-arrowthick-1-se { background-position: -48px -48px; }
+.player-ui .ui-icon-arrowthick-1-s { background-position: -64px -48px; }
+.player-ui .ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
+.player-ui .ui-icon-arrowthick-1-w { background-position: -96px -48px; }
+.player-ui .ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
+.player-ui .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
+.player-ui .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
+.player-ui .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
+.player-ui .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
+.player-ui .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
+.player-ui .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
+.player-ui .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
+.player-ui .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
+.player-ui .ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
+.player-ui .ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
+.player-ui .ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
+.player-ui .ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
+.player-ui .ui-icon-arrow-4 { background-position: 0 -80px; }
+.player-ui .ui-icon-arrow-4-diag { background-position: -16px -80px; }
+.player-ui .ui-icon-extlink { background-position: -32px -80px; }
+.player-ui .ui-icon-newwin { background-position: -48px -80px; }
+.player-ui .ui-icon-refresh { background-position: -64px -80px; }
+.player-ui .ui-icon-shuffle { background-position: -80px -80px; }
+.player-ui .ui-icon-transfer-e-w { background-position: -96px -80px; }
+.player-ui .ui-icon-transferthick-e-w { background-position: -112px -80px; }
+.player-ui .ui-icon-folder-collapsed { background-position: 0 -96px; }
+.player-ui .ui-icon-folder-open { background-position: -16px -96px; }
+.player-ui .ui-icon-document { background-position: -32px -96px; }
+.player-ui .ui-icon-document-b { background-position: -48px -96px; }
+.player-ui .ui-icon-note { background-position: -64px -96px; }
+.player-ui .ui-icon-mail-closed { background-position: -80px -96px; }
+.player-ui .ui-icon-mail-open { background-position: -96px -96px; }
+.player-ui .ui-icon-suitcase { background-position: -112px -96px; }
+.player-ui .ui-icon-comment { background-position: -128px -96px; }
+.player-ui .ui-icon-person { background-position: -144px -96px; }
+.player-ui .ui-icon-print { background-position: -160px -96px; }
+.player-ui .ui-icon-trash { background-position: -176px -96px; }
+.player-ui .ui-icon-locked { background-position: -192px -96px; }
+.player-ui .ui-icon-unlocked { background-position: -208px -96px; }
+.player-ui .ui-icon-bookmark { background-position: -224px -96px; }
+.player-ui .ui-icon-tag { background-position: -240px -96px; }
+.player-ui .ui-icon-home { background-position: 0 -112px; }
+.player-ui .ui-icon-flag { background-position: -16px -112px; }
+.player-ui .ui-icon-calendar { background-position: -32px -112px; }
+.player-ui .ui-icon-cart { background-position: -48px -112px; }
+.player-ui .ui-icon-pencil { background-position: -64px -112px; }
+.player-ui .ui-icon-clock { background-position: -80px -112px; }
+.player-ui .ui-icon-disk { background-position: -96px -112px; }
+.player-ui .ui-icon-calculator { background-position: -112px -112px; }
+.player-ui .ui-icon-zoomin { background-position: -128px -112px; }
+.player-ui .ui-icon-zoomout { background-position: -144px -112px; }
+.player-ui .ui-icon-search { background-position: -160px -112px; }
+.player-ui .ui-icon-wrench { background-position: -176px -112px; }
+.player-ui .ui-icon-gear { background-position: -192px -112px; }
+.player-ui .ui-icon-heart { background-position: -208px -112px; }
+.player-ui .ui-icon-star { background-position: -224px -112px; }
+.player-ui .ui-icon-link { background-position: -240px -112px; }
+.player-ui .ui-icon-cancel { background-position: 0 -128px; }
+.player-ui .ui-icon-plus { background-position: -16px -128px; }
+.player-ui .ui-icon-plusthick { background-position: -32px -128px; }
+.player-ui .ui-icon-minus { background-position: -48px -128px; }
+.player-ui .ui-icon-minusthick { background-position: -64px -128px; }
+.player-ui .ui-icon-close { background-position: -80px -128px; }
+.player-ui .ui-icon-closethick { background-position: -96px -128px; }
+.player-ui .ui-icon-key { background-position: -112px -128px; }
+.player-ui .ui-icon-lightbulb { background-position: -128px -128px; }
+.player-ui .ui-icon-scissors { background-position: -144px -128px; }
+.player-ui .ui-icon-clipboard { background-position: -160px -128px; }
+.player-ui .ui-icon-copy { background-position: -176px -128px; }
+.player-ui .ui-icon-contact { background-position: -192px -128px; }
+.player-ui .ui-icon-image { background-position: -208px -128px; }
+.player-ui .ui-icon-video { background-position: -224px -128px; }
+.player-ui .ui-icon-script { background-position: -240px -128px; }
+.player-ui .ui-icon-alert { background-position: 0 -144px; }
+.player-ui .ui-icon-info { background-position: -16px -144px; }
+.player-ui .ui-icon-notice { background-position: -32px -144px; }
+.player-ui .ui-icon-help { background-position: -48px -144px; }
+.player-ui .ui-icon-check { background-position: -64px -144px; }
+.player-ui .ui-icon-bullet { background-position: -80px -144px; }
+.player-ui .ui-icon-radio-off { background-position: -96px -144px; }
+.player-ui .ui-icon-radio-on { background-position: -112px -144px; }
+.player-ui .ui-icon-pin-w { background-position: -128px -144px; }
+.player-ui .ui-icon-pin-s { background-position: -144px -144px; }
+.player-ui .ui-icon-play { background-position: 0 -160px; }
+.player-ui .ui-icon-pause { background-position: -16px -160px; }
+.player-ui .ui-icon-seek-next { background-position: -32px -160px; }
+.player-ui .ui-icon-seek-prev { background-position: -48px -160px; }
+.player-ui .ui-icon-seek-end { background-position: -64px -160px; }
+.player-ui .ui-icon-seek-start { background-position: -80px -160px; }
+/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
+.player-ui .ui-icon-seek-first { background-position: -80px -160px; }
+.player-ui .ui-icon-stop { background-position: -96px -160px; }
+.player-ui .ui-icon-eject { background-position: -112px -160px; }
+.player-ui .ui-icon-volume-off { background-position: -128px -160px; }
+.player-ui .ui-icon-volume-on { background-position: -144px -160px; }
+.player-ui .ui-icon-power { background-position: 0 -176px; }
+.player-ui .ui-icon-signal-diag { background-position: -16px -176px; }
+.player-ui .ui-icon-signal { background-position: -32px -176px; }
+.player-ui .ui-icon-battery-0 { background-position: -48px -176px; }
+.player-ui .ui-icon-battery-1 { background-position: -64px -176px; }
+.player-ui .ui-icon-battery-2 { background-position: -80px -176px; }
+.player-ui .ui-icon-battery-3 { background-position: -96px -176px; }
+.player-ui .ui-icon-circle-plus { background-position: 0 -192px; }
+.player-ui .ui-icon-circle-minus { background-position: -16px -192px; }
+.player-ui .ui-icon-circle-close { background-position: -32px -192px; }
+.player-ui .ui-icon-circle-triangle-e { background-position: -48px -192px; }
+.player-ui .ui-icon-circle-triangle-s { background-position: -64px -192px; }
+.player-ui .ui-icon-circle-triangle-w { background-position: -80px -192px; }
+.player-ui .ui-icon-circle-triangle-n { background-position: -96px -192px; }
+.player-ui .ui-icon-circle-arrow-e { background-position: -112px -192px; }
+.player-ui .ui-icon-circle-arrow-s { background-position: -128px -192px; }
+.player-ui .ui-icon-circle-arrow-w { background-position: -144px -192px; }
+.player-ui .ui-icon-circle-arrow-n { background-position: -160px -192px; }
+.player-ui .ui-icon-circle-zoomin { background-position: -176px -192px; }
+.player-ui .ui-icon-circle-zoomout { background-position: -192px -192px; }
+.player-ui .ui-icon-circle-check { background-position: -208px -192px; }
+.player-ui .ui-icon-circlesmall-plus { background-position: 0 -208px; }
+.player-ui .ui-icon-circlesmall-minus { background-position: -16px -208px; }
+.player-ui .ui-icon-circlesmall-close { background-position: -32px -208px; }
+.player-ui .ui-icon-squaresmall-plus { background-position: -48px -208px; }
+.player-ui .ui-icon-squaresmall-minus { background-position: -64px -208px; }
+.player-ui .ui-icon-squaresmall-close { background-position: -80px -208px; }
+.player-ui .ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
+.player-ui .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
+.player-ui .ui-icon-grip-solid-vertical { background-position: -32px -224px; }
+.player-ui .ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
+.player-ui .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
+.player-ui .ui-icon-grip-diagonal-se { background-position: -80px -224px; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Corner radius */
+.player-ui .ui-corner-all, .player-ui .ui-corner-top, .player-ui .ui-corner-left, .player-ui .ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -khtml-border-top-left-radius: 4px; border-top-left-radius: 4px; }
+.player-ui .ui-corner-all, .player-ui .ui-corner-top, .player-ui .ui-corner-right, .player-ui .ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; -khtml-border-top-right-radius: 4px; border-top-right-radius: 4px; }
+.player-ui .ui-corner-all, .player-ui .ui-corner-bottom, .player-ui .ui-corner-left, .player-ui .ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; -khtml-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }
+.player-ui .ui-corner-all, .player-ui .ui-corner-bottom, .player-ui .ui-corner-right, .player-ui .ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; -khtml-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
+
+/* Overlays */
+.player-ui .ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); }
+.player-ui .ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -khtml-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/*
+ * jQuery UI Resizable 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Resizable#theming
+ */
+.player-ui .ui-resizable { position: relative;}
+.player-ui .ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block; }
+.player-ui .ui-resizable-disabled .ui-resizable-handle, .player-ui .ui-resizable-autohide .ui-resizable-handle { display: none; }
+.player-ui .ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
+.player-ui .ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
+.player-ui .ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
+.player-ui .ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
+.player-ui .ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
+.player-ui .ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
+.player-ui .ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
+.player-ui .ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/*
+ * jQuery UI Selectable 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Selectable#theming
+ */
+.player-ui .ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }
+/*
+ * jQuery UI Accordion 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Accordion#theming
+ */
+/* IE/Win - Fix animation bug - #4615 */
+.player-ui .ui-accordion { width: 100%; }
+.player-ui .ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
+.player-ui .ui-accordion .ui-accordion-li-fix { display: inline; }
+.player-ui .ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
+.player-ui .ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; }
+.player-ui .ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; }
+.player-ui .ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
+.player-ui .ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; }
+.player-ui .ui-accordion .ui-accordion-content-active { display: block; }
+/*
+ * jQuery UI Autocomplete 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Autocomplete#theming
+ */
+.player-ui .ui-autocomplete { position: absolute; cursor: default; }	
+
+/* workarounds */
+* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
+
+/*
+ * jQuery UI Menu 1.8.18
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Menu#theming
+ */
+.player-ui .ui-menu {
+	list-style:none;
+	padding: 2px;
+	margin: 0;
+	display:block;
+	float: left;
+}
+.player-ui .ui-menu .ui-menu {
+	margin-top: -3px;
+}
+.player-ui .ui-menu .ui-menu-item {
+	margin:0;
+	padding: 0;
+	zoom: 1;
+	float: left;
+	clear: left;
+	width: 100%;
+}
+.player-ui .ui-menu .ui-menu-item a {
+	text-decoration:none;
+	display:block;
+	padding:.2em .4em;
+	line-height:1.5;
+	zoom:1;
+}
+.player-ui .ui-menu .ui-menu-item a.ui-state-hover,
+.player-ui .ui-menu .ui-menu-item a.ui-state-active {
+	font-weight: normal;
+	margin: -1px;
+}
+/*
+ * jQuery UI Button 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Button#theming
+ */
+.player-ui .ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: hidden; *overflow: visible; } /* the overflow property removes extra width in IE */
+.player-ui .ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
+button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
+.player-ui .ui-button-icons-only { width: 3.4em; } 
+button.ui-button-icons-only { width: 3.7em; } 
+
+/*button text element */
+.player-ui .ui-button .ui-button-text { display: block; line-height: 1.4;  }
+.player-ui .ui-button-text-only .ui-button-text { padding: .4em 1em; }
+.player-ui .ui-button-icon-only .ui-button-text, .player-ui .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
+.player-ui .ui-button-text-icon-primary .ui-button-text, .player-ui .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
+.player-ui .ui-button-text-icon-secondary .ui-button-text, .player-ui .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }
+.player-ui .ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }
+/* no icon support for input elements, provide padding by default */
+input.ui-button { padding: .4em 1em; }
+
+/*button icon element(s) */
+.player-ui .ui-button-icon-only .ui-icon, .player-ui .ui-button-text-icon-primary .ui-icon, .player-ui .ui-button-text-icon-secondary .ui-icon, .player-ui .ui-button-text-icons .ui-icon, .player-ui .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
+.player-ui .ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
+.player-ui .ui-button-text-icon-primary .ui-button-icon-primary, .player-ui .ui-button-text-icons .ui-button-icon-primary, .player-ui .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
+.player-ui .ui-button-text-icon-secondary .ui-button-icon-secondary, .player-ui .ui-button-text-icons .ui-button-icon-secondary, .player-ui .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
+.player-ui .ui-button-text-icons .ui-button-icon-secondary, .player-ui .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
+
+/*button sets*/
+.player-ui .ui-buttonset { margin-right: 7px; }
+.player-ui .ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }
+
+/* workarounds */
+button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
+/*
+ * jQuery UI Dialog 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Dialog#theming
+ */
+.player-ui .ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; }
+.player-ui .ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative;  }
+.player-ui .ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; } 
+.player-ui .ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
+.player-ui .ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
+.player-ui .ui-dialog .ui-dialog-titlebar-close:hover, .player-ui .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
+.player-ui .ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
+.player-ui .ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
+.player-ui .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
+.player-ui .ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
+.player-ui .ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
+.player-ui .ui-draggable .ui-dialog-titlebar { cursor: move; }
+/*
+ * jQuery UI Slider 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Slider#theming
+ */
+.player-ui .ui-slider { position: relative; text-align: left; }
+.player-ui .ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
+.player-ui .ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
+
+.player-ui .ui-slider-horizontal { height: .8em; }
+.player-ui .ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
+.player-ui .ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
+.player-ui .ui-slider-horizontal .ui-slider-range-min { left: 0; }
+.player-ui .ui-slider-horizontal .ui-slider-range-max { right: 0; }
+
+.player-ui .ui-slider-vertical { width: .8em; height: 100px; }
+.player-ui .ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
+.player-ui .ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
+.player-ui .ui-slider-vertical .ui-slider-range-min { bottom: 0; }
+.player-ui .ui-slider-vertical .ui-slider-range-max { top: 0; }/*
+ * jQuery UI Tabs 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Tabs#theming
+ */
+.player-ui .ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
+.player-ui .ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
+.player-ui .ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
+.player-ui .ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }
+.player-ui .ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; }
+.player-ui .ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .player-ui .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .player-ui .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
+.player-ui .ui-tabs .ui-tabs-nav li a, .player-ui .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
+.player-ui .ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }
+.player-ui .ui-tabs .ui-tabs-hide { display: none !important; }
+/*
+ * jQuery UI Datepicker 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Datepicker#theming
+ */
+.player-ui .ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }
+.player-ui .ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
+.player-ui .ui-datepicker .ui-datepicker-prev, .player-ui .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
+.player-ui .ui-datepicker .ui-datepicker-prev-hover, .player-ui .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
+.player-ui .ui-datepicker .ui-datepicker-prev { left:2px; }
+.player-ui .ui-datepicker .ui-datepicker-next { right:2px; }
+.player-ui .ui-datepicker .ui-datepicker-prev-hover { left:1px; }
+.player-ui .ui-datepicker .ui-datepicker-next-hover { right:1px; }
+.player-ui .ui-datepicker .ui-datepicker-prev span, .player-ui .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px;  }
+.player-ui .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
+.player-ui .ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
+.player-ui .ui-datepicker select.ui-datepicker-month-year {width: 100%;}
+.player-ui .ui-datepicker select.ui-datepicker-month, 
+.player-ui .ui-datepicker select.ui-datepicker-year { width: 49%;}
+.player-ui .ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
+.player-ui .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0;  }
+.player-ui .ui-datepicker td { border: 0; padding: 1px; }
+.player-ui .ui-datepicker td span, .player-ui .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
+.player-ui .ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
+.player-ui .ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
+.player-ui .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
+
+/* with multiple calendars */
+.player-ui .ui-datepicker.ui-datepicker-multi { width:auto; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group { float:left; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
+.player-ui .ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
+.player-ui .ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
+.player-ui .ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
+.player-ui .ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
+.player-ui .ui-datepicker-row-break { clear:both; width:100%; font-size:0em; }
+
+/* RTL support */
+.player-ui .ui-datepicker-rtl { direction: rtl; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-group { float:right; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+
+/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
+.player-ui .ui-datepicker-cover {
+    display: none; /*sorry for IE5*/
+    display/**/: block; /*sorry for IE5*/
+    position: absolute; /*must have*/
+    z-index: -1; /*must have*/
+    filter: mask(); /*must have*/
+    top: -4px; /*must have*/
+    left: -4px; /*must have*/
+    width: 200px; /*must have*/
+    height: 200px; /*must have*/
+}/*
+ * jQuery UI Progressbar 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Progressbar#theming
+ */
+.player-ui .ui-progressbar { height:2em; text-align: left; overflow: hidden; }
+.player-ui .ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/jquery-ui/overcast/images/ui-bg_flat_0_aaaaaa_40x100.png b/public/admin/js/osmplayer/jquery-ui/overcast/images/ui-bg_flat_0_aaaaaa_40x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..5b5dab2ab7b1c50dea9cfe73dc5a269a92d2d4b4
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/overcast/images/ui-bg_flat_0_aaaaaa_40x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/overcast/images/ui-bg_flat_0_eeeeee_40x100.png b/public/admin/js/osmplayer/jquery-ui/overcast/images/ui-bg_flat_0_eeeeee_40x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..e44f861be1ccdfec4275eb20d9b056f14992f649
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/overcast/images/ui-bg_flat_0_eeeeee_40x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/overcast/images/ui-bg_flat_55_c0402a_40x100.png b/public/admin/js/osmplayer/jquery-ui/overcast/images/ui-bg_flat_55_c0402a_40x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..b8c9bb1160d4231b92714d925a1017c42ae312ac
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/overcast/images/ui-bg_flat_55_c0402a_40x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/overcast/images/ui-bg_flat_55_eeeeee_40x100.png b/public/admin/js/osmplayer/jquery-ui/overcast/images/ui-bg_flat_55_eeeeee_40x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..e44f861be1ccdfec4275eb20d9b056f14992f649
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/overcast/images/ui-bg_flat_55_eeeeee_40x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/overcast/images/ui-bg_glass_100_f8f8f8_1x400.png b/public/admin/js/osmplayer/jquery-ui/overcast/images/ui-bg_glass_100_f8f8f8_1x400.png
new file mode 100644
index 0000000000000000000000000000000000000000..cd79e9f1966df03e2956237b5a878a7c7cc32872
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/overcast/images/ui-bg_glass_100_f8f8f8_1x400.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/overcast/images/ui-bg_glass_35_dddddd_1x400.png b/public/admin/js/osmplayer/jquery-ui/overcast/images/ui-bg_glass_35_dddddd_1x400.png
new file mode 100644
index 0000000000000000000000000000000000000000..3550f06cc447d17ae2c4caac20ce49ed4eea2783
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/overcast/images/ui-bg_glass_35_dddddd_1x400.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/overcast/images/ui-bg_glass_60_eeeeee_1x400.png b/public/admin/js/osmplayer/jquery-ui/overcast/images/ui-bg_glass_60_eeeeee_1x400.png
new file mode 100644
index 0000000000000000000000000000000000000000..8ad921a83ec13830f2c887004fd062b9a2bcf42e
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/overcast/images/ui-bg_glass_60_eeeeee_1x400.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/overcast/images/ui-bg_inset-hard_75_999999_1x100.png b/public/admin/js/osmplayer/jquery-ui/overcast/images/ui-bg_inset-hard_75_999999_1x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..89b88d8da7b9c849a8c9fa5f9d44d0f89be8002e
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/overcast/images/ui-bg_inset-hard_75_999999_1x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/overcast/images/ui-bg_inset-soft_50_c9c9c9_1x100.png b/public/admin/js/osmplayer/jquery-ui/overcast/images/ui-bg_inset-soft_50_c9c9c9_1x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..1c6203e5444ade7295c2e4ed84c3a416a20a8722
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/overcast/images/ui-bg_inset-soft_50_c9c9c9_1x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/overcast/images/ui-icons_3383bb_256x240.png b/public/admin/js/osmplayer/jquery-ui/overcast/images/ui-icons_3383bb_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..905274f21d0478fc479d4ccc8267da89772e9662
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/overcast/images/ui-icons_3383bb_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/overcast/images/ui-icons_454545_256x240.png b/public/admin/js/osmplayer/jquery-ui/overcast/images/ui-icons_454545_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..59bd45b907c4fd965697774ce8c5fc6b2fd9c105
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/overcast/images/ui-icons_454545_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/overcast/images/ui-icons_70b2e1_256x240.png b/public/admin/js/osmplayer/jquery-ui/overcast/images/ui-icons_70b2e1_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..e81ac8d9479570bb6bf8286a9780aa427cad2a3a
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/overcast/images/ui-icons_70b2e1_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/overcast/images/ui-icons_999999_256x240.png b/public/admin/js/osmplayer/jquery-ui/overcast/images/ui-icons_999999_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..50ff803dceabc920d514d6a41634fe4388b6c128
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/overcast/images/ui-icons_999999_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/overcast/images/ui-icons_fbc856_256x240.png b/public/admin/js/osmplayer/jquery-ui/overcast/images/ui-icons_fbc856_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..9d1b027fc2f27eebc61240622e249d35498a2daa
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/overcast/images/ui-icons_fbc856_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/overcast/jquery-ui-1.8.18.custom.css b/public/admin/js/osmplayer/jquery-ui/overcast/jquery-ui-1.8.18.custom.css
new file mode 100644
index 0000000000000000000000000000000000000000..87c655db2f81bcf5c2322eb5a4198ec3a1358910
--- /dev/null
+++ b/public/admin/js/osmplayer/jquery-ui/overcast/jquery-ui-1.8.18.custom.css
@@ -0,0 +1,565 @@
+/*
+ * jQuery UI CSS Framework 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ */
+
+/* Layout helpers
+----------------------------------*/
+.player-ui .ui-helper-hidden { display: none; }
+.player-ui .ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
+.player-ui .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
+.player-ui .ui-helper-clearfix:before, .player-ui .ui-helper-clearfix:after { content: ""; display: table; }
+.player-ui .ui-helper-clearfix:after { clear: both; }
+.player-ui .ui-helper-clearfix { zoom: 1; }
+.player-ui .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
+
+
+/* Interaction Cues
+----------------------------------*/
+.player-ui .ui-state-disabled { cursor: default !important; }
+
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.player-ui .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+.player-ui .ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
+
+
+/*
+ * jQuery UI CSS Framework 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ *
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS,%20Helvetica,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=6px&bgColorHeader=dddddd&bgTextureHeader=02_glass.png&bgImgOpacityHeader=35&borderColorHeader=bbbbbb&fcHeader=444444&iconColorHeader=999999&bgColorContent=c9c9c9&bgTextureContent=05_inset_soft.png&bgImgOpacityContent=50&borderColorContent=aaaaaa&fcContent=333333&iconColorContent=999999&bgColorDefault=eeeeee&bgTextureDefault=02_glass.png&bgImgOpacityDefault=60&borderColorDefault=cccccc&fcDefault=3383bb&iconColorDefault=70b2e1&bgColorHover=f8f8f8&bgTextureHover=02_glass.png&bgImgOpacityHover=100&borderColorHover=bbbbbb&fcHover=599fcf&iconColorHover=3383bb&bgColorActive=999999&bgTextureActive=06_inset_hard.png&bgImgOpacityActive=75&borderColorActive=999999&fcActive=ffffff&iconColorActive=454545&bgColorHighlight=eeeeee&bgTextureHighlight=01_flat.png&bgImgOpacityHighlight=55&borderColorHighlight=ffffff&fcHighlight=444444&iconColorHighlight=3383bb&bgColorError=c0402a&bgTextureError=01_flat.png&bgImgOpacityError=55&borderColorError=c0402a&fcError=ffffff&iconColorError=fbc856&bgColorOverlay=eeeeee&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=80&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=60&thicknessShadow=4px&offsetTopShadow=-4px&offsetLeftShadow=-4px&cornerRadiusShadow=0pxdow=0px
+ */
+
+
+/* Component containers
+----------------------------------*/
+.player-ui .ui-widget { font-family: Trebuchet MS, Helvetica, Arial, sans-serif; font-size: 1.1em; }
+.player-ui .ui-widget .ui-widget { font-size: 1em; }
+.player-ui .ui-widget input, .player-ui .ui-widget select, .player-ui .ui-widget textarea, .player-ui .ui-widget button { font-family: Trebuchet MS, Helvetica, Arial, sans-serif; font-size: 1em; }
+.player-ui .ui-widget-content { border: 1px solid #aaaaaa; background: #c9c9c9 url(images/ui-bg_inset-soft_50_c9c9c9_1x100.png) 50% bottom repeat-x; color: #333333; }
+.player-ui .ui-widget-content a { color: #333333; }
+.player-ui .ui-widget-header { border: 1px solid #bbbbbb; background: #dddddd url(images/ui-bg_glass_35_dddddd_1x400.png) 50% 50% repeat-x; color: #444444; font-weight: bold; }
+.player-ui .ui-widget-header a { color: #444444; }
+
+/* Interaction states
+----------------------------------*/
+.player-ui .ui-state-default, .player-ui .ui-widget-content .ui-state-default, .player-ui .ui-widget-header .ui-state-default { border: 1px solid #cccccc; background: #eeeeee url(images/ui-bg_glass_60_eeeeee_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #3383bb; }
+.player-ui .ui-state-default a, .player-ui .ui-state-default a:link, .player-ui .ui-state-default a:visited { color: #3383bb; text-decoration: none; }
+.player-ui .ui-state-hover, .player-ui .ui-widget-content .ui-state-hover, .player-ui .ui-widget-header .ui-state-hover, .player-ui .ui-state-focus, .player-ui .ui-widget-content .ui-state-focus, .player-ui .ui-widget-header .ui-state-focus { border: 1px solid #bbbbbb; background: #f8f8f8 url(images/ui-bg_glass_100_f8f8f8_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #599fcf; }
+.player-ui .ui-state-hover a, .player-ui .ui-state-hover a:hover { color: #599fcf; text-decoration: none; }
+.player-ui .ui-state-active, .player-ui .ui-widget-content .ui-state-active, .player-ui .ui-widget-header .ui-state-active { border: 1px solid #999999; background: #999999 url(images/ui-bg_inset-hard_75_999999_1x100.png) 50% 50% repeat-x; font-weight: bold; color: #ffffff; }
+.player-ui .ui-state-active a, .player-ui .ui-state-active a:link, .player-ui .ui-state-active a:visited { color: #ffffff; text-decoration: none; }
+.player-ui .ui-widget :active { outline: none; }
+
+/* Interaction Cues
+----------------------------------*/
+.player-ui .ui-state-highlight, .player-ui .ui-widget-content .ui-state-highlight, .player-ui .ui-widget-header .ui-state-highlight  {border: 1px solid #ffffff; background: #eeeeee url(images/ui-bg_flat_55_eeeeee_40x100.png) 50% 50% repeat-x; color: #444444; }
+.player-ui .ui-state-highlight a, .player-ui .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #444444; }
+.player-ui .ui-state-error, .player-ui .ui-widget-content .ui-state-error, .player-ui .ui-widget-header .ui-state-error {border: 1px solid #c0402a; background: #c0402a url(images/ui-bg_flat_55_c0402a_40x100.png) 50% 50% repeat-x; color: #ffffff; }
+.player-ui .ui-state-error a, .player-ui .ui-widget-content .ui-state-error a, .player-ui .ui-widget-header .ui-state-error a { color: #ffffff; }
+.player-ui .ui-state-error-text, .player-ui .ui-widget-content .ui-state-error-text, .player-ui .ui-widget-header .ui-state-error-text { color: #ffffff; }
+.player-ui .ui-priority-primary, .player-ui .ui-widget-content .ui-priority-primary, .player-ui .ui-widget-header .ui-priority-primary { font-weight: bold; }
+.player-ui .ui-priority-secondary, .player-ui .ui-widget-content .ui-priority-secondary,  .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
+.player-ui .ui-state-disabled, .player-ui .ui-widget-content .ui-state-disabled, .player-ui .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.player-ui .ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_999999_256x240.png); }
+.player-ui .ui-widget-content .ui-icon {background-image: url(images/ui-icons_999999_256x240.png); }
+.player-ui .ui-widget-header .ui-icon {background-image: url(images/ui-icons_999999_256x240.png); }
+.player-ui .ui-state-default .ui-icon { background-image: url(images/ui-icons_70b2e1_256x240.png); }
+.player-ui .ui-state-hover .ui-icon, .player-ui .ui-state-focus .ui-icon {background-image: url(images/ui-icons_3383bb_256x240.png); }
+.player-ui .ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
+.player-ui .ui-state-highlight .ui-icon {background-image: url(images/ui-icons_3383bb_256x240.png); }
+.player-ui .ui-state-error .ui-icon, .player-ui .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_fbc856_256x240.png); }
+
+/* positioning */
+.player-ui .ui-icon-carat-1-n { background-position: 0 0; }
+.player-ui .ui-icon-carat-1-ne { background-position: -16px 0; }
+.player-ui .ui-icon-carat-1-e { background-position: -32px 0; }
+.player-ui .ui-icon-carat-1-se { background-position: -48px 0; }
+.player-ui .ui-icon-carat-1-s { background-position: -64px 0; }
+.player-ui .ui-icon-carat-1-sw { background-position: -80px 0; }
+.player-ui .ui-icon-carat-1-w { background-position: -96px 0; }
+.player-ui .ui-icon-carat-1-nw { background-position: -112px 0; }
+.player-ui .ui-icon-carat-2-n-s { background-position: -128px 0; }
+.player-ui .ui-icon-carat-2-e-w { background-position: -144px 0; }
+.player-ui .ui-icon-triangle-1-n { background-position: 0 -16px; }
+.player-ui .ui-icon-triangle-1-ne { background-position: -16px -16px; }
+.player-ui .ui-icon-triangle-1-e { background-position: -32px -16px; }
+.player-ui .ui-icon-triangle-1-se { background-position: -48px -16px; }
+.player-ui .ui-icon-triangle-1-s { background-position: -64px -16px; }
+.player-ui .ui-icon-triangle-1-sw { background-position: -80px -16px; }
+.player-ui .ui-icon-triangle-1-w { background-position: -96px -16px; }
+.player-ui .ui-icon-triangle-1-nw { background-position: -112px -16px; }
+.player-ui .ui-icon-triangle-2-n-s { background-position: -128px -16px; }
+.player-ui .ui-icon-triangle-2-e-w { background-position: -144px -16px; }
+.player-ui .ui-icon-arrow-1-n { background-position: 0 -32px; }
+.player-ui .ui-icon-arrow-1-ne { background-position: -16px -32px; }
+.player-ui .ui-icon-arrow-1-e { background-position: -32px -32px; }
+.player-ui .ui-icon-arrow-1-se { background-position: -48px -32px; }
+.player-ui .ui-icon-arrow-1-s { background-position: -64px -32px; }
+.player-ui .ui-icon-arrow-1-sw { background-position: -80px -32px; }
+.player-ui .ui-icon-arrow-1-w { background-position: -96px -32px; }
+.player-ui .ui-icon-arrow-1-nw { background-position: -112px -32px; }
+.player-ui .ui-icon-arrow-2-n-s { background-position: -128px -32px; }
+.player-ui .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
+.player-ui .ui-icon-arrow-2-e-w { background-position: -160px -32px; }
+.player-ui .ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
+.player-ui .ui-icon-arrowstop-1-n { background-position: -192px -32px; }
+.player-ui .ui-icon-arrowstop-1-e { background-position: -208px -32px; }
+.player-ui .ui-icon-arrowstop-1-s { background-position: -224px -32px; }
+.player-ui .ui-icon-arrowstop-1-w { background-position: -240px -32px; }
+.player-ui .ui-icon-arrowthick-1-n { background-position: 0 -48px; }
+.player-ui .ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
+.player-ui .ui-icon-arrowthick-1-e { background-position: -32px -48px; }
+.player-ui .ui-icon-arrowthick-1-se { background-position: -48px -48px; }
+.player-ui .ui-icon-arrowthick-1-s { background-position: -64px -48px; }
+.player-ui .ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
+.player-ui .ui-icon-arrowthick-1-w { background-position: -96px -48px; }
+.player-ui .ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
+.player-ui .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
+.player-ui .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
+.player-ui .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
+.player-ui .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
+.player-ui .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
+.player-ui .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
+.player-ui .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
+.player-ui .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
+.player-ui .ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
+.player-ui .ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
+.player-ui .ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
+.player-ui .ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
+.player-ui .ui-icon-arrow-4 { background-position: 0 -80px; }
+.player-ui .ui-icon-arrow-4-diag { background-position: -16px -80px; }
+.player-ui .ui-icon-extlink { background-position: -32px -80px; }
+.player-ui .ui-icon-newwin { background-position: -48px -80px; }
+.player-ui .ui-icon-refresh { background-position: -64px -80px; }
+.player-ui .ui-icon-shuffle { background-position: -80px -80px; }
+.player-ui .ui-icon-transfer-e-w { background-position: -96px -80px; }
+.player-ui .ui-icon-transferthick-e-w { background-position: -112px -80px; }
+.player-ui .ui-icon-folder-collapsed { background-position: 0 -96px; }
+.player-ui .ui-icon-folder-open { background-position: -16px -96px; }
+.player-ui .ui-icon-document { background-position: -32px -96px; }
+.player-ui .ui-icon-document-b { background-position: -48px -96px; }
+.player-ui .ui-icon-note { background-position: -64px -96px; }
+.player-ui .ui-icon-mail-closed { background-position: -80px -96px; }
+.player-ui .ui-icon-mail-open { background-position: -96px -96px; }
+.player-ui .ui-icon-suitcase { background-position: -112px -96px; }
+.player-ui .ui-icon-comment { background-position: -128px -96px; }
+.player-ui .ui-icon-person { background-position: -144px -96px; }
+.player-ui .ui-icon-print { background-position: -160px -96px; }
+.player-ui .ui-icon-trash { background-position: -176px -96px; }
+.player-ui .ui-icon-locked { background-position: -192px -96px; }
+.player-ui .ui-icon-unlocked { background-position: -208px -96px; }
+.player-ui .ui-icon-bookmark { background-position: -224px -96px; }
+.player-ui .ui-icon-tag { background-position: -240px -96px; }
+.player-ui .ui-icon-home { background-position: 0 -112px; }
+.player-ui .ui-icon-flag { background-position: -16px -112px; }
+.player-ui .ui-icon-calendar { background-position: -32px -112px; }
+.player-ui .ui-icon-cart { background-position: -48px -112px; }
+.player-ui .ui-icon-pencil { background-position: -64px -112px; }
+.player-ui .ui-icon-clock { background-position: -80px -112px; }
+.player-ui .ui-icon-disk { background-position: -96px -112px; }
+.player-ui .ui-icon-calculator { background-position: -112px -112px; }
+.player-ui .ui-icon-zoomin { background-position: -128px -112px; }
+.player-ui .ui-icon-zoomout { background-position: -144px -112px; }
+.player-ui .ui-icon-search { background-position: -160px -112px; }
+.player-ui .ui-icon-wrench { background-position: -176px -112px; }
+.player-ui .ui-icon-gear { background-position: -192px -112px; }
+.player-ui .ui-icon-heart { background-position: -208px -112px; }
+.player-ui .ui-icon-star { background-position: -224px -112px; }
+.player-ui .ui-icon-link { background-position: -240px -112px; }
+.player-ui .ui-icon-cancel { background-position: 0 -128px; }
+.player-ui .ui-icon-plus { background-position: -16px -128px; }
+.player-ui .ui-icon-plusthick { background-position: -32px -128px; }
+.player-ui .ui-icon-minus { background-position: -48px -128px; }
+.player-ui .ui-icon-minusthick { background-position: -64px -128px; }
+.player-ui .ui-icon-close { background-position: -80px -128px; }
+.player-ui .ui-icon-closethick { background-position: -96px -128px; }
+.player-ui .ui-icon-key { background-position: -112px -128px; }
+.player-ui .ui-icon-lightbulb { background-position: -128px -128px; }
+.player-ui .ui-icon-scissors { background-position: -144px -128px; }
+.player-ui .ui-icon-clipboard { background-position: -160px -128px; }
+.player-ui .ui-icon-copy { background-position: -176px -128px; }
+.player-ui .ui-icon-contact { background-position: -192px -128px; }
+.player-ui .ui-icon-image { background-position: -208px -128px; }
+.player-ui .ui-icon-video { background-position: -224px -128px; }
+.player-ui .ui-icon-script { background-position: -240px -128px; }
+.player-ui .ui-icon-alert { background-position: 0 -144px; }
+.player-ui .ui-icon-info { background-position: -16px -144px; }
+.player-ui .ui-icon-notice { background-position: -32px -144px; }
+.player-ui .ui-icon-help { background-position: -48px -144px; }
+.player-ui .ui-icon-check { background-position: -64px -144px; }
+.player-ui .ui-icon-bullet { background-position: -80px -144px; }
+.player-ui .ui-icon-radio-off { background-position: -96px -144px; }
+.player-ui .ui-icon-radio-on { background-position: -112px -144px; }
+.player-ui .ui-icon-pin-w { background-position: -128px -144px; }
+.player-ui .ui-icon-pin-s { background-position: -144px -144px; }
+.player-ui .ui-icon-play { background-position: 0 -160px; }
+.player-ui .ui-icon-pause { background-position: -16px -160px; }
+.player-ui .ui-icon-seek-next { background-position: -32px -160px; }
+.player-ui .ui-icon-seek-prev { background-position: -48px -160px; }
+.player-ui .ui-icon-seek-end { background-position: -64px -160px; }
+.player-ui .ui-icon-seek-start { background-position: -80px -160px; }
+/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
+.player-ui .ui-icon-seek-first { background-position: -80px -160px; }
+.player-ui .ui-icon-stop { background-position: -96px -160px; }
+.player-ui .ui-icon-eject { background-position: -112px -160px; }
+.player-ui .ui-icon-volume-off { background-position: -128px -160px; }
+.player-ui .ui-icon-volume-on { background-position: -144px -160px; }
+.player-ui .ui-icon-power { background-position: 0 -176px; }
+.player-ui .ui-icon-signal-diag { background-position: -16px -176px; }
+.player-ui .ui-icon-signal { background-position: -32px -176px; }
+.player-ui .ui-icon-battery-0 { background-position: -48px -176px; }
+.player-ui .ui-icon-battery-1 { background-position: -64px -176px; }
+.player-ui .ui-icon-battery-2 { background-position: -80px -176px; }
+.player-ui .ui-icon-battery-3 { background-position: -96px -176px; }
+.player-ui .ui-icon-circle-plus { background-position: 0 -192px; }
+.player-ui .ui-icon-circle-minus { background-position: -16px -192px; }
+.player-ui .ui-icon-circle-close { background-position: -32px -192px; }
+.player-ui .ui-icon-circle-triangle-e { background-position: -48px -192px; }
+.player-ui .ui-icon-circle-triangle-s { background-position: -64px -192px; }
+.player-ui .ui-icon-circle-triangle-w { background-position: -80px -192px; }
+.player-ui .ui-icon-circle-triangle-n { background-position: -96px -192px; }
+.player-ui .ui-icon-circle-arrow-e { background-position: -112px -192px; }
+.player-ui .ui-icon-circle-arrow-s { background-position: -128px -192px; }
+.player-ui .ui-icon-circle-arrow-w { background-position: -144px -192px; }
+.player-ui .ui-icon-circle-arrow-n { background-position: -160px -192px; }
+.player-ui .ui-icon-circle-zoomin { background-position: -176px -192px; }
+.player-ui .ui-icon-circle-zoomout { background-position: -192px -192px; }
+.player-ui .ui-icon-circle-check { background-position: -208px -192px; }
+.player-ui .ui-icon-circlesmall-plus { background-position: 0 -208px; }
+.player-ui .ui-icon-circlesmall-minus { background-position: -16px -208px; }
+.player-ui .ui-icon-circlesmall-close { background-position: -32px -208px; }
+.player-ui .ui-icon-squaresmall-plus { background-position: -48px -208px; }
+.player-ui .ui-icon-squaresmall-minus { background-position: -64px -208px; }
+.player-ui .ui-icon-squaresmall-close { background-position: -80px -208px; }
+.player-ui .ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
+.player-ui .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
+.player-ui .ui-icon-grip-solid-vertical { background-position: -32px -224px; }
+.player-ui .ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
+.player-ui .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
+.player-ui .ui-icon-grip-diagonal-se { background-position: -80px -224px; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Corner radius */
+.player-ui .ui-corner-all, .player-ui .ui-corner-top, .player-ui .ui-corner-left, .player-ui .ui-corner-tl { -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; -khtml-border-top-left-radius: 6px; border-top-left-radius: 6px; }
+.player-ui .ui-corner-all, .player-ui .ui-corner-top, .player-ui .ui-corner-right, .player-ui .ui-corner-tr { -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; -khtml-border-top-right-radius: 6px; border-top-right-radius: 6px; }
+.player-ui .ui-corner-all, .player-ui .ui-corner-bottom, .player-ui .ui-corner-left, .player-ui .ui-corner-bl { -moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; -khtml-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px; }
+.player-ui .ui-corner-all, .player-ui .ui-corner-bottom, .player-ui .ui-corner-right, .player-ui .ui-corner-br { -moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; -khtml-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px; }
+
+/* Overlays */
+.player-ui .ui-widget-overlay { background: #eeeeee url(images/ui-bg_flat_0_eeeeee_40x100.png) 50% 50% repeat-x; opacity: .80;filter:Alpha(Opacity=80); }
+.player-ui .ui-widget-shadow { margin: -4px 0 0 -4px; padding: 4px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .60;filter:Alpha(Opacity=60); -moz-border-radius: 0pxdow=0px; -khtml-border-radius: 0pxdow=0px; -webkit-border-radius: 0pxdow=0px; border-radius: 0pxdow=0px; }/*
+ * jQuery UI Resizable 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Resizable#theming
+ */
+.player-ui .ui-resizable { position: relative;}
+.player-ui .ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block; }
+.player-ui .ui-resizable-disabled .ui-resizable-handle, .player-ui .ui-resizable-autohide .ui-resizable-handle { display: none; }
+.player-ui .ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
+.player-ui .ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
+.player-ui .ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
+.player-ui .ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
+.player-ui .ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
+.player-ui .ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
+.player-ui .ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
+.player-ui .ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/*
+ * jQuery UI Selectable 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Selectable#theming
+ */
+.player-ui .ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }
+/*
+ * jQuery UI Accordion 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Accordion#theming
+ */
+/* IE/Win - Fix animation bug - #4615 */
+.player-ui .ui-accordion { width: 100%; }
+.player-ui .ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
+.player-ui .ui-accordion .ui-accordion-li-fix { display: inline; }
+.player-ui .ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
+.player-ui .ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; }
+.player-ui .ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; }
+.player-ui .ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
+.player-ui .ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; }
+.player-ui .ui-accordion .ui-accordion-content-active { display: block; }
+/*
+ * jQuery UI Autocomplete 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Autocomplete#theming
+ */
+.player-ui .ui-autocomplete { position: absolute; cursor: default; }	
+
+/* workarounds */
+* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
+
+/*
+ * jQuery UI Menu 1.8.18
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Menu#theming
+ */
+.player-ui .ui-menu {
+	list-style:none;
+	padding: 2px;
+	margin: 0;
+	display:block;
+	float: left;
+}
+.player-ui .ui-menu .ui-menu {
+	margin-top: -3px;
+}
+.player-ui .ui-menu .ui-menu-item {
+	margin:0;
+	padding: 0;
+	zoom: 1;
+	float: left;
+	clear: left;
+	width: 100%;
+}
+.player-ui .ui-menu .ui-menu-item a {
+	text-decoration:none;
+	display:block;
+	padding:.2em .4em;
+	line-height:1.5;
+	zoom:1;
+}
+.player-ui .ui-menu .ui-menu-item a.ui-state-hover,
+.player-ui .ui-menu .ui-menu-item a.ui-state-active {
+	font-weight: normal;
+	margin: -1px;
+}
+/*
+ * jQuery UI Button 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Button#theming
+ */
+.player-ui .ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: hidden; *overflow: visible; } /* the overflow property removes extra width in IE */
+.player-ui .ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
+button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
+.player-ui .ui-button-icons-only { width: 3.4em; } 
+button.ui-button-icons-only { width: 3.7em; } 
+
+/*button text element */
+.player-ui .ui-button .ui-button-text { display: block; line-height: 1.4;  }
+.player-ui .ui-button-text-only .ui-button-text { padding: .4em 1em; }
+.player-ui .ui-button-icon-only .ui-button-text, .player-ui .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
+.player-ui .ui-button-text-icon-primary .ui-button-text, .player-ui .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
+.player-ui .ui-button-text-icon-secondary .ui-button-text, .player-ui .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }
+.player-ui .ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }
+/* no icon support for input elements, provide padding by default */
+input.ui-button { padding: .4em 1em; }
+
+/*button icon element(s) */
+.player-ui .ui-button-icon-only .ui-icon, .player-ui .ui-button-text-icon-primary .ui-icon, .player-ui .ui-button-text-icon-secondary .ui-icon, .player-ui .ui-button-text-icons .ui-icon, .player-ui .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
+.player-ui .ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
+.player-ui .ui-button-text-icon-primary .ui-button-icon-primary, .player-ui .ui-button-text-icons .ui-button-icon-primary, .player-ui .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
+.player-ui .ui-button-text-icon-secondary .ui-button-icon-secondary, .player-ui .ui-button-text-icons .ui-button-icon-secondary, .player-ui .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
+.player-ui .ui-button-text-icons .ui-button-icon-secondary, .player-ui .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
+
+/*button sets*/
+.player-ui .ui-buttonset { margin-right: 7px; }
+.player-ui .ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }
+
+/* workarounds */
+button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
+/*
+ * jQuery UI Dialog 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Dialog#theming
+ */
+.player-ui .ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; }
+.player-ui .ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative;  }
+.player-ui .ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; } 
+.player-ui .ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
+.player-ui .ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
+.player-ui .ui-dialog .ui-dialog-titlebar-close:hover, .player-ui .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
+.player-ui .ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
+.player-ui .ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
+.player-ui .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
+.player-ui .ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
+.player-ui .ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
+.player-ui .ui-draggable .ui-dialog-titlebar { cursor: move; }
+/*
+ * jQuery UI Slider 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Slider#theming
+ */
+.player-ui .ui-slider { position: relative; text-align: left; }
+.player-ui .ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
+.player-ui .ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
+
+.player-ui .ui-slider-horizontal { height: .8em; }
+.player-ui .ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
+.player-ui .ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
+.player-ui .ui-slider-horizontal .ui-slider-range-min { left: 0; }
+.player-ui .ui-slider-horizontal .ui-slider-range-max { right: 0; }
+
+.player-ui .ui-slider-vertical { width: .8em; height: 100px; }
+.player-ui .ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
+.player-ui .ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
+.player-ui .ui-slider-vertical .ui-slider-range-min { bottom: 0; }
+.player-ui .ui-slider-vertical .ui-slider-range-max { top: 0; }/*
+ * jQuery UI Tabs 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Tabs#theming
+ */
+.player-ui .ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
+.player-ui .ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
+.player-ui .ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
+.player-ui .ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }
+.player-ui .ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; }
+.player-ui .ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .player-ui .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .player-ui .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
+.player-ui .ui-tabs .ui-tabs-nav li a, .player-ui .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
+.player-ui .ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }
+.player-ui .ui-tabs .ui-tabs-hide { display: none !important; }
+/*
+ * jQuery UI Datepicker 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Datepicker#theming
+ */
+.player-ui .ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }
+.player-ui .ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
+.player-ui .ui-datepicker .ui-datepicker-prev, .player-ui .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
+.player-ui .ui-datepicker .ui-datepicker-prev-hover, .player-ui .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
+.player-ui .ui-datepicker .ui-datepicker-prev { left:2px; }
+.player-ui .ui-datepicker .ui-datepicker-next { right:2px; }
+.player-ui .ui-datepicker .ui-datepicker-prev-hover { left:1px; }
+.player-ui .ui-datepicker .ui-datepicker-next-hover { right:1px; }
+.player-ui .ui-datepicker .ui-datepicker-prev span, .player-ui .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px;  }
+.player-ui .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
+.player-ui .ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
+.player-ui .ui-datepicker select.ui-datepicker-month-year {width: 100%;}
+.player-ui .ui-datepicker select.ui-datepicker-month, 
+.player-ui .ui-datepicker select.ui-datepicker-year { width: 49%;}
+.player-ui .ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
+.player-ui .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0;  }
+.player-ui .ui-datepicker td { border: 0; padding: 1px; }
+.player-ui .ui-datepicker td span, .player-ui .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
+.player-ui .ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
+.player-ui .ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
+.player-ui .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
+
+/* with multiple calendars */
+.player-ui .ui-datepicker.ui-datepicker-multi { width:auto; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group { float:left; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
+.player-ui .ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
+.player-ui .ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
+.player-ui .ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
+.player-ui .ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
+.player-ui .ui-datepicker-row-break { clear:both; width:100%; font-size:0em; }
+
+/* RTL support */
+.player-ui .ui-datepicker-rtl { direction: rtl; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-group { float:right; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+
+/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
+.player-ui .ui-datepicker-cover {
+    display: none; /*sorry for IE5*/
+    display/**/: block; /*sorry for IE5*/
+    position: absolute; /*must have*/
+    z-index: -1; /*must have*/
+    filter: mask(); /*must have*/
+    top: -4px; /*must have*/
+    left: -4px; /*must have*/
+    width: 200px; /*must have*/
+    height: 200px; /*must have*/
+}/*
+ * jQuery UI Progressbar 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Progressbar#theming
+ */
+.player-ui .ui-progressbar { height:2em; text-align: left; overflow: hidden; }
+.player-ui .ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/jquery-ui/pepper-grinder/images/ui-bg_diagonal-maze_20_6e4f1c_10x10.png b/public/admin/js/osmplayer/jquery-ui/pepper-grinder/images/ui-bg_diagonal-maze_20_6e4f1c_10x10.png
new file mode 100644
index 0000000000000000000000000000000000000000..1bb13a2539636d70117fa6cb75f2d9640f544b83
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/pepper-grinder/images/ui-bg_diagonal-maze_20_6e4f1c_10x10.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/pepper-grinder/images/ui-bg_diagonal-maze_40_000000_10x10.png b/public/admin/js/osmplayer/jquery-ui/pepper-grinder/images/ui-bg_diagonal-maze_40_000000_10x10.png
new file mode 100644
index 0000000000000000000000000000000000000000..c6b7e984a0365e86ff271e58c057695562c2d1ce
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/pepper-grinder/images/ui-bg_diagonal-maze_40_000000_10x10.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/pepper-grinder/images/ui-bg_fine-grain_10_eceadf_60x60.png b/public/admin/js/osmplayer/jquery-ui/pepper-grinder/images/ui-bg_fine-grain_10_eceadf_60x60.png
new file mode 100644
index 0000000000000000000000000000000000000000..46567420785a91503f30de00eec3a331cd4a969e
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/pepper-grinder/images/ui-bg_fine-grain_10_eceadf_60x60.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/pepper-grinder/images/ui-bg_fine-grain_10_f8f7f6_60x60.png b/public/admin/js/osmplayer/jquery-ui/pepper-grinder/images/ui-bg_fine-grain_10_f8f7f6_60x60.png
new file mode 100644
index 0000000000000000000000000000000000000000..4550e40778219da3b91c383a9afa7ddf01c5f973
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/pepper-grinder/images/ui-bg_fine-grain_10_f8f7f6_60x60.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/pepper-grinder/images/ui-bg_fine-grain_15_eceadf_60x60.png b/public/admin/js/osmplayer/jquery-ui/pepper-grinder/images/ui-bg_fine-grain_15_eceadf_60x60.png
new file mode 100644
index 0000000000000000000000000000000000000000..e6308291914efa50ad6efab74e602d622deeef8d
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/pepper-grinder/images/ui-bg_fine-grain_15_eceadf_60x60.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/pepper-grinder/images/ui-bg_fine-grain_15_f7f3de_60x60.png b/public/admin/js/osmplayer/jquery-ui/pepper-grinder/images/ui-bg_fine-grain_15_f7f3de_60x60.png
new file mode 100644
index 0000000000000000000000000000000000000000..475c1fa0d721e80a2dcc96a8bb67bc591a236920
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/pepper-grinder/images/ui-bg_fine-grain_15_f7f3de_60x60.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/pepper-grinder/images/ui-bg_fine-grain_15_ffffff_60x60.png b/public/admin/js/osmplayer/jquery-ui/pepper-grinder/images/ui-bg_fine-grain_15_ffffff_60x60.png
new file mode 100644
index 0000000000000000000000000000000000000000..19ab46c3f875f352230abdd8a2a651003b8b83b1
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/pepper-grinder/images/ui-bg_fine-grain_15_ffffff_60x60.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/pepper-grinder/images/ui-bg_fine-grain_65_654b24_60x60.png b/public/admin/js/osmplayer/jquery-ui/pepper-grinder/images/ui-bg_fine-grain_65_654b24_60x60.png
new file mode 100644
index 0000000000000000000000000000000000000000..40b75b9943b3570a2d2c08a1980917a7d541301e
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/pepper-grinder/images/ui-bg_fine-grain_65_654b24_60x60.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/pepper-grinder/images/ui-bg_fine-grain_68_b83400_60x60.png b/public/admin/js/osmplayer/jquery-ui/pepper-grinder/images/ui-bg_fine-grain_68_b83400_60x60.png
new file mode 100644
index 0000000000000000000000000000000000000000..4e197986238f6f343b967cfc3e2b1231288c2c83
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/pepper-grinder/images/ui-bg_fine-grain_68_b83400_60x60.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/pepper-grinder/images/ui-icons_222222_256x240.png b/public/admin/js/osmplayer/jquery-ui/pepper-grinder/images/ui-icons_222222_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..b273ff111d219c9b9a8b96d57683d0075fb7871a
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/pepper-grinder/images/ui-icons_222222_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/pepper-grinder/images/ui-icons_3572ac_256x240.png b/public/admin/js/osmplayer/jquery-ui/pepper-grinder/images/ui-icons_3572ac_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..0f2db87cd8293fccff0a22e349823951744287a2
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/pepper-grinder/images/ui-icons_3572ac_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/pepper-grinder/images/ui-icons_8c291d_256x240.png b/public/admin/js/osmplayer/jquery-ui/pepper-grinder/images/ui-icons_8c291d_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..a90f0cec755b4a555e4d505ed45a02893c305dd5
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/pepper-grinder/images/ui-icons_8c291d_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/pepper-grinder/images/ui-icons_b83400_256x240.png b/public/admin/js/osmplayer/jquery-ui/pepper-grinder/images/ui-icons_b83400_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..7ca9d0b84c359a3b0d621f4aad50c0d5b2ef58a0
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/pepper-grinder/images/ui-icons_b83400_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/pepper-grinder/images/ui-icons_fbdb93_256x240.png b/public/admin/js/osmplayer/jquery-ui/pepper-grinder/images/ui-icons_fbdb93_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..95c4a66f6679511ccf8a96c5af8521308cd276f7
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/pepper-grinder/images/ui-icons_fbdb93_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/pepper-grinder/images/ui-icons_ffffff_256x240.png b/public/admin/js/osmplayer/jquery-ui/pepper-grinder/images/ui-icons_ffffff_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..42f8f992c727ddaa617da224a522e463df690387
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/pepper-grinder/images/ui-icons_ffffff_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/pepper-grinder/jquery-ui-1.8.18.custom.css b/public/admin/js/osmplayer/jquery-ui/pepper-grinder/jquery-ui-1.8.18.custom.css
new file mode 100644
index 0000000000000000000000000000000000000000..17d326a2428e26f7a7f73da115d501b434d12863
--- /dev/null
+++ b/public/admin/js/osmplayer/jquery-ui/pepper-grinder/jquery-ui-1.8.18.custom.css
@@ -0,0 +1,565 @@
+/*
+ * jQuery UI CSS Framework 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ */
+
+/* Layout helpers
+----------------------------------*/
+.player-ui .ui-helper-hidden { display: none; }
+.player-ui .ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
+.player-ui .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
+.player-ui .ui-helper-clearfix:before, .player-ui .ui-helper-clearfix:after { content: ""; display: table; }
+.player-ui .ui-helper-clearfix:after { clear: both; }
+.player-ui .ui-helper-clearfix { zoom: 1; }
+.player-ui .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
+
+
+/* Interaction Cues
+----------------------------------*/
+.player-ui .ui-state-disabled { cursor: default !important; }
+
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.player-ui .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+.player-ui .ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
+
+
+/*
+ * jQuery UI CSS Framework 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ *
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS,%20Tahoma,%20Verdana,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=6px&bgColorHeader=ffffff&bgTextureHeader=23_fine_grain.png&bgImgOpacityHeader=15&borderColorHeader=d4d1bf&fcHeader=453821&iconColorHeader=b83400&bgColorContent=eceadf&bgTextureContent=23_fine_grain.png&bgImgOpacityContent=10&borderColorContent=d9d6c4&fcContent=1f1f1f&iconColorContent=222222&bgColorDefault=f8f7f6&bgTextureDefault=23_fine_grain.png&bgImgOpacityDefault=10&borderColorDefault=cbc7bd&fcDefault=654b24&iconColorDefault=b83400&bgColorHover=654b24&bgTextureHover=23_fine_grain.png&bgImgOpacityHover=65&borderColorHover=654b24&fcHover=ffffff&iconColorHover=ffffff&bgColorActive=eceadf&bgTextureActive=23_fine_grain.png&bgImgOpacityActive=15&borderColorActive=d9d6c4&fcActive=140f06&iconColorActive=8c291d&bgColorHighlight=f7f3de&bgTextureHighlight=23_fine_grain.png&bgImgOpacityHighlight=15&borderColorHighlight=b2a266&fcHighlight=3a3427&iconColorHighlight=3572ac&bgColorError=b83400&bgTextureError=23_fine_grain.png&bgImgOpacityError=68&borderColorError=681818&fcError=ffffff&iconColorError=fbdb93&bgColorOverlay=6e4f1c&bgTextureOverlay=16_diagonal_maze.png&bgImgOpacityOverlay=20&opacityOverlay=60&bgColorShadow=000000&bgTextureShadow=16_diagonal_maze.png&bgImgOpacityShadow=40&opacityShadow=60&thicknessShadow=5px&offsetTopShadow=0&offsetLeftShadow=-10px&cornerRadiusShadow=18px
+ */
+
+
+/* Component containers
+----------------------------------*/
+.player-ui .ui-widget { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1.1em; }
+.player-ui .ui-widget .ui-widget { font-size: 1em; }
+.player-ui .ui-widget input, .player-ui .ui-widget select, .player-ui .ui-widget textarea, .player-ui .ui-widget button { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1em; }
+.player-ui .ui-widget-content { border: 1px solid #d9d6c4; background: #eceadf url(images/ui-bg_fine-grain_10_eceadf_60x60.png) 50% 50% repeat; color: #1f1f1f; }
+.player-ui .ui-widget-content a { color: #1f1f1f; }
+.player-ui .ui-widget-header { border: 1px solid #d4d1bf; background: #ffffff url(images/ui-bg_fine-grain_15_ffffff_60x60.png) 50% 50% repeat; color: #453821; font-weight: bold; }
+.player-ui .ui-widget-header a { color: #453821; }
+
+/* Interaction states
+----------------------------------*/
+.player-ui .ui-state-default, .player-ui .ui-widget-content .ui-state-default, .player-ui .ui-widget-header .ui-state-default { border: 1px solid #cbc7bd; background: #f8f7f6 url(images/ui-bg_fine-grain_10_f8f7f6_60x60.png) 50% 50% repeat; font-weight: bold; color: #654b24; }
+.player-ui .ui-state-default a, .player-ui .ui-state-default a:link, .player-ui .ui-state-default a:visited { color: #654b24; text-decoration: none; }
+.player-ui .ui-state-hover, .player-ui .ui-widget-content .ui-state-hover, .player-ui .ui-widget-header .ui-state-hover, .player-ui .ui-state-focus, .player-ui .ui-widget-content .ui-state-focus, .player-ui .ui-widget-header .ui-state-focus { border: 1px solid #654b24; background: #654b24 url(images/ui-bg_fine-grain_65_654b24_60x60.png) 50% 50% repeat; font-weight: bold; color: #ffffff; }
+.player-ui .ui-state-hover a, .player-ui .ui-state-hover a:hover { color: #ffffff; text-decoration: none; }
+.player-ui .ui-state-active, .player-ui .ui-widget-content .ui-state-active, .player-ui .ui-widget-header .ui-state-active { border: 1px solid #d9d6c4; background: #eceadf url(images/ui-bg_fine-grain_15_eceadf_60x60.png) 50% 50% repeat; font-weight: bold; color: #140f06; }
+.player-ui .ui-state-active a, .player-ui .ui-state-active a:link, .player-ui .ui-state-active a:visited { color: #140f06; text-decoration: none; }
+.player-ui .ui-widget :active { outline: none; }
+
+/* Interaction Cues
+----------------------------------*/
+.player-ui .ui-state-highlight, .player-ui .ui-widget-content .ui-state-highlight, .player-ui .ui-widget-header .ui-state-highlight  {border: 1px solid #b2a266; background: #f7f3de url(images/ui-bg_fine-grain_15_f7f3de_60x60.png) 50% 50% repeat; color: #3a3427; }
+.player-ui .ui-state-highlight a, .player-ui .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #3a3427; }
+.player-ui .ui-state-error, .player-ui .ui-widget-content .ui-state-error, .player-ui .ui-widget-header .ui-state-error {border: 1px solid #681818; background: #b83400 url(images/ui-bg_fine-grain_68_b83400_60x60.png) 50% 50% repeat; color: #ffffff; }
+.player-ui .ui-state-error a, .player-ui .ui-widget-content .ui-state-error a, .player-ui .ui-widget-header .ui-state-error a { color: #ffffff; }
+.player-ui .ui-state-error-text, .player-ui .ui-widget-content .ui-state-error-text, .player-ui .ui-widget-header .ui-state-error-text { color: #ffffff; }
+.player-ui .ui-priority-primary, .player-ui .ui-widget-content .ui-priority-primary, .player-ui .ui-widget-header .ui-priority-primary { font-weight: bold; }
+.player-ui .ui-priority-secondary, .player-ui .ui-widget-content .ui-priority-secondary,  .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
+.player-ui .ui-state-disabled, .player-ui .ui-widget-content .ui-state-disabled, .player-ui .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.player-ui .ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); }
+.player-ui .ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
+.player-ui .ui-widget-header .ui-icon {background-image: url(images/ui-icons_b83400_256x240.png); }
+.player-ui .ui-state-default .ui-icon { background-image: url(images/ui-icons_b83400_256x240.png); }
+.player-ui .ui-state-hover .ui-icon, .player-ui .ui-state-focus .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); }
+.player-ui .ui-state-active .ui-icon {background-image: url(images/ui-icons_8c291d_256x240.png); }
+.player-ui .ui-state-highlight .ui-icon {background-image: url(images/ui-icons_3572ac_256x240.png); }
+.player-ui .ui-state-error .ui-icon, .player-ui .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_fbdb93_256x240.png); }
+
+/* positioning */
+.player-ui .ui-icon-carat-1-n { background-position: 0 0; }
+.player-ui .ui-icon-carat-1-ne { background-position: -16px 0; }
+.player-ui .ui-icon-carat-1-e { background-position: -32px 0; }
+.player-ui .ui-icon-carat-1-se { background-position: -48px 0; }
+.player-ui .ui-icon-carat-1-s { background-position: -64px 0; }
+.player-ui .ui-icon-carat-1-sw { background-position: -80px 0; }
+.player-ui .ui-icon-carat-1-w { background-position: -96px 0; }
+.player-ui .ui-icon-carat-1-nw { background-position: -112px 0; }
+.player-ui .ui-icon-carat-2-n-s { background-position: -128px 0; }
+.player-ui .ui-icon-carat-2-e-w { background-position: -144px 0; }
+.player-ui .ui-icon-triangle-1-n { background-position: 0 -16px; }
+.player-ui .ui-icon-triangle-1-ne { background-position: -16px -16px; }
+.player-ui .ui-icon-triangle-1-e { background-position: -32px -16px; }
+.player-ui .ui-icon-triangle-1-se { background-position: -48px -16px; }
+.player-ui .ui-icon-triangle-1-s { background-position: -64px -16px; }
+.player-ui .ui-icon-triangle-1-sw { background-position: -80px -16px; }
+.player-ui .ui-icon-triangle-1-w { background-position: -96px -16px; }
+.player-ui .ui-icon-triangle-1-nw { background-position: -112px -16px; }
+.player-ui .ui-icon-triangle-2-n-s { background-position: -128px -16px; }
+.player-ui .ui-icon-triangle-2-e-w { background-position: -144px -16px; }
+.player-ui .ui-icon-arrow-1-n { background-position: 0 -32px; }
+.player-ui .ui-icon-arrow-1-ne { background-position: -16px -32px; }
+.player-ui .ui-icon-arrow-1-e { background-position: -32px -32px; }
+.player-ui .ui-icon-arrow-1-se { background-position: -48px -32px; }
+.player-ui .ui-icon-arrow-1-s { background-position: -64px -32px; }
+.player-ui .ui-icon-arrow-1-sw { background-position: -80px -32px; }
+.player-ui .ui-icon-arrow-1-w { background-position: -96px -32px; }
+.player-ui .ui-icon-arrow-1-nw { background-position: -112px -32px; }
+.player-ui .ui-icon-arrow-2-n-s { background-position: -128px -32px; }
+.player-ui .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
+.player-ui .ui-icon-arrow-2-e-w { background-position: -160px -32px; }
+.player-ui .ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
+.player-ui .ui-icon-arrowstop-1-n { background-position: -192px -32px; }
+.player-ui .ui-icon-arrowstop-1-e { background-position: -208px -32px; }
+.player-ui .ui-icon-arrowstop-1-s { background-position: -224px -32px; }
+.player-ui .ui-icon-arrowstop-1-w { background-position: -240px -32px; }
+.player-ui .ui-icon-arrowthick-1-n { background-position: 0 -48px; }
+.player-ui .ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
+.player-ui .ui-icon-arrowthick-1-e { background-position: -32px -48px; }
+.player-ui .ui-icon-arrowthick-1-se { background-position: -48px -48px; }
+.player-ui .ui-icon-arrowthick-1-s { background-position: -64px -48px; }
+.player-ui .ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
+.player-ui .ui-icon-arrowthick-1-w { background-position: -96px -48px; }
+.player-ui .ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
+.player-ui .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
+.player-ui .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
+.player-ui .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
+.player-ui .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
+.player-ui .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
+.player-ui .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
+.player-ui .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
+.player-ui .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
+.player-ui .ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
+.player-ui .ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
+.player-ui .ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
+.player-ui .ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
+.player-ui .ui-icon-arrow-4 { background-position: 0 -80px; }
+.player-ui .ui-icon-arrow-4-diag { background-position: -16px -80px; }
+.player-ui .ui-icon-extlink { background-position: -32px -80px; }
+.player-ui .ui-icon-newwin { background-position: -48px -80px; }
+.player-ui .ui-icon-refresh { background-position: -64px -80px; }
+.player-ui .ui-icon-shuffle { background-position: -80px -80px; }
+.player-ui .ui-icon-transfer-e-w { background-position: -96px -80px; }
+.player-ui .ui-icon-transferthick-e-w { background-position: -112px -80px; }
+.player-ui .ui-icon-folder-collapsed { background-position: 0 -96px; }
+.player-ui .ui-icon-folder-open { background-position: -16px -96px; }
+.player-ui .ui-icon-document { background-position: -32px -96px; }
+.player-ui .ui-icon-document-b { background-position: -48px -96px; }
+.player-ui .ui-icon-note { background-position: -64px -96px; }
+.player-ui .ui-icon-mail-closed { background-position: -80px -96px; }
+.player-ui .ui-icon-mail-open { background-position: -96px -96px; }
+.player-ui .ui-icon-suitcase { background-position: -112px -96px; }
+.player-ui .ui-icon-comment { background-position: -128px -96px; }
+.player-ui .ui-icon-person { background-position: -144px -96px; }
+.player-ui .ui-icon-print { background-position: -160px -96px; }
+.player-ui .ui-icon-trash { background-position: -176px -96px; }
+.player-ui .ui-icon-locked { background-position: -192px -96px; }
+.player-ui .ui-icon-unlocked { background-position: -208px -96px; }
+.player-ui .ui-icon-bookmark { background-position: -224px -96px; }
+.player-ui .ui-icon-tag { background-position: -240px -96px; }
+.player-ui .ui-icon-home { background-position: 0 -112px; }
+.player-ui .ui-icon-flag { background-position: -16px -112px; }
+.player-ui .ui-icon-calendar { background-position: -32px -112px; }
+.player-ui .ui-icon-cart { background-position: -48px -112px; }
+.player-ui .ui-icon-pencil { background-position: -64px -112px; }
+.player-ui .ui-icon-clock { background-position: -80px -112px; }
+.player-ui .ui-icon-disk { background-position: -96px -112px; }
+.player-ui .ui-icon-calculator { background-position: -112px -112px; }
+.player-ui .ui-icon-zoomin { background-position: -128px -112px; }
+.player-ui .ui-icon-zoomout { background-position: -144px -112px; }
+.player-ui .ui-icon-search { background-position: -160px -112px; }
+.player-ui .ui-icon-wrench { background-position: -176px -112px; }
+.player-ui .ui-icon-gear { background-position: -192px -112px; }
+.player-ui .ui-icon-heart { background-position: -208px -112px; }
+.player-ui .ui-icon-star { background-position: -224px -112px; }
+.player-ui .ui-icon-link { background-position: -240px -112px; }
+.player-ui .ui-icon-cancel { background-position: 0 -128px; }
+.player-ui .ui-icon-plus { background-position: -16px -128px; }
+.player-ui .ui-icon-plusthick { background-position: -32px -128px; }
+.player-ui .ui-icon-minus { background-position: -48px -128px; }
+.player-ui .ui-icon-minusthick { background-position: -64px -128px; }
+.player-ui .ui-icon-close { background-position: -80px -128px; }
+.player-ui .ui-icon-closethick { background-position: -96px -128px; }
+.player-ui .ui-icon-key { background-position: -112px -128px; }
+.player-ui .ui-icon-lightbulb { background-position: -128px -128px; }
+.player-ui .ui-icon-scissors { background-position: -144px -128px; }
+.player-ui .ui-icon-clipboard { background-position: -160px -128px; }
+.player-ui .ui-icon-copy { background-position: -176px -128px; }
+.player-ui .ui-icon-contact { background-position: -192px -128px; }
+.player-ui .ui-icon-image { background-position: -208px -128px; }
+.player-ui .ui-icon-video { background-position: -224px -128px; }
+.player-ui .ui-icon-script { background-position: -240px -128px; }
+.player-ui .ui-icon-alert { background-position: 0 -144px; }
+.player-ui .ui-icon-info { background-position: -16px -144px; }
+.player-ui .ui-icon-notice { background-position: -32px -144px; }
+.player-ui .ui-icon-help { background-position: -48px -144px; }
+.player-ui .ui-icon-check { background-position: -64px -144px; }
+.player-ui .ui-icon-bullet { background-position: -80px -144px; }
+.player-ui .ui-icon-radio-off { background-position: -96px -144px; }
+.player-ui .ui-icon-radio-on { background-position: -112px -144px; }
+.player-ui .ui-icon-pin-w { background-position: -128px -144px; }
+.player-ui .ui-icon-pin-s { background-position: -144px -144px; }
+.player-ui .ui-icon-play { background-position: 0 -160px; }
+.player-ui .ui-icon-pause { background-position: -16px -160px; }
+.player-ui .ui-icon-seek-next { background-position: -32px -160px; }
+.player-ui .ui-icon-seek-prev { background-position: -48px -160px; }
+.player-ui .ui-icon-seek-end { background-position: -64px -160px; }
+.player-ui .ui-icon-seek-start { background-position: -80px -160px; }
+/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
+.player-ui .ui-icon-seek-first { background-position: -80px -160px; }
+.player-ui .ui-icon-stop { background-position: -96px -160px; }
+.player-ui .ui-icon-eject { background-position: -112px -160px; }
+.player-ui .ui-icon-volume-off { background-position: -128px -160px; }
+.player-ui .ui-icon-volume-on { background-position: -144px -160px; }
+.player-ui .ui-icon-power { background-position: 0 -176px; }
+.player-ui .ui-icon-signal-diag { background-position: -16px -176px; }
+.player-ui .ui-icon-signal { background-position: -32px -176px; }
+.player-ui .ui-icon-battery-0 { background-position: -48px -176px; }
+.player-ui .ui-icon-battery-1 { background-position: -64px -176px; }
+.player-ui .ui-icon-battery-2 { background-position: -80px -176px; }
+.player-ui .ui-icon-battery-3 { background-position: -96px -176px; }
+.player-ui .ui-icon-circle-plus { background-position: 0 -192px; }
+.player-ui .ui-icon-circle-minus { background-position: -16px -192px; }
+.player-ui .ui-icon-circle-close { background-position: -32px -192px; }
+.player-ui .ui-icon-circle-triangle-e { background-position: -48px -192px; }
+.player-ui .ui-icon-circle-triangle-s { background-position: -64px -192px; }
+.player-ui .ui-icon-circle-triangle-w { background-position: -80px -192px; }
+.player-ui .ui-icon-circle-triangle-n { background-position: -96px -192px; }
+.player-ui .ui-icon-circle-arrow-e { background-position: -112px -192px; }
+.player-ui .ui-icon-circle-arrow-s { background-position: -128px -192px; }
+.player-ui .ui-icon-circle-arrow-w { background-position: -144px -192px; }
+.player-ui .ui-icon-circle-arrow-n { background-position: -160px -192px; }
+.player-ui .ui-icon-circle-zoomin { background-position: -176px -192px; }
+.player-ui .ui-icon-circle-zoomout { background-position: -192px -192px; }
+.player-ui .ui-icon-circle-check { background-position: -208px -192px; }
+.player-ui .ui-icon-circlesmall-plus { background-position: 0 -208px; }
+.player-ui .ui-icon-circlesmall-minus { background-position: -16px -208px; }
+.player-ui .ui-icon-circlesmall-close { background-position: -32px -208px; }
+.player-ui .ui-icon-squaresmall-plus { background-position: -48px -208px; }
+.player-ui .ui-icon-squaresmall-minus { background-position: -64px -208px; }
+.player-ui .ui-icon-squaresmall-close { background-position: -80px -208px; }
+.player-ui .ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
+.player-ui .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
+.player-ui .ui-icon-grip-solid-vertical { background-position: -32px -224px; }
+.player-ui .ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
+.player-ui .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
+.player-ui .ui-icon-grip-diagonal-se { background-position: -80px -224px; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Corner radius */
+.player-ui .ui-corner-all, .player-ui .ui-corner-top, .player-ui .ui-corner-left, .player-ui .ui-corner-tl { -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; -khtml-border-top-left-radius: 6px; border-top-left-radius: 6px; }
+.player-ui .ui-corner-all, .player-ui .ui-corner-top, .player-ui .ui-corner-right, .player-ui .ui-corner-tr { -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; -khtml-border-top-right-radius: 6px; border-top-right-radius: 6px; }
+.player-ui .ui-corner-all, .player-ui .ui-corner-bottom, .player-ui .ui-corner-left, .player-ui .ui-corner-bl { -moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; -khtml-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px; }
+.player-ui .ui-corner-all, .player-ui .ui-corner-bottom, .player-ui .ui-corner-right, .player-ui .ui-corner-br { -moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; -khtml-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px; }
+
+/* Overlays */
+.player-ui .ui-widget-overlay { background: #6e4f1c url(images/ui-bg_diagonal-maze_20_6e4f1c_10x10.png) 50% 50% repeat; opacity: .60;filter:Alpha(Opacity=60); }
+.player-ui .ui-widget-shadow { margin: 0 0 0 -10px; padding: 5px; background: #000000 url(images/ui-bg_diagonal-maze_40_000000_10x10.png) 50% 50% repeat; opacity: .60;filter:Alpha(Opacity=60); -moz-border-radius: 18px; -khtml-border-radius: 18px; -webkit-border-radius: 18px; border-radius: 18px; }/*
+ * jQuery UI Resizable 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Resizable#theming
+ */
+.player-ui .ui-resizable { position: relative;}
+.player-ui .ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block; }
+.player-ui .ui-resizable-disabled .ui-resizable-handle, .player-ui .ui-resizable-autohide .ui-resizable-handle { display: none; }
+.player-ui .ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
+.player-ui .ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
+.player-ui .ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
+.player-ui .ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
+.player-ui .ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
+.player-ui .ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
+.player-ui .ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
+.player-ui .ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/*
+ * jQuery UI Selectable 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Selectable#theming
+ */
+.player-ui .ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }
+/*
+ * jQuery UI Accordion 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Accordion#theming
+ */
+/* IE/Win - Fix animation bug - #4615 */
+.player-ui .ui-accordion { width: 100%; }
+.player-ui .ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
+.player-ui .ui-accordion .ui-accordion-li-fix { display: inline; }
+.player-ui .ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
+.player-ui .ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; }
+.player-ui .ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; }
+.player-ui .ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
+.player-ui .ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; }
+.player-ui .ui-accordion .ui-accordion-content-active { display: block; }
+/*
+ * jQuery UI Autocomplete 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Autocomplete#theming
+ */
+.player-ui .ui-autocomplete { position: absolute; cursor: default; }	
+
+/* workarounds */
+* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
+
+/*
+ * jQuery UI Menu 1.8.18
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Menu#theming
+ */
+.player-ui .ui-menu {
+	list-style:none;
+	padding: 2px;
+	margin: 0;
+	display:block;
+	float: left;
+}
+.player-ui .ui-menu .ui-menu {
+	margin-top: -3px;
+}
+.player-ui .ui-menu .ui-menu-item {
+	margin:0;
+	padding: 0;
+	zoom: 1;
+	float: left;
+	clear: left;
+	width: 100%;
+}
+.player-ui .ui-menu .ui-menu-item a {
+	text-decoration:none;
+	display:block;
+	padding:.2em .4em;
+	line-height:1.5;
+	zoom:1;
+}
+.player-ui .ui-menu .ui-menu-item a.ui-state-hover,
+.player-ui .ui-menu .ui-menu-item a.ui-state-active {
+	font-weight: normal;
+	margin: -1px;
+}
+/*
+ * jQuery UI Button 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Button#theming
+ */
+.player-ui .ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: hidden; *overflow: visible; } /* the overflow property removes extra width in IE */
+.player-ui .ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
+button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
+.player-ui .ui-button-icons-only { width: 3.4em; } 
+button.ui-button-icons-only { width: 3.7em; } 
+
+/*button text element */
+.player-ui .ui-button .ui-button-text { display: block; line-height: 1.4;  }
+.player-ui .ui-button-text-only .ui-button-text { padding: .4em 1em; }
+.player-ui .ui-button-icon-only .ui-button-text, .player-ui .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
+.player-ui .ui-button-text-icon-primary .ui-button-text, .player-ui .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
+.player-ui .ui-button-text-icon-secondary .ui-button-text, .player-ui .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }
+.player-ui .ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }
+/* no icon support for input elements, provide padding by default */
+input.ui-button { padding: .4em 1em; }
+
+/*button icon element(s) */
+.player-ui .ui-button-icon-only .ui-icon, .player-ui .ui-button-text-icon-primary .ui-icon, .player-ui .ui-button-text-icon-secondary .ui-icon, .player-ui .ui-button-text-icons .ui-icon, .player-ui .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
+.player-ui .ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
+.player-ui .ui-button-text-icon-primary .ui-button-icon-primary, .player-ui .ui-button-text-icons .ui-button-icon-primary, .player-ui .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
+.player-ui .ui-button-text-icon-secondary .ui-button-icon-secondary, .player-ui .ui-button-text-icons .ui-button-icon-secondary, .player-ui .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
+.player-ui .ui-button-text-icons .ui-button-icon-secondary, .player-ui .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
+
+/*button sets*/
+.player-ui .ui-buttonset { margin-right: 7px; }
+.player-ui .ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }
+
+/* workarounds */
+button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
+/*
+ * jQuery UI Dialog 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Dialog#theming
+ */
+.player-ui .ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; }
+.player-ui .ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative;  }
+.player-ui .ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; } 
+.player-ui .ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
+.player-ui .ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
+.player-ui .ui-dialog .ui-dialog-titlebar-close:hover, .player-ui .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
+.player-ui .ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
+.player-ui .ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
+.player-ui .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
+.player-ui .ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
+.player-ui .ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
+.player-ui .ui-draggable .ui-dialog-titlebar { cursor: move; }
+/*
+ * jQuery UI Slider 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Slider#theming
+ */
+.player-ui .ui-slider { position: relative; text-align: left; }
+.player-ui .ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
+.player-ui .ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
+
+.player-ui .ui-slider-horizontal { height: .8em; }
+.player-ui .ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
+.player-ui .ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
+.player-ui .ui-slider-horizontal .ui-slider-range-min { left: 0; }
+.player-ui .ui-slider-horizontal .ui-slider-range-max { right: 0; }
+
+.player-ui .ui-slider-vertical { width: .8em; height: 100px; }
+.player-ui .ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
+.player-ui .ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
+.player-ui .ui-slider-vertical .ui-slider-range-min { bottom: 0; }
+.player-ui .ui-slider-vertical .ui-slider-range-max { top: 0; }/*
+ * jQuery UI Tabs 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Tabs#theming
+ */
+.player-ui .ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
+.player-ui .ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
+.player-ui .ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
+.player-ui .ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }
+.player-ui .ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; }
+.player-ui .ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .player-ui .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .player-ui .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
+.player-ui .ui-tabs .ui-tabs-nav li a, .player-ui .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
+.player-ui .ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }
+.player-ui .ui-tabs .ui-tabs-hide { display: none !important; }
+/*
+ * jQuery UI Datepicker 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Datepicker#theming
+ */
+.player-ui .ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }
+.player-ui .ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
+.player-ui .ui-datepicker .ui-datepicker-prev, .player-ui .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
+.player-ui .ui-datepicker .ui-datepicker-prev-hover, .player-ui .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
+.player-ui .ui-datepicker .ui-datepicker-prev { left:2px; }
+.player-ui .ui-datepicker .ui-datepicker-next { right:2px; }
+.player-ui .ui-datepicker .ui-datepicker-prev-hover { left:1px; }
+.player-ui .ui-datepicker .ui-datepicker-next-hover { right:1px; }
+.player-ui .ui-datepicker .ui-datepicker-prev span, .player-ui .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px;  }
+.player-ui .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
+.player-ui .ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
+.player-ui .ui-datepicker select.ui-datepicker-month-year {width: 100%;}
+.player-ui .ui-datepicker select.ui-datepicker-month, 
+.player-ui .ui-datepicker select.ui-datepicker-year { width: 49%;}
+.player-ui .ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
+.player-ui .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0;  }
+.player-ui .ui-datepicker td { border: 0; padding: 1px; }
+.player-ui .ui-datepicker td span, .player-ui .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
+.player-ui .ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
+.player-ui .ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
+.player-ui .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
+
+/* with multiple calendars */
+.player-ui .ui-datepicker.ui-datepicker-multi { width:auto; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group { float:left; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
+.player-ui .ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
+.player-ui .ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
+.player-ui .ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
+.player-ui .ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
+.player-ui .ui-datepicker-row-break { clear:both; width:100%; font-size:0em; }
+
+/* RTL support */
+.player-ui .ui-datepicker-rtl { direction: rtl; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-group { float:right; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+
+/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
+.player-ui .ui-datepicker-cover {
+    display: none; /*sorry for IE5*/
+    display/**/: block; /*sorry for IE5*/
+    position: absolute; /*must have*/
+    z-index: -1; /*must have*/
+    filter: mask(); /*must have*/
+    top: -4px; /*must have*/
+    left: -4px; /*must have*/
+    width: 200px; /*must have*/
+    height: 200px; /*must have*/
+}/*
+ * jQuery UI Progressbar 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Progressbar#theming
+ */
+.player-ui .ui-progressbar { height:2em; text-align: left; overflow: hidden; }
+.player-ui .ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/jquery-ui/redmond/images/ui-bg_flat_0_aaaaaa_40x100.png b/public/admin/js/osmplayer/jquery-ui/redmond/images/ui-bg_flat_0_aaaaaa_40x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..5b5dab2ab7b1c50dea9cfe73dc5a269a92d2d4b4
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/redmond/images/ui-bg_flat_0_aaaaaa_40x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/redmond/images/ui-bg_flat_55_fbec88_40x100.png b/public/admin/js/osmplayer/jquery-ui/redmond/images/ui-bg_flat_55_fbec88_40x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..47acaadd737478ddb090f47f618810712163317b
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/redmond/images/ui-bg_flat_55_fbec88_40x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/redmond/images/ui-bg_glass_75_d0e5f5_1x400.png b/public/admin/js/osmplayer/jquery-ui/redmond/images/ui-bg_glass_75_d0e5f5_1x400.png
new file mode 100644
index 0000000000000000000000000000000000000000..9fb564f8d0a117f17aa6b844490309dadbd94821
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/redmond/images/ui-bg_glass_75_d0e5f5_1x400.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/redmond/images/ui-bg_glass_85_dfeffc_1x400.png b/public/admin/js/osmplayer/jquery-ui/redmond/images/ui-bg_glass_85_dfeffc_1x400.png
new file mode 100644
index 0000000000000000000000000000000000000000..014951529c315d6042e72febc310a4d2db5b4a82
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/redmond/images/ui-bg_glass_85_dfeffc_1x400.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/redmond/images/ui-bg_glass_95_fef1ec_1x400.png b/public/admin/js/osmplayer/jquery-ui/redmond/images/ui-bg_glass_95_fef1ec_1x400.png
new file mode 100644
index 0000000000000000000000000000000000000000..4443fdc1a156babad4336f004eaf5ca5dfa0f9ab
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/redmond/images/ui-bg_glass_95_fef1ec_1x400.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/redmond/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png b/public/admin/js/osmplayer/jquery-ui/redmond/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..81ecc362d50ef5abbc0420aacd5345822f1f6098
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/redmond/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/redmond/images/ui-bg_inset-hard_100_f5f8f9_1x100.png b/public/admin/js/osmplayer/jquery-ui/redmond/images/ui-bg_inset-hard_100_f5f8f9_1x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..4f3faf8aa8b1054ef1b18b80ab58f670b406a794
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/redmond/images/ui-bg_inset-hard_100_f5f8f9_1x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/redmond/images/ui-bg_inset-hard_100_fcfdfd_1x100.png b/public/admin/js/osmplayer/jquery-ui/redmond/images/ui-bg_inset-hard_100_fcfdfd_1x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..38c38335d0919ceb7b0dd09e88a86be90a966ef3
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/redmond/images/ui-bg_inset-hard_100_fcfdfd_1x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/redmond/images/ui-icons_217bc0_256x240.png b/public/admin/js/osmplayer/jquery-ui/redmond/images/ui-icons_217bc0_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..6f4bd87c041453ef037c4a9a1a698f0105d02eba
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/redmond/images/ui-icons_217bc0_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/redmond/images/ui-icons_2e83ff_256x240.png b/public/admin/js/osmplayer/jquery-ui/redmond/images/ui-icons_2e83ff_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..09d1cdc856c292c4ab6dd818c7543ac0828bd616
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/redmond/images/ui-icons_2e83ff_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/redmond/images/ui-icons_469bdd_256x240.png b/public/admin/js/osmplayer/jquery-ui/redmond/images/ui-icons_469bdd_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..bd2cf079add1ca236adeb509698adabbffb08acb
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/redmond/images/ui-icons_469bdd_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/redmond/images/ui-icons_6da8d5_256x240.png b/public/admin/js/osmplayer/jquery-ui/redmond/images/ui-icons_6da8d5_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..9f3eafaab0f048da81e1e072c3091282742c4980
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/redmond/images/ui-icons_6da8d5_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/redmond/images/ui-icons_cd0a0a_256x240.png b/public/admin/js/osmplayer/jquery-ui/redmond/images/ui-icons_cd0a0a_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..2ab019b73ec11a485fa09378f3a0e155194f6a5d
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/redmond/images/ui-icons_cd0a0a_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/redmond/images/ui-icons_d8e7f3_256x240.png b/public/admin/js/osmplayer/jquery-ui/redmond/images/ui-icons_d8e7f3_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..ad2dc6f9dbeeabbda9ae6917659b6df07817ec35
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/redmond/images/ui-icons_d8e7f3_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/redmond/images/ui-icons_f9bd01_256x240.png b/public/admin/js/osmplayer/jquery-ui/redmond/images/ui-icons_f9bd01_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..78625024d94a74eb1aceb327f45059faf439fece
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/redmond/images/ui-icons_f9bd01_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/redmond/jquery-ui-1.8.18.custom.css b/public/admin/js/osmplayer/jquery-ui/redmond/jquery-ui-1.8.18.custom.css
new file mode 100644
index 0000000000000000000000000000000000000000..51cb08fa8eee8313b64119209bc94108dd90a000
--- /dev/null
+++ b/public/admin/js/osmplayer/jquery-ui/redmond/jquery-ui-1.8.18.custom.css
@@ -0,0 +1,565 @@
+/*
+ * jQuery UI CSS Framework 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ */
+
+/* Layout helpers
+----------------------------------*/
+.player-ui .ui-helper-hidden { display: none; }
+.player-ui .ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
+.player-ui .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
+.player-ui .ui-helper-clearfix:before, .player-ui .ui-helper-clearfix:after { content: ""; display: table; }
+.player-ui .ui-helper-clearfix:after { clear: both; }
+.player-ui .ui-helper-clearfix { zoom: 1; }
+.player-ui .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
+
+
+/* Interaction Cues
+----------------------------------*/
+.player-ui .ui-state-disabled { cursor: default !important; }
+
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.player-ui .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+.player-ui .ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
+
+
+/*
+ * jQuery UI CSS Framework 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ *
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Lucida%20Grande,%20Lucida%20Sans,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=5px&bgColorHeader=5c9ccc&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=55&borderColorHeader=4297d7&fcHeader=ffffff&iconColorHeader=d8e7f3&bgColorContent=fcfdfd&bgTextureContent=06_inset_hard.png&bgImgOpacityContent=100&borderColorContent=a6c9e2&fcContent=222222&iconColorContent=469bdd&bgColorDefault=dfeffc&bgTextureDefault=02_glass.png&bgImgOpacityDefault=85&borderColorDefault=c5dbec&fcDefault=2e6e9e&iconColorDefault=6da8d5&bgColorHover=d0e5f5&bgTextureHover=02_glass.png&bgImgOpacityHover=75&borderColorHover=79b7e7&fcHover=1d5987&iconColorHover=217bc0&bgColorActive=f5f8f9&bgTextureActive=06_inset_hard.png&bgImgOpacityActive=100&borderColorActive=79b7e7&fcActive=e17009&iconColorActive=f9bd01&bgColorHighlight=fbec88&bgTextureHighlight=01_flat.png&bgImgOpacityHighlight=55&borderColorHighlight=fad42e&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
+ */
+
+
+/* Component containers
+----------------------------------*/
+.player-ui .ui-widget { font-family: Lucida Grande, Lucida Sans, Arial, sans-serif; font-size: 1.1em; }
+.player-ui .ui-widget .ui-widget { font-size: 1em; }
+.player-ui .ui-widget input, .player-ui .ui-widget select, .player-ui .ui-widget textarea, .player-ui .ui-widget button { font-family: Lucida Grande, Lucida Sans, Arial, sans-serif; font-size: 1em; }
+.player-ui .ui-widget-content { border: 1px solid #a6c9e2; background: #fcfdfd url(images/ui-bg_inset-hard_100_fcfdfd_1x100.png) 50% bottom repeat-x; color: #222222; }
+.player-ui .ui-widget-content a { color: #222222; }
+.player-ui .ui-widget-header { border: 1px solid #4297d7; background: #5c9ccc url(images/ui-bg_gloss-wave_55_5c9ccc_500x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; }
+.player-ui .ui-widget-header a { color: #ffffff; }
+
+/* Interaction states
+----------------------------------*/
+.player-ui .ui-state-default, .player-ui .ui-widget-content .ui-state-default, .player-ui .ui-widget-header .ui-state-default { border: 1px solid #c5dbec; background: #dfeffc url(images/ui-bg_glass_85_dfeffc_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #2e6e9e; }
+.player-ui .ui-state-default a, .player-ui .ui-state-default a:link, .player-ui .ui-state-default a:visited { color: #2e6e9e; text-decoration: none; }
+.player-ui .ui-state-hover, .player-ui .ui-widget-content .ui-state-hover, .player-ui .ui-widget-header .ui-state-hover, .player-ui .ui-state-focus, .player-ui .ui-widget-content .ui-state-focus, .player-ui .ui-widget-header .ui-state-focus { border: 1px solid #79b7e7; background: #d0e5f5 url(images/ui-bg_glass_75_d0e5f5_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #1d5987; }
+.player-ui .ui-state-hover a, .player-ui .ui-state-hover a:hover { color: #1d5987; text-decoration: none; }
+.player-ui .ui-state-active, .player-ui .ui-widget-content .ui-state-active, .player-ui .ui-widget-header .ui-state-active { border: 1px solid #79b7e7; background: #f5f8f9 url(images/ui-bg_inset-hard_100_f5f8f9_1x100.png) 50% 50% repeat-x; font-weight: bold; color: #e17009; }
+.player-ui .ui-state-active a, .player-ui .ui-state-active a:link, .player-ui .ui-state-active a:visited { color: #e17009; text-decoration: none; }
+.player-ui .ui-widget :active { outline: none; }
+
+/* Interaction Cues
+----------------------------------*/
+.player-ui .ui-state-highlight, .player-ui .ui-widget-content .ui-state-highlight, .player-ui .ui-widget-header .ui-state-highlight  {border: 1px solid #fad42e; background: #fbec88 url(images/ui-bg_flat_55_fbec88_40x100.png) 50% 50% repeat-x; color: #363636; }
+.player-ui .ui-state-highlight a, .player-ui .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
+.player-ui .ui-state-error, .player-ui .ui-widget-content .ui-state-error, .player-ui .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; color: #cd0a0a; }
+.player-ui .ui-state-error a, .player-ui .ui-widget-content .ui-state-error a, .player-ui .ui-widget-header .ui-state-error a { color: #cd0a0a; }
+.player-ui .ui-state-error-text, .player-ui .ui-widget-content .ui-state-error-text, .player-ui .ui-widget-header .ui-state-error-text { color: #cd0a0a; }
+.player-ui .ui-priority-primary, .player-ui .ui-widget-content .ui-priority-primary, .player-ui .ui-widget-header .ui-priority-primary { font-weight: bold; }
+.player-ui .ui-priority-secondary, .player-ui .ui-widget-content .ui-priority-secondary,  .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
+.player-ui .ui-state-disabled, .player-ui .ui-widget-content .ui-state-disabled, .player-ui .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.player-ui .ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_469bdd_256x240.png); }
+.player-ui .ui-widget-content .ui-icon {background-image: url(images/ui-icons_469bdd_256x240.png); }
+.player-ui .ui-widget-header .ui-icon {background-image: url(images/ui-icons_d8e7f3_256x240.png); }
+.player-ui .ui-state-default .ui-icon { background-image: url(images/ui-icons_6da8d5_256x240.png); }
+.player-ui .ui-state-hover .ui-icon, .player-ui .ui-state-focus .ui-icon {background-image: url(images/ui-icons_217bc0_256x240.png); }
+.player-ui .ui-state-active .ui-icon {background-image: url(images/ui-icons_f9bd01_256x240.png); }
+.player-ui .ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); }
+.player-ui .ui-state-error .ui-icon, .player-ui .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png); }
+
+/* positioning */
+.player-ui .ui-icon-carat-1-n { background-position: 0 0; }
+.player-ui .ui-icon-carat-1-ne { background-position: -16px 0; }
+.player-ui .ui-icon-carat-1-e { background-position: -32px 0; }
+.player-ui .ui-icon-carat-1-se { background-position: -48px 0; }
+.player-ui .ui-icon-carat-1-s { background-position: -64px 0; }
+.player-ui .ui-icon-carat-1-sw { background-position: -80px 0; }
+.player-ui .ui-icon-carat-1-w { background-position: -96px 0; }
+.player-ui .ui-icon-carat-1-nw { background-position: -112px 0; }
+.player-ui .ui-icon-carat-2-n-s { background-position: -128px 0; }
+.player-ui .ui-icon-carat-2-e-w { background-position: -144px 0; }
+.player-ui .ui-icon-triangle-1-n { background-position: 0 -16px; }
+.player-ui .ui-icon-triangle-1-ne { background-position: -16px -16px; }
+.player-ui .ui-icon-triangle-1-e { background-position: -32px -16px; }
+.player-ui .ui-icon-triangle-1-se { background-position: -48px -16px; }
+.player-ui .ui-icon-triangle-1-s { background-position: -64px -16px; }
+.player-ui .ui-icon-triangle-1-sw { background-position: -80px -16px; }
+.player-ui .ui-icon-triangle-1-w { background-position: -96px -16px; }
+.player-ui .ui-icon-triangle-1-nw { background-position: -112px -16px; }
+.player-ui .ui-icon-triangle-2-n-s { background-position: -128px -16px; }
+.player-ui .ui-icon-triangle-2-e-w { background-position: -144px -16px; }
+.player-ui .ui-icon-arrow-1-n { background-position: 0 -32px; }
+.player-ui .ui-icon-arrow-1-ne { background-position: -16px -32px; }
+.player-ui .ui-icon-arrow-1-e { background-position: -32px -32px; }
+.player-ui .ui-icon-arrow-1-se { background-position: -48px -32px; }
+.player-ui .ui-icon-arrow-1-s { background-position: -64px -32px; }
+.player-ui .ui-icon-arrow-1-sw { background-position: -80px -32px; }
+.player-ui .ui-icon-arrow-1-w { background-position: -96px -32px; }
+.player-ui .ui-icon-arrow-1-nw { background-position: -112px -32px; }
+.player-ui .ui-icon-arrow-2-n-s { background-position: -128px -32px; }
+.player-ui .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
+.player-ui .ui-icon-arrow-2-e-w { background-position: -160px -32px; }
+.player-ui .ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
+.player-ui .ui-icon-arrowstop-1-n { background-position: -192px -32px; }
+.player-ui .ui-icon-arrowstop-1-e { background-position: -208px -32px; }
+.player-ui .ui-icon-arrowstop-1-s { background-position: -224px -32px; }
+.player-ui .ui-icon-arrowstop-1-w { background-position: -240px -32px; }
+.player-ui .ui-icon-arrowthick-1-n { background-position: 0 -48px; }
+.player-ui .ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
+.player-ui .ui-icon-arrowthick-1-e { background-position: -32px -48px; }
+.player-ui .ui-icon-arrowthick-1-se { background-position: -48px -48px; }
+.player-ui .ui-icon-arrowthick-1-s { background-position: -64px -48px; }
+.player-ui .ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
+.player-ui .ui-icon-arrowthick-1-w { background-position: -96px -48px; }
+.player-ui .ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
+.player-ui .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
+.player-ui .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
+.player-ui .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
+.player-ui .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
+.player-ui .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
+.player-ui .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
+.player-ui .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
+.player-ui .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
+.player-ui .ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
+.player-ui .ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
+.player-ui .ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
+.player-ui .ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
+.player-ui .ui-icon-arrow-4 { background-position: 0 -80px; }
+.player-ui .ui-icon-arrow-4-diag { background-position: -16px -80px; }
+.player-ui .ui-icon-extlink { background-position: -32px -80px; }
+.player-ui .ui-icon-newwin { background-position: -48px -80px; }
+.player-ui .ui-icon-refresh { background-position: -64px -80px; }
+.player-ui .ui-icon-shuffle { background-position: -80px -80px; }
+.player-ui .ui-icon-transfer-e-w { background-position: -96px -80px; }
+.player-ui .ui-icon-transferthick-e-w { background-position: -112px -80px; }
+.player-ui .ui-icon-folder-collapsed { background-position: 0 -96px; }
+.player-ui .ui-icon-folder-open { background-position: -16px -96px; }
+.player-ui .ui-icon-document { background-position: -32px -96px; }
+.player-ui .ui-icon-document-b { background-position: -48px -96px; }
+.player-ui .ui-icon-note { background-position: -64px -96px; }
+.player-ui .ui-icon-mail-closed { background-position: -80px -96px; }
+.player-ui .ui-icon-mail-open { background-position: -96px -96px; }
+.player-ui .ui-icon-suitcase { background-position: -112px -96px; }
+.player-ui .ui-icon-comment { background-position: -128px -96px; }
+.player-ui .ui-icon-person { background-position: -144px -96px; }
+.player-ui .ui-icon-print { background-position: -160px -96px; }
+.player-ui .ui-icon-trash { background-position: -176px -96px; }
+.player-ui .ui-icon-locked { background-position: -192px -96px; }
+.player-ui .ui-icon-unlocked { background-position: -208px -96px; }
+.player-ui .ui-icon-bookmark { background-position: -224px -96px; }
+.player-ui .ui-icon-tag { background-position: -240px -96px; }
+.player-ui .ui-icon-home { background-position: 0 -112px; }
+.player-ui .ui-icon-flag { background-position: -16px -112px; }
+.player-ui .ui-icon-calendar { background-position: -32px -112px; }
+.player-ui .ui-icon-cart { background-position: -48px -112px; }
+.player-ui .ui-icon-pencil { background-position: -64px -112px; }
+.player-ui .ui-icon-clock { background-position: -80px -112px; }
+.player-ui .ui-icon-disk { background-position: -96px -112px; }
+.player-ui .ui-icon-calculator { background-position: -112px -112px; }
+.player-ui .ui-icon-zoomin { background-position: -128px -112px; }
+.player-ui .ui-icon-zoomout { background-position: -144px -112px; }
+.player-ui .ui-icon-search { background-position: -160px -112px; }
+.player-ui .ui-icon-wrench { background-position: -176px -112px; }
+.player-ui .ui-icon-gear { background-position: -192px -112px; }
+.player-ui .ui-icon-heart { background-position: -208px -112px; }
+.player-ui .ui-icon-star { background-position: -224px -112px; }
+.player-ui .ui-icon-link { background-position: -240px -112px; }
+.player-ui .ui-icon-cancel { background-position: 0 -128px; }
+.player-ui .ui-icon-plus { background-position: -16px -128px; }
+.player-ui .ui-icon-plusthick { background-position: -32px -128px; }
+.player-ui .ui-icon-minus { background-position: -48px -128px; }
+.player-ui .ui-icon-minusthick { background-position: -64px -128px; }
+.player-ui .ui-icon-close { background-position: -80px -128px; }
+.player-ui .ui-icon-closethick { background-position: -96px -128px; }
+.player-ui .ui-icon-key { background-position: -112px -128px; }
+.player-ui .ui-icon-lightbulb { background-position: -128px -128px; }
+.player-ui .ui-icon-scissors { background-position: -144px -128px; }
+.player-ui .ui-icon-clipboard { background-position: -160px -128px; }
+.player-ui .ui-icon-copy { background-position: -176px -128px; }
+.player-ui .ui-icon-contact { background-position: -192px -128px; }
+.player-ui .ui-icon-image { background-position: -208px -128px; }
+.player-ui .ui-icon-video { background-position: -224px -128px; }
+.player-ui .ui-icon-script { background-position: -240px -128px; }
+.player-ui .ui-icon-alert { background-position: 0 -144px; }
+.player-ui .ui-icon-info { background-position: -16px -144px; }
+.player-ui .ui-icon-notice { background-position: -32px -144px; }
+.player-ui .ui-icon-help { background-position: -48px -144px; }
+.player-ui .ui-icon-check { background-position: -64px -144px; }
+.player-ui .ui-icon-bullet { background-position: -80px -144px; }
+.player-ui .ui-icon-radio-off { background-position: -96px -144px; }
+.player-ui .ui-icon-radio-on { background-position: -112px -144px; }
+.player-ui .ui-icon-pin-w { background-position: -128px -144px; }
+.player-ui .ui-icon-pin-s { background-position: -144px -144px; }
+.player-ui .ui-icon-play { background-position: 0 -160px; }
+.player-ui .ui-icon-pause { background-position: -16px -160px; }
+.player-ui .ui-icon-seek-next { background-position: -32px -160px; }
+.player-ui .ui-icon-seek-prev { background-position: -48px -160px; }
+.player-ui .ui-icon-seek-end { background-position: -64px -160px; }
+.player-ui .ui-icon-seek-start { background-position: -80px -160px; }
+/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
+.player-ui .ui-icon-seek-first { background-position: -80px -160px; }
+.player-ui .ui-icon-stop { background-position: -96px -160px; }
+.player-ui .ui-icon-eject { background-position: -112px -160px; }
+.player-ui .ui-icon-volume-off { background-position: -128px -160px; }
+.player-ui .ui-icon-volume-on { background-position: -144px -160px; }
+.player-ui .ui-icon-power { background-position: 0 -176px; }
+.player-ui .ui-icon-signal-diag { background-position: -16px -176px; }
+.player-ui .ui-icon-signal { background-position: -32px -176px; }
+.player-ui .ui-icon-battery-0 { background-position: -48px -176px; }
+.player-ui .ui-icon-battery-1 { background-position: -64px -176px; }
+.player-ui .ui-icon-battery-2 { background-position: -80px -176px; }
+.player-ui .ui-icon-battery-3 { background-position: -96px -176px; }
+.player-ui .ui-icon-circle-plus { background-position: 0 -192px; }
+.player-ui .ui-icon-circle-minus { background-position: -16px -192px; }
+.player-ui .ui-icon-circle-close { background-position: -32px -192px; }
+.player-ui .ui-icon-circle-triangle-e { background-position: -48px -192px; }
+.player-ui .ui-icon-circle-triangle-s { background-position: -64px -192px; }
+.player-ui .ui-icon-circle-triangle-w { background-position: -80px -192px; }
+.player-ui .ui-icon-circle-triangle-n { background-position: -96px -192px; }
+.player-ui .ui-icon-circle-arrow-e { background-position: -112px -192px; }
+.player-ui .ui-icon-circle-arrow-s { background-position: -128px -192px; }
+.player-ui .ui-icon-circle-arrow-w { background-position: -144px -192px; }
+.player-ui .ui-icon-circle-arrow-n { background-position: -160px -192px; }
+.player-ui .ui-icon-circle-zoomin { background-position: -176px -192px; }
+.player-ui .ui-icon-circle-zoomout { background-position: -192px -192px; }
+.player-ui .ui-icon-circle-check { background-position: -208px -192px; }
+.player-ui .ui-icon-circlesmall-plus { background-position: 0 -208px; }
+.player-ui .ui-icon-circlesmall-minus { background-position: -16px -208px; }
+.player-ui .ui-icon-circlesmall-close { background-position: -32px -208px; }
+.player-ui .ui-icon-squaresmall-plus { background-position: -48px -208px; }
+.player-ui .ui-icon-squaresmall-minus { background-position: -64px -208px; }
+.player-ui .ui-icon-squaresmall-close { background-position: -80px -208px; }
+.player-ui .ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
+.player-ui .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
+.player-ui .ui-icon-grip-solid-vertical { background-position: -32px -224px; }
+.player-ui .ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
+.player-ui .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
+.player-ui .ui-icon-grip-diagonal-se { background-position: -80px -224px; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Corner radius */
+.player-ui .ui-corner-all, .player-ui .ui-corner-top, .player-ui .ui-corner-left, .player-ui .ui-corner-tl { -moz-border-radius-topleft: 5px; -webkit-border-top-left-radius: 5px; -khtml-border-top-left-radius: 5px; border-top-left-radius: 5px; }
+.player-ui .ui-corner-all, .player-ui .ui-corner-top, .player-ui .ui-corner-right, .player-ui .ui-corner-tr { -moz-border-radius-topright: 5px; -webkit-border-top-right-radius: 5px; -khtml-border-top-right-radius: 5px; border-top-right-radius: 5px; }
+.player-ui .ui-corner-all, .player-ui .ui-corner-bottom, .player-ui .ui-corner-left, .player-ui .ui-corner-bl { -moz-border-radius-bottomleft: 5px; -webkit-border-bottom-left-radius: 5px; -khtml-border-bottom-left-radius: 5px; border-bottom-left-radius: 5px; }
+.player-ui .ui-corner-all, .player-ui .ui-corner-bottom, .player-ui .ui-corner-right, .player-ui .ui-corner-br { -moz-border-radius-bottomright: 5px; -webkit-border-bottom-right-radius: 5px; -khtml-border-bottom-right-radius: 5px; border-bottom-right-radius: 5px; }
+
+/* Overlays */
+.player-ui .ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); }
+.player-ui .ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -khtml-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/*
+ * jQuery UI Resizable 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Resizable#theming
+ */
+.player-ui .ui-resizable { position: relative;}
+.player-ui .ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block; }
+.player-ui .ui-resizable-disabled .ui-resizable-handle, .player-ui .ui-resizable-autohide .ui-resizable-handle { display: none; }
+.player-ui .ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
+.player-ui .ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
+.player-ui .ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
+.player-ui .ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
+.player-ui .ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
+.player-ui .ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
+.player-ui .ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
+.player-ui .ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/*
+ * jQuery UI Selectable 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Selectable#theming
+ */
+.player-ui .ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }
+/*
+ * jQuery UI Accordion 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Accordion#theming
+ */
+/* IE/Win - Fix animation bug - #4615 */
+.player-ui .ui-accordion { width: 100%; }
+.player-ui .ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
+.player-ui .ui-accordion .ui-accordion-li-fix { display: inline; }
+.player-ui .ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
+.player-ui .ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; }
+.player-ui .ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; }
+.player-ui .ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
+.player-ui .ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; }
+.player-ui .ui-accordion .ui-accordion-content-active { display: block; }
+/*
+ * jQuery UI Autocomplete 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Autocomplete#theming
+ */
+.player-ui .ui-autocomplete { position: absolute; cursor: default; }	
+
+/* workarounds */
+* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
+
+/*
+ * jQuery UI Menu 1.8.18
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Menu#theming
+ */
+.player-ui .ui-menu {
+	list-style:none;
+	padding: 2px;
+	margin: 0;
+	display:block;
+	float: left;
+}
+.player-ui .ui-menu .ui-menu {
+	margin-top: -3px;
+}
+.player-ui .ui-menu .ui-menu-item {
+	margin:0;
+	padding: 0;
+	zoom: 1;
+	float: left;
+	clear: left;
+	width: 100%;
+}
+.player-ui .ui-menu .ui-menu-item a {
+	text-decoration:none;
+	display:block;
+	padding:.2em .4em;
+	line-height:1.5;
+	zoom:1;
+}
+.player-ui .ui-menu .ui-menu-item a.ui-state-hover,
+.player-ui .ui-menu .ui-menu-item a.ui-state-active {
+	font-weight: normal;
+	margin: -1px;
+}
+/*
+ * jQuery UI Button 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Button#theming
+ */
+.player-ui .ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: hidden; *overflow: visible; } /* the overflow property removes extra width in IE */
+.player-ui .ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
+button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
+.player-ui .ui-button-icons-only { width: 3.4em; } 
+button.ui-button-icons-only { width: 3.7em; } 
+
+/*button text element */
+.player-ui .ui-button .ui-button-text { display: block; line-height: 1.4;  }
+.player-ui .ui-button-text-only .ui-button-text { padding: .4em 1em; }
+.player-ui .ui-button-icon-only .ui-button-text, .player-ui .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
+.player-ui .ui-button-text-icon-primary .ui-button-text, .player-ui .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
+.player-ui .ui-button-text-icon-secondary .ui-button-text, .player-ui .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }
+.player-ui .ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }
+/* no icon support for input elements, provide padding by default */
+input.ui-button { padding: .4em 1em; }
+
+/*button icon element(s) */
+.player-ui .ui-button-icon-only .ui-icon, .player-ui .ui-button-text-icon-primary .ui-icon, .player-ui .ui-button-text-icon-secondary .ui-icon, .player-ui .ui-button-text-icons .ui-icon, .player-ui .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
+.player-ui .ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
+.player-ui .ui-button-text-icon-primary .ui-button-icon-primary, .player-ui .ui-button-text-icons .ui-button-icon-primary, .player-ui .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
+.player-ui .ui-button-text-icon-secondary .ui-button-icon-secondary, .player-ui .ui-button-text-icons .ui-button-icon-secondary, .player-ui .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
+.player-ui .ui-button-text-icons .ui-button-icon-secondary, .player-ui .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
+
+/*button sets*/
+.player-ui .ui-buttonset { margin-right: 7px; }
+.player-ui .ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }
+
+/* workarounds */
+button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
+/*
+ * jQuery UI Dialog 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Dialog#theming
+ */
+.player-ui .ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; }
+.player-ui .ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative;  }
+.player-ui .ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; } 
+.player-ui .ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
+.player-ui .ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
+.player-ui .ui-dialog .ui-dialog-titlebar-close:hover, .player-ui .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
+.player-ui .ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
+.player-ui .ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
+.player-ui .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
+.player-ui .ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
+.player-ui .ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
+.player-ui .ui-draggable .ui-dialog-titlebar { cursor: move; }
+/*
+ * jQuery UI Slider 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Slider#theming
+ */
+.player-ui .ui-slider { position: relative; text-align: left; }
+.player-ui .ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
+.player-ui .ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
+
+.player-ui .ui-slider-horizontal { height: .8em; }
+.player-ui .ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
+.player-ui .ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
+.player-ui .ui-slider-horizontal .ui-slider-range-min { left: 0; }
+.player-ui .ui-slider-horizontal .ui-slider-range-max { right: 0; }
+
+.player-ui .ui-slider-vertical { width: .8em; height: 100px; }
+.player-ui .ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
+.player-ui .ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
+.player-ui .ui-slider-vertical .ui-slider-range-min { bottom: 0; }
+.player-ui .ui-slider-vertical .ui-slider-range-max { top: 0; }/*
+ * jQuery UI Tabs 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Tabs#theming
+ */
+.player-ui .ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
+.player-ui .ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
+.player-ui .ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
+.player-ui .ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }
+.player-ui .ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; }
+.player-ui .ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .player-ui .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .player-ui .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
+.player-ui .ui-tabs .ui-tabs-nav li a, .player-ui .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
+.player-ui .ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }
+.player-ui .ui-tabs .ui-tabs-hide { display: none !important; }
+/*
+ * jQuery UI Datepicker 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Datepicker#theming
+ */
+.player-ui .ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }
+.player-ui .ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
+.player-ui .ui-datepicker .ui-datepicker-prev, .player-ui .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
+.player-ui .ui-datepicker .ui-datepicker-prev-hover, .player-ui .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
+.player-ui .ui-datepicker .ui-datepicker-prev { left:2px; }
+.player-ui .ui-datepicker .ui-datepicker-next { right:2px; }
+.player-ui .ui-datepicker .ui-datepicker-prev-hover { left:1px; }
+.player-ui .ui-datepicker .ui-datepicker-next-hover { right:1px; }
+.player-ui .ui-datepicker .ui-datepicker-prev span, .player-ui .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px;  }
+.player-ui .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
+.player-ui .ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
+.player-ui .ui-datepicker select.ui-datepicker-month-year {width: 100%;}
+.player-ui .ui-datepicker select.ui-datepicker-month, 
+.player-ui .ui-datepicker select.ui-datepicker-year { width: 49%;}
+.player-ui .ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
+.player-ui .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0;  }
+.player-ui .ui-datepicker td { border: 0; padding: 1px; }
+.player-ui .ui-datepicker td span, .player-ui .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
+.player-ui .ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
+.player-ui .ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
+.player-ui .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
+
+/* with multiple calendars */
+.player-ui .ui-datepicker.ui-datepicker-multi { width:auto; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group { float:left; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
+.player-ui .ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
+.player-ui .ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
+.player-ui .ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
+.player-ui .ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
+.player-ui .ui-datepicker-row-break { clear:both; width:100%; font-size:0em; }
+
+/* RTL support */
+.player-ui .ui-datepicker-rtl { direction: rtl; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-group { float:right; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+
+/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
+.player-ui .ui-datepicker-cover {
+    display: none; /*sorry for IE5*/
+    display/**/: block; /*sorry for IE5*/
+    position: absolute; /*must have*/
+    z-index: -1; /*must have*/
+    filter: mask(); /*must have*/
+    top: -4px; /*must have*/
+    left: -4px; /*must have*/
+    width: 200px; /*must have*/
+    height: 200px; /*must have*/
+}/*
+ * jQuery UI Progressbar 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Progressbar#theming
+ */
+.player-ui .ui-progressbar { height:2em; text-align: left; overflow: hidden; }
+.player-ui .ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/jquery-ui/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png b/public/admin/js/osmplayer/jquery-ui/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..5b5dab2ab7b1c50dea9cfe73dc5a269a92d2d4b4
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/smoothness/images/ui-bg_flat_75_ffffff_40x100.png b/public/admin/js/osmplayer/jquery-ui/smoothness/images/ui-bg_flat_75_ffffff_40x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..ac8b229af950c29356abf64a6c4aa894575445f0
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/smoothness/images/ui-bg_flat_75_ffffff_40x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png b/public/admin/js/osmplayer/jquery-ui/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png
new file mode 100644
index 0000000000000000000000000000000000000000..ad3d6346e00f246102f72f2e026ed0491988b394
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/smoothness/images/ui-bg_glass_65_ffffff_1x400.png b/public/admin/js/osmplayer/jquery-ui/smoothness/images/ui-bg_glass_65_ffffff_1x400.png
new file mode 100644
index 0000000000000000000000000000000000000000..42ccba269b6e91bef12ad0fa18be651b5ef0ee68
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/smoothness/images/ui-bg_glass_65_ffffff_1x400.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/smoothness/images/ui-bg_glass_75_dadada_1x400.png b/public/admin/js/osmplayer/jquery-ui/smoothness/images/ui-bg_glass_75_dadada_1x400.png
new file mode 100644
index 0000000000000000000000000000000000000000..5a46b47cb16631068aee9e0bd61269fc4e95e5cd
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/smoothness/images/ui-bg_glass_75_dadada_1x400.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png b/public/admin/js/osmplayer/jquery-ui/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png
new file mode 100644
index 0000000000000000000000000000000000000000..86c2baa655eac8539db34f8d9adb69ec1226201c
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png b/public/admin/js/osmplayer/jquery-ui/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png
new file mode 100644
index 0000000000000000000000000000000000000000..4443fdc1a156babad4336f004eaf5ca5dfa0f9ab
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/public/admin/js/osmplayer/jquery-ui/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..7c9fa6c6edcfcdd3e5b77e6f547b719e6fc66e30
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/smoothness/images/ui-icons_222222_256x240.png b/public/admin/js/osmplayer/jquery-ui/smoothness/images/ui-icons_222222_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..b273ff111d219c9b9a8b96d57683d0075fb7871a
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/smoothness/images/ui-icons_222222_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/smoothness/images/ui-icons_2e83ff_256x240.png b/public/admin/js/osmplayer/jquery-ui/smoothness/images/ui-icons_2e83ff_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..09d1cdc856c292c4ab6dd818c7543ac0828bd616
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/smoothness/images/ui-icons_2e83ff_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/smoothness/images/ui-icons_454545_256x240.png b/public/admin/js/osmplayer/jquery-ui/smoothness/images/ui-icons_454545_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..59bd45b907c4fd965697774ce8c5fc6b2fd9c105
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/smoothness/images/ui-icons_454545_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/smoothness/images/ui-icons_888888_256x240.png b/public/admin/js/osmplayer/jquery-ui/smoothness/images/ui-icons_888888_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..6d02426c114be4b57aabc0a80b8a63d9e56b9eb6
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/smoothness/images/ui-icons_888888_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/smoothness/images/ui-icons_cd0a0a_256x240.png b/public/admin/js/osmplayer/jquery-ui/smoothness/images/ui-icons_cd0a0a_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..2ab019b73ec11a485fa09378f3a0e155194f6a5d
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/smoothness/images/ui-icons_cd0a0a_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/smoothness/jquery-ui-1.8.18.custom.css b/public/admin/js/osmplayer/jquery-ui/smoothness/jquery-ui-1.8.18.custom.css
new file mode 100644
index 0000000000000000000000000000000000000000..ce196ee68d79e56eb5f84259cf3464ab63ca06fd
--- /dev/null
+++ b/public/admin/js/osmplayer/jquery-ui/smoothness/jquery-ui-1.8.18.custom.css
@@ -0,0 +1,565 @@
+/*
+ * jQuery UI CSS Framework 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ */
+
+/* Layout helpers
+----------------------------------*/
+.player-ui .ui-helper-hidden { display: none; }
+.player-ui .ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
+.player-ui .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
+.player-ui .ui-helper-clearfix:before, .player-ui .ui-helper-clearfix:after { content: ""; display: table; }
+.player-ui .ui-helper-clearfix:after { clear: both; }
+.player-ui .ui-helper-clearfix { zoom: 1; }
+.player-ui .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
+
+
+/* Interaction Cues
+----------------------------------*/
+.player-ui .ui-state-disabled { cursor: default !important; }
+
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.player-ui .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+.player-ui .ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
+
+
+/*
+ * jQuery UI CSS Framework 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ *
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana,Arial,sans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=01_flat.png&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=02_glass.png&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=02_glass.png&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
+ */
+
+
+/* Component containers
+----------------------------------*/
+.player-ui .ui-widget { font-family: Verdana,Arial,sans-serif; font-size: 1.1em; }
+.player-ui .ui-widget .ui-widget { font-size: 1em; }
+.player-ui .ui-widget input, .player-ui .ui-widget select, .player-ui .ui-widget textarea, .player-ui .ui-widget button { font-family: Verdana,Arial,sans-serif; font-size: 1em; }
+.player-ui .ui-widget-content { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; color: #222222; }
+.player-ui .ui-widget-content a { color: #222222; }
+.player-ui .ui-widget-header { border: 1px solid #aaaaaa; background: #cccccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x; color: #222222; font-weight: bold; }
+.player-ui .ui-widget-header a { color: #222222; }
+
+/* Interaction states
+----------------------------------*/
+.player-ui .ui-state-default, .player-ui .ui-widget-content .ui-state-default, .player-ui .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3; background: #e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #555555; }
+.player-ui .ui-state-default a, .player-ui .ui-state-default a:link, .player-ui .ui-state-default a:visited { color: #555555; text-decoration: none; }
+.player-ui .ui-state-hover, .player-ui .ui-widget-content .ui-state-hover, .player-ui .ui-widget-header .ui-state-hover, .player-ui .ui-state-focus, .player-ui .ui-widget-content .ui-state-focus, .player-ui .ui-widget-header .ui-state-focus { border: 1px solid #999999; background: #dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; }
+.player-ui .ui-state-hover a, .player-ui .ui-state-hover a:hover { color: #212121; text-decoration: none; }
+.player-ui .ui-state-active, .player-ui .ui-widget-content .ui-state-active, .player-ui .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; }
+.player-ui .ui-state-active a, .player-ui .ui-state-active a:link, .player-ui .ui-state-active a:visited { color: #212121; text-decoration: none; }
+.player-ui .ui-widget :active { outline: none; }
+
+/* Interaction Cues
+----------------------------------*/
+.player-ui .ui-state-highlight, .player-ui .ui-widget-content .ui-state-highlight, .player-ui .ui-widget-header .ui-state-highlight  {border: 1px solid #fcefa1; background: #fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x; color: #363636; }
+.player-ui .ui-state-highlight a, .player-ui .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
+.player-ui .ui-state-error, .player-ui .ui-widget-content .ui-state-error, .player-ui .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; color: #cd0a0a; }
+.player-ui .ui-state-error a, .player-ui .ui-widget-content .ui-state-error a, .player-ui .ui-widget-header .ui-state-error a { color: #cd0a0a; }
+.player-ui .ui-state-error-text, .player-ui .ui-widget-content .ui-state-error-text, .player-ui .ui-widget-header .ui-state-error-text { color: #cd0a0a; }
+.player-ui .ui-priority-primary, .player-ui .ui-widget-content .ui-priority-primary, .player-ui .ui-widget-header .ui-priority-primary { font-weight: bold; }
+.player-ui .ui-priority-secondary, .player-ui .ui-widget-content .ui-priority-secondary,  .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
+.player-ui .ui-state-disabled, .player-ui .ui-widget-content .ui-state-disabled, .player-ui .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.player-ui .ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); }
+.player-ui .ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
+.player-ui .ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
+.player-ui .ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png); }
+.player-ui .ui-state-hover .ui-icon, .player-ui .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
+.player-ui .ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
+.player-ui .ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); }
+.player-ui .ui-state-error .ui-icon, .player-ui .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png); }
+
+/* positioning */
+.player-ui .ui-icon-carat-1-n { background-position: 0 0; }
+.player-ui .ui-icon-carat-1-ne { background-position: -16px 0; }
+.player-ui .ui-icon-carat-1-e { background-position: -32px 0; }
+.player-ui .ui-icon-carat-1-se { background-position: -48px 0; }
+.player-ui .ui-icon-carat-1-s { background-position: -64px 0; }
+.player-ui .ui-icon-carat-1-sw { background-position: -80px 0; }
+.player-ui .ui-icon-carat-1-w { background-position: -96px 0; }
+.player-ui .ui-icon-carat-1-nw { background-position: -112px 0; }
+.player-ui .ui-icon-carat-2-n-s { background-position: -128px 0; }
+.player-ui .ui-icon-carat-2-e-w { background-position: -144px 0; }
+.player-ui .ui-icon-triangle-1-n { background-position: 0 -16px; }
+.player-ui .ui-icon-triangle-1-ne { background-position: -16px -16px; }
+.player-ui .ui-icon-triangle-1-e { background-position: -32px -16px; }
+.player-ui .ui-icon-triangle-1-se { background-position: -48px -16px; }
+.player-ui .ui-icon-triangle-1-s { background-position: -64px -16px; }
+.player-ui .ui-icon-triangle-1-sw { background-position: -80px -16px; }
+.player-ui .ui-icon-triangle-1-w { background-position: -96px -16px; }
+.player-ui .ui-icon-triangle-1-nw { background-position: -112px -16px; }
+.player-ui .ui-icon-triangle-2-n-s { background-position: -128px -16px; }
+.player-ui .ui-icon-triangle-2-e-w { background-position: -144px -16px; }
+.player-ui .ui-icon-arrow-1-n { background-position: 0 -32px; }
+.player-ui .ui-icon-arrow-1-ne { background-position: -16px -32px; }
+.player-ui .ui-icon-arrow-1-e { background-position: -32px -32px; }
+.player-ui .ui-icon-arrow-1-se { background-position: -48px -32px; }
+.player-ui .ui-icon-arrow-1-s { background-position: -64px -32px; }
+.player-ui .ui-icon-arrow-1-sw { background-position: -80px -32px; }
+.player-ui .ui-icon-arrow-1-w { background-position: -96px -32px; }
+.player-ui .ui-icon-arrow-1-nw { background-position: -112px -32px; }
+.player-ui .ui-icon-arrow-2-n-s { background-position: -128px -32px; }
+.player-ui .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
+.player-ui .ui-icon-arrow-2-e-w { background-position: -160px -32px; }
+.player-ui .ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
+.player-ui .ui-icon-arrowstop-1-n { background-position: -192px -32px; }
+.player-ui .ui-icon-arrowstop-1-e { background-position: -208px -32px; }
+.player-ui .ui-icon-arrowstop-1-s { background-position: -224px -32px; }
+.player-ui .ui-icon-arrowstop-1-w { background-position: -240px -32px; }
+.player-ui .ui-icon-arrowthick-1-n { background-position: 0 -48px; }
+.player-ui .ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
+.player-ui .ui-icon-arrowthick-1-e { background-position: -32px -48px; }
+.player-ui .ui-icon-arrowthick-1-se { background-position: -48px -48px; }
+.player-ui .ui-icon-arrowthick-1-s { background-position: -64px -48px; }
+.player-ui .ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
+.player-ui .ui-icon-arrowthick-1-w { background-position: -96px -48px; }
+.player-ui .ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
+.player-ui .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
+.player-ui .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
+.player-ui .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
+.player-ui .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
+.player-ui .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
+.player-ui .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
+.player-ui .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
+.player-ui .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
+.player-ui .ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
+.player-ui .ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
+.player-ui .ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
+.player-ui .ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
+.player-ui .ui-icon-arrow-4 { background-position: 0 -80px; }
+.player-ui .ui-icon-arrow-4-diag { background-position: -16px -80px; }
+.player-ui .ui-icon-extlink { background-position: -32px -80px; }
+.player-ui .ui-icon-newwin { background-position: -48px -80px; }
+.player-ui .ui-icon-refresh { background-position: -64px -80px; }
+.player-ui .ui-icon-shuffle { background-position: -80px -80px; }
+.player-ui .ui-icon-transfer-e-w { background-position: -96px -80px; }
+.player-ui .ui-icon-transferthick-e-w { background-position: -112px -80px; }
+.player-ui .ui-icon-folder-collapsed { background-position: 0 -96px; }
+.player-ui .ui-icon-folder-open { background-position: -16px -96px; }
+.player-ui .ui-icon-document { background-position: -32px -96px; }
+.player-ui .ui-icon-document-b { background-position: -48px -96px; }
+.player-ui .ui-icon-note { background-position: -64px -96px; }
+.player-ui .ui-icon-mail-closed { background-position: -80px -96px; }
+.player-ui .ui-icon-mail-open { background-position: -96px -96px; }
+.player-ui .ui-icon-suitcase { background-position: -112px -96px; }
+.player-ui .ui-icon-comment { background-position: -128px -96px; }
+.player-ui .ui-icon-person { background-position: -144px -96px; }
+.player-ui .ui-icon-print { background-position: -160px -96px; }
+.player-ui .ui-icon-trash { background-position: -176px -96px; }
+.player-ui .ui-icon-locked { background-position: -192px -96px; }
+.player-ui .ui-icon-unlocked { background-position: -208px -96px; }
+.player-ui .ui-icon-bookmark { background-position: -224px -96px; }
+.player-ui .ui-icon-tag { background-position: -240px -96px; }
+.player-ui .ui-icon-home { background-position: 0 -112px; }
+.player-ui .ui-icon-flag { background-position: -16px -112px; }
+.player-ui .ui-icon-calendar { background-position: -32px -112px; }
+.player-ui .ui-icon-cart { background-position: -48px -112px; }
+.player-ui .ui-icon-pencil { background-position: -64px -112px; }
+.player-ui .ui-icon-clock { background-position: -80px -112px; }
+.player-ui .ui-icon-disk { background-position: -96px -112px; }
+.player-ui .ui-icon-calculator { background-position: -112px -112px; }
+.player-ui .ui-icon-zoomin { background-position: -128px -112px; }
+.player-ui .ui-icon-zoomout { background-position: -144px -112px; }
+.player-ui .ui-icon-search { background-position: -160px -112px; }
+.player-ui .ui-icon-wrench { background-position: -176px -112px; }
+.player-ui .ui-icon-gear { background-position: -192px -112px; }
+.player-ui .ui-icon-heart { background-position: -208px -112px; }
+.player-ui .ui-icon-star { background-position: -224px -112px; }
+.player-ui .ui-icon-link { background-position: -240px -112px; }
+.player-ui .ui-icon-cancel { background-position: 0 -128px; }
+.player-ui .ui-icon-plus { background-position: -16px -128px; }
+.player-ui .ui-icon-plusthick { background-position: -32px -128px; }
+.player-ui .ui-icon-minus { background-position: -48px -128px; }
+.player-ui .ui-icon-minusthick { background-position: -64px -128px; }
+.player-ui .ui-icon-close { background-position: -80px -128px; }
+.player-ui .ui-icon-closethick { background-position: -96px -128px; }
+.player-ui .ui-icon-key { background-position: -112px -128px; }
+.player-ui .ui-icon-lightbulb { background-position: -128px -128px; }
+.player-ui .ui-icon-scissors { background-position: -144px -128px; }
+.player-ui .ui-icon-clipboard { background-position: -160px -128px; }
+.player-ui .ui-icon-copy { background-position: -176px -128px; }
+.player-ui .ui-icon-contact { background-position: -192px -128px; }
+.player-ui .ui-icon-image { background-position: -208px -128px; }
+.player-ui .ui-icon-video { background-position: -224px -128px; }
+.player-ui .ui-icon-script { background-position: -240px -128px; }
+.player-ui .ui-icon-alert { background-position: 0 -144px; }
+.player-ui .ui-icon-info { background-position: -16px -144px; }
+.player-ui .ui-icon-notice { background-position: -32px -144px; }
+.player-ui .ui-icon-help { background-position: -48px -144px; }
+.player-ui .ui-icon-check { background-position: -64px -144px; }
+.player-ui .ui-icon-bullet { background-position: -80px -144px; }
+.player-ui .ui-icon-radio-off { background-position: -96px -144px; }
+.player-ui .ui-icon-radio-on { background-position: -112px -144px; }
+.player-ui .ui-icon-pin-w { background-position: -128px -144px; }
+.player-ui .ui-icon-pin-s { background-position: -144px -144px; }
+.player-ui .ui-icon-play { background-position: 0 -160px; }
+.player-ui .ui-icon-pause { background-position: -16px -160px; }
+.player-ui .ui-icon-seek-next { background-position: -32px -160px; }
+.player-ui .ui-icon-seek-prev { background-position: -48px -160px; }
+.player-ui .ui-icon-seek-end { background-position: -64px -160px; }
+.player-ui .ui-icon-seek-start { background-position: -80px -160px; }
+/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
+.player-ui .ui-icon-seek-first { background-position: -80px -160px; }
+.player-ui .ui-icon-stop { background-position: -96px -160px; }
+.player-ui .ui-icon-eject { background-position: -112px -160px; }
+.player-ui .ui-icon-volume-off { background-position: -128px -160px; }
+.player-ui .ui-icon-volume-on { background-position: -144px -160px; }
+.player-ui .ui-icon-power { background-position: 0 -176px; }
+.player-ui .ui-icon-signal-diag { background-position: -16px -176px; }
+.player-ui .ui-icon-signal { background-position: -32px -176px; }
+.player-ui .ui-icon-battery-0 { background-position: -48px -176px; }
+.player-ui .ui-icon-battery-1 { background-position: -64px -176px; }
+.player-ui .ui-icon-battery-2 { background-position: -80px -176px; }
+.player-ui .ui-icon-battery-3 { background-position: -96px -176px; }
+.player-ui .ui-icon-circle-plus { background-position: 0 -192px; }
+.player-ui .ui-icon-circle-minus { background-position: -16px -192px; }
+.player-ui .ui-icon-circle-close { background-position: -32px -192px; }
+.player-ui .ui-icon-circle-triangle-e { background-position: -48px -192px; }
+.player-ui .ui-icon-circle-triangle-s { background-position: -64px -192px; }
+.player-ui .ui-icon-circle-triangle-w { background-position: -80px -192px; }
+.player-ui .ui-icon-circle-triangle-n { background-position: -96px -192px; }
+.player-ui .ui-icon-circle-arrow-e { background-position: -112px -192px; }
+.player-ui .ui-icon-circle-arrow-s { background-position: -128px -192px; }
+.player-ui .ui-icon-circle-arrow-w { background-position: -144px -192px; }
+.player-ui .ui-icon-circle-arrow-n { background-position: -160px -192px; }
+.player-ui .ui-icon-circle-zoomin { background-position: -176px -192px; }
+.player-ui .ui-icon-circle-zoomout { background-position: -192px -192px; }
+.player-ui .ui-icon-circle-check { background-position: -208px -192px; }
+.player-ui .ui-icon-circlesmall-plus { background-position: 0 -208px; }
+.player-ui .ui-icon-circlesmall-minus { background-position: -16px -208px; }
+.player-ui .ui-icon-circlesmall-close { background-position: -32px -208px; }
+.player-ui .ui-icon-squaresmall-plus { background-position: -48px -208px; }
+.player-ui .ui-icon-squaresmall-minus { background-position: -64px -208px; }
+.player-ui .ui-icon-squaresmall-close { background-position: -80px -208px; }
+.player-ui .ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
+.player-ui .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
+.player-ui .ui-icon-grip-solid-vertical { background-position: -32px -224px; }
+.player-ui .ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
+.player-ui .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
+.player-ui .ui-icon-grip-diagonal-se { background-position: -80px -224px; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Corner radius */
+.player-ui .ui-corner-all, .player-ui .ui-corner-top, .player-ui .ui-corner-left, .player-ui .ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -khtml-border-top-left-radius: 4px; border-top-left-radius: 4px; }
+.player-ui .ui-corner-all, .player-ui .ui-corner-top, .player-ui .ui-corner-right, .player-ui .ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; -khtml-border-top-right-radius: 4px; border-top-right-radius: 4px; }
+.player-ui .ui-corner-all, .player-ui .ui-corner-bottom, .player-ui .ui-corner-left, .player-ui .ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; -khtml-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }
+.player-ui .ui-corner-all, .player-ui .ui-corner-bottom, .player-ui .ui-corner-right, .player-ui .ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; -khtml-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
+
+/* Overlays */
+.player-ui .ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); }
+.player-ui .ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -khtml-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/*
+ * jQuery UI Resizable 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Resizable#theming
+ */
+.player-ui .ui-resizable { position: relative;}
+.player-ui .ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block; }
+.player-ui .ui-resizable-disabled .ui-resizable-handle, .player-ui .ui-resizable-autohide .ui-resizable-handle { display: none; }
+.player-ui .ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
+.player-ui .ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
+.player-ui .ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
+.player-ui .ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
+.player-ui .ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
+.player-ui .ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
+.player-ui .ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
+.player-ui .ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/*
+ * jQuery UI Selectable 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Selectable#theming
+ */
+.player-ui .ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }
+/*
+ * jQuery UI Accordion 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Accordion#theming
+ */
+/* IE/Win - Fix animation bug - #4615 */
+.player-ui .ui-accordion { width: 100%; }
+.player-ui .ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
+.player-ui .ui-accordion .ui-accordion-li-fix { display: inline; }
+.player-ui .ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
+.player-ui .ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; }
+.player-ui .ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; }
+.player-ui .ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
+.player-ui .ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; }
+.player-ui .ui-accordion .ui-accordion-content-active { display: block; }
+/*
+ * jQuery UI Autocomplete 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Autocomplete#theming
+ */
+.player-ui .ui-autocomplete { position: absolute; cursor: default; }	
+
+/* workarounds */
+* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
+
+/*
+ * jQuery UI Menu 1.8.18
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Menu#theming
+ */
+.player-ui .ui-menu {
+	list-style:none;
+	padding: 2px;
+	margin: 0;
+	display:block;
+	float: left;
+}
+.player-ui .ui-menu .ui-menu {
+	margin-top: -3px;
+}
+.player-ui .ui-menu .ui-menu-item {
+	margin:0;
+	padding: 0;
+	zoom: 1;
+	float: left;
+	clear: left;
+	width: 100%;
+}
+.player-ui .ui-menu .ui-menu-item a {
+	text-decoration:none;
+	display:block;
+	padding:.2em .4em;
+	line-height:1.5;
+	zoom:1;
+}
+.player-ui .ui-menu .ui-menu-item a.ui-state-hover,
+.player-ui .ui-menu .ui-menu-item a.ui-state-active {
+	font-weight: normal;
+	margin: -1px;
+}
+/*
+ * jQuery UI Button 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Button#theming
+ */
+.player-ui .ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: hidden; *overflow: visible; } /* the overflow property removes extra width in IE */
+.player-ui .ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
+button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
+.player-ui .ui-button-icons-only { width: 3.4em; } 
+button.ui-button-icons-only { width: 3.7em; } 
+
+/*button text element */
+.player-ui .ui-button .ui-button-text { display: block; line-height: 1.4;  }
+.player-ui .ui-button-text-only .ui-button-text { padding: .4em 1em; }
+.player-ui .ui-button-icon-only .ui-button-text, .player-ui .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
+.player-ui .ui-button-text-icon-primary .ui-button-text, .player-ui .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
+.player-ui .ui-button-text-icon-secondary .ui-button-text, .player-ui .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }
+.player-ui .ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }
+/* no icon support for input elements, provide padding by default */
+input.ui-button { padding: .4em 1em; }
+
+/*button icon element(s) */
+.player-ui .ui-button-icon-only .ui-icon, .player-ui .ui-button-text-icon-primary .ui-icon, .player-ui .ui-button-text-icon-secondary .ui-icon, .player-ui .ui-button-text-icons .ui-icon, .player-ui .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
+.player-ui .ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
+.player-ui .ui-button-text-icon-primary .ui-button-icon-primary, .player-ui .ui-button-text-icons .ui-button-icon-primary, .player-ui .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
+.player-ui .ui-button-text-icon-secondary .ui-button-icon-secondary, .player-ui .ui-button-text-icons .ui-button-icon-secondary, .player-ui .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
+.player-ui .ui-button-text-icons .ui-button-icon-secondary, .player-ui .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
+
+/*button sets*/
+.player-ui .ui-buttonset { margin-right: 7px; }
+.player-ui .ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }
+
+/* workarounds */
+button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
+/*
+ * jQuery UI Dialog 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Dialog#theming
+ */
+.player-ui .ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; }
+.player-ui .ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative;  }
+.player-ui .ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; } 
+.player-ui .ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
+.player-ui .ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
+.player-ui .ui-dialog .ui-dialog-titlebar-close:hover, .player-ui .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
+.player-ui .ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
+.player-ui .ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
+.player-ui .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
+.player-ui .ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
+.player-ui .ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
+.player-ui .ui-draggable .ui-dialog-titlebar { cursor: move; }
+/*
+ * jQuery UI Slider 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Slider#theming
+ */
+.player-ui .ui-slider { position: relative; text-align: left; }
+.player-ui .ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
+.player-ui .ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
+
+.player-ui .ui-slider-horizontal { height: .8em; }
+.player-ui .ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
+.player-ui .ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
+.player-ui .ui-slider-horizontal .ui-slider-range-min { left: 0; }
+.player-ui .ui-slider-horizontal .ui-slider-range-max { right: 0; }
+
+.player-ui .ui-slider-vertical { width: .8em; height: 100px; }
+.player-ui .ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
+.player-ui .ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
+.player-ui .ui-slider-vertical .ui-slider-range-min { bottom: 0; }
+.player-ui .ui-slider-vertical .ui-slider-range-max { top: 0; }/*
+ * jQuery UI Tabs 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Tabs#theming
+ */
+.player-ui .ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
+.player-ui .ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
+.player-ui .ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
+.player-ui .ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }
+.player-ui .ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; }
+.player-ui .ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .player-ui .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .player-ui .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
+.player-ui .ui-tabs .ui-tabs-nav li a, .player-ui .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
+.player-ui .ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }
+.player-ui .ui-tabs .ui-tabs-hide { display: none !important; }
+/*
+ * jQuery UI Datepicker 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Datepicker#theming
+ */
+.player-ui .ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }
+.player-ui .ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
+.player-ui .ui-datepicker .ui-datepicker-prev, .player-ui .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
+.player-ui .ui-datepicker .ui-datepicker-prev-hover, .player-ui .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
+.player-ui .ui-datepicker .ui-datepicker-prev { left:2px; }
+.player-ui .ui-datepicker .ui-datepicker-next { right:2px; }
+.player-ui .ui-datepicker .ui-datepicker-prev-hover { left:1px; }
+.player-ui .ui-datepicker .ui-datepicker-next-hover { right:1px; }
+.player-ui .ui-datepicker .ui-datepicker-prev span, .player-ui .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px;  }
+.player-ui .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
+.player-ui .ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
+.player-ui .ui-datepicker select.ui-datepicker-month-year {width: 100%;}
+.player-ui .ui-datepicker select.ui-datepicker-month, 
+.player-ui .ui-datepicker select.ui-datepicker-year { width: 49%;}
+.player-ui .ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
+.player-ui .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0;  }
+.player-ui .ui-datepicker td { border: 0; padding: 1px; }
+.player-ui .ui-datepicker td span, .player-ui .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
+.player-ui .ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
+.player-ui .ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
+.player-ui .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
+
+/* with multiple calendars */
+.player-ui .ui-datepicker.ui-datepicker-multi { width:auto; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group { float:left; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
+.player-ui .ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
+.player-ui .ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
+.player-ui .ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
+.player-ui .ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
+.player-ui .ui-datepicker-row-break { clear:both; width:100%; font-size:0em; }
+
+/* RTL support */
+.player-ui .ui-datepicker-rtl { direction: rtl; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-group { float:right; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+
+/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
+.player-ui .ui-datepicker-cover {
+    display: none; /*sorry for IE5*/
+    display/**/: block; /*sorry for IE5*/
+    position: absolute; /*must have*/
+    z-index: -1; /*must have*/
+    filter: mask(); /*must have*/
+    top: -4px; /*must have*/
+    left: -4px; /*must have*/
+    width: 200px; /*must have*/
+    height: 200px; /*must have*/
+}/*
+ * jQuery UI Progressbar 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Progressbar#theming
+ */
+.player-ui .ui-progressbar { height:2em; text-align: left; overflow: hidden; }
+.player-ui .ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/jquery-ui/south-street/images/ui-bg_glass_55_fcf0ba_1x400.png b/public/admin/js/osmplayer/jquery-ui/south-street/images/ui-bg_glass_55_fcf0ba_1x400.png
new file mode 100644
index 0000000000000000000000000000000000000000..a95fa334ed460cfae0f7be46c622558969a120a9
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/south-street/images/ui-bg_glass_55_fcf0ba_1x400.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/south-street/images/ui-bg_gloss-wave_100_ece8da_500x100.png b/public/admin/js/osmplayer/jquery-ui/south-street/images/ui-bg_gloss-wave_100_ece8da_500x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..709b5ab1dc97b439bad3ab7413187aa9378a938f
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/south-street/images/ui-bg_gloss-wave_100_ece8da_500x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/south-street/images/ui-bg_highlight-hard_100_f5f3e5_1x100.png b/public/admin/js/osmplayer/jquery-ui/south-street/images/ui-bg_highlight-hard_100_f5f3e5_1x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..6045f63e75b755f83f1dce6b9e476c7c1cb3ca5b
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/south-street/images/ui-bg_highlight-hard_100_f5f3e5_1x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/south-street/images/ui-bg_highlight-hard_100_fafaf4_1x100.png b/public/admin/js/osmplayer/jquery-ui/south-street/images/ui-bg_highlight-hard_100_fafaf4_1x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..bfc39c676c1a0cd4e53ad9cad0d66f47cadae4af
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/south-street/images/ui-bg_highlight-hard_100_fafaf4_1x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/south-street/images/ui-bg_highlight-hard_15_459e00_1x100.png b/public/admin/js/osmplayer/jquery-ui/south-street/images/ui-bg_highlight-hard_15_459e00_1x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..5f609250f7c24c6a961e43bbeb9fa3f8917f94c0
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/south-street/images/ui-bg_highlight-hard_15_459e00_1x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/south-street/images/ui-bg_highlight-hard_95_cccccc_1x100.png b/public/admin/js/osmplayer/jquery-ui/south-street/images/ui-bg_highlight-hard_95_cccccc_1x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..ca80bffc64e4aed87a021b53260373ae22f0f175
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/south-street/images/ui-bg_highlight-hard_95_cccccc_1x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/south-street/images/ui-bg_highlight-soft_25_67b021_1x100.png b/public/admin/js/osmplayer/jquery-ui/south-street/images/ui-bg_highlight-soft_25_67b021_1x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..b33bd7b6e13f1f7c46ed2ab185efa7dc2a53ffa1
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/south-street/images/ui-bg_highlight-soft_25_67b021_1x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/south-street/images/ui-bg_highlight-soft_95_ffedad_1x100.png b/public/admin/js/osmplayer/jquery-ui/south-street/images/ui-bg_highlight-soft_95_ffedad_1x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..b4cb8241c998d7240a5ece7f5073515217bb38af
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/south-street/images/ui-bg_highlight-soft_95_ffedad_1x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/south-street/images/ui-bg_inset-soft_15_2b2922_1x100.png b/public/admin/js/osmplayer/jquery-ui/south-street/images/ui-bg_inset-soft_15_2b2922_1x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..8e5c3a3f8ac166a771e94d4c88fdf980864d4f42
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/south-street/images/ui-bg_inset-soft_15_2b2922_1x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/south-street/images/ui-icons_808080_256x240.png b/public/admin/js/osmplayer/jquery-ui/south-street/images/ui-icons_808080_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..e669d816ce7dac013c4f0e9625164e1cc1d911dd
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/south-street/images/ui-icons_808080_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/south-street/images/ui-icons_847e71_256x240.png b/public/admin/js/osmplayer/jquery-ui/south-street/images/ui-icons_847e71_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..b20c322060f8c59faea3d9396482aae058168d9d
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/south-street/images/ui-icons_847e71_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/south-street/images/ui-icons_8dc262_256x240.png b/public/admin/js/osmplayer/jquery-ui/south-street/images/ui-icons_8dc262_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..004295757fa25c1f7fbe44bb111ba8fa972e8f22
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/south-street/images/ui-icons_8dc262_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/south-street/images/ui-icons_cd0a0a_256x240.png b/public/admin/js/osmplayer/jquery-ui/south-street/images/ui-icons_cd0a0a_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..2ab019b73ec11a485fa09378f3a0e155194f6a5d
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/south-street/images/ui-icons_cd0a0a_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/south-street/images/ui-icons_eeeeee_256x240.png b/public/admin/js/osmplayer/jquery-ui/south-street/images/ui-icons_eeeeee_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..01bb36ba7668a4a9e181f4af7ad89dcf1fe3022d
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/south-street/images/ui-icons_eeeeee_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/south-street/images/ui-icons_ffffff_256x240.png b/public/admin/js/osmplayer/jquery-ui/south-street/images/ui-icons_ffffff_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..42f8f992c727ddaa617da224a522e463df690387
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/south-street/images/ui-icons_ffffff_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/south-street/jquery-ui-1.8.18.custom.css b/public/admin/js/osmplayer/jquery-ui/south-street/jquery-ui-1.8.18.custom.css
new file mode 100644
index 0000000000000000000000000000000000000000..a121e30215bf6530c1fe69e0e8474d54d0df3c8f
--- /dev/null
+++ b/public/admin/js/osmplayer/jquery-ui/south-street/jquery-ui-1.8.18.custom.css
@@ -0,0 +1,565 @@
+/*
+ * jQuery UI CSS Framework 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ */
+
+/* Layout helpers
+----------------------------------*/
+.player-ui .ui-helper-hidden { display: none; }
+.player-ui .ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
+.player-ui .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
+.player-ui .ui-helper-clearfix:before, .player-ui .ui-helper-clearfix:after { content: ""; display: table; }
+.player-ui .ui-helper-clearfix:after { clear: both; }
+.player-ui .ui-helper-clearfix { zoom: 1; }
+.player-ui .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
+
+
+/* Interaction Cues
+----------------------------------*/
+.player-ui .ui-state-disabled { cursor: default !important; }
+
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.player-ui .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+.player-ui .ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
+
+
+/*
+ * jQuery UI CSS Framework 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ *
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=segoe%20ui,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=6px&bgColorHeader=ece8da&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=100&borderColorHeader=d4ccb0&fcHeader=433f38&iconColorHeader=847e71&bgColorContent=f5f3e5&bgTextureContent=04_highlight_hard.png&bgImgOpacityContent=100&borderColorContent=dfd9c3&fcContent=312e25&iconColorContent=808080&bgColorDefault=459e00&bgTextureDefault=04_highlight_hard.png&bgImgOpacityDefault=15&borderColorDefault=327E04&fcDefault=ffffff&iconColorDefault=eeeeee&bgColorHover=67b021&bgTextureHover=03_highlight_soft.png&bgImgOpacityHover=25&borderColorHover=327E04&fcHover=ffffff&iconColorHover=ffffff&bgColorActive=fafaf4&bgTextureActive=04_highlight_hard.png&bgImgOpacityActive=100&borderColorActive=d4ccb0&fcActive=459e00&iconColorActive=8DC262&bgColorHighlight=fcf0ba&bgTextureHighlight=02_glass.png&bgImgOpacityHighlight=55&borderColorHighlight=e8e1b5&fcHighlight=363636&iconColorHighlight=8DC262&bgColorError=ffedad&bgTextureError=03_highlight_soft.png&bgImgOpacityError=95&borderColorError=e3a345&fcError=cd5c0a&iconColorError=cd0a0a&bgColorOverlay=2b2922&bgTextureOverlay=05_inset_soft.png&bgImgOpacityOverlay=15&opacityOverlay=90&bgColorShadow=cccccc&bgTextureShadow=04_highlight_hard.png&bgImgOpacityShadow=95&opacityShadow=20&thicknessShadow=12px&offsetTopShadow=-12px&offsetLeftShadow=-12px&cornerRadiusShadow=10px
+ */
+
+
+/* Component containers
+----------------------------------*/
+.player-ui .ui-widget { font-family: segoe ui, Arial, sans-serif; font-size: 1.1em; }
+.player-ui .ui-widget .ui-widget { font-size: 1em; }
+.player-ui .ui-widget input, .player-ui .ui-widget select, .player-ui .ui-widget textarea, .player-ui .ui-widget button { font-family: segoe ui, Arial, sans-serif; font-size: 1em; }
+.player-ui .ui-widget-content { border: 1px solid #dfd9c3; background: #f5f3e5 url(images/ui-bg_highlight-hard_100_f5f3e5_1x100.png) 50% top repeat-x; color: #312e25; }
+.player-ui .ui-widget-content a { color: #312e25; }
+.player-ui .ui-widget-header { border: 1px solid #d4ccb0; background: #ece8da url(images/ui-bg_gloss-wave_100_ece8da_500x100.png) 50% 50% repeat-x; color: #433f38; font-weight: bold; }
+.player-ui .ui-widget-header a { color: #433f38; }
+
+/* Interaction states
+----------------------------------*/
+.player-ui .ui-state-default, .player-ui .ui-widget-content .ui-state-default, .player-ui .ui-widget-header .ui-state-default { border: 1px solid #327e04; background: #459e00 url(images/ui-bg_highlight-hard_15_459e00_1x100.png) 50% 50% repeat-x; font-weight: bold; color: #ffffff; }
+.player-ui .ui-state-default a, .player-ui .ui-state-default a:link, .player-ui .ui-state-default a:visited { color: #ffffff; text-decoration: none; }
+.player-ui .ui-state-hover, .player-ui .ui-widget-content .ui-state-hover, .player-ui .ui-widget-header .ui-state-hover, .player-ui .ui-state-focus, .player-ui .ui-widget-content .ui-state-focus, .player-ui .ui-widget-header .ui-state-focus { border: 1px solid #327e04; background: #67b021 url(images/ui-bg_highlight-soft_25_67b021_1x100.png) 50% 50% repeat-x; font-weight: bold; color: #ffffff; }
+.player-ui .ui-state-hover a, .player-ui .ui-state-hover a:hover { color: #ffffff; text-decoration: none; }
+.player-ui .ui-state-active, .player-ui .ui-widget-content .ui-state-active, .player-ui .ui-widget-header .ui-state-active { border: 1px solid #d4ccb0; background: #fafaf4 url(images/ui-bg_highlight-hard_100_fafaf4_1x100.png) 50% 50% repeat-x; font-weight: bold; color: #459e00; }
+.player-ui .ui-state-active a, .player-ui .ui-state-active a:link, .player-ui .ui-state-active a:visited { color: #459e00; text-decoration: none; }
+.player-ui .ui-widget :active { outline: none; }
+
+/* Interaction Cues
+----------------------------------*/
+.player-ui .ui-state-highlight, .player-ui .ui-widget-content .ui-state-highlight, .player-ui .ui-widget-header .ui-state-highlight  {border: 1px solid #e8e1b5; background: #fcf0ba url(images/ui-bg_glass_55_fcf0ba_1x400.png) 50% 50% repeat-x; color: #363636; }
+.player-ui .ui-state-highlight a, .player-ui .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
+.player-ui .ui-state-error, .player-ui .ui-widget-content .ui-state-error, .player-ui .ui-widget-header .ui-state-error {border: 1px solid #e3a345; background: #ffedad url(images/ui-bg_highlight-soft_95_ffedad_1x100.png) 50% top repeat-x; color: #cd5c0a; }
+.player-ui .ui-state-error a, .player-ui .ui-widget-content .ui-state-error a, .player-ui .ui-widget-header .ui-state-error a { color: #cd5c0a; }
+.player-ui .ui-state-error-text, .player-ui .ui-widget-content .ui-state-error-text, .player-ui .ui-widget-header .ui-state-error-text { color: #cd5c0a; }
+.player-ui .ui-priority-primary, .player-ui .ui-widget-content .ui-priority-primary, .player-ui .ui-widget-header .ui-priority-primary { font-weight: bold; }
+.player-ui .ui-priority-secondary, .player-ui .ui-widget-content .ui-priority-secondary,  .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
+.player-ui .ui-state-disabled, .player-ui .ui-widget-content .ui-state-disabled, .player-ui .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.player-ui .ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_808080_256x240.png); }
+.player-ui .ui-widget-content .ui-icon {background-image: url(images/ui-icons_808080_256x240.png); }
+.player-ui .ui-widget-header .ui-icon {background-image: url(images/ui-icons_847e71_256x240.png); }
+.player-ui .ui-state-default .ui-icon { background-image: url(images/ui-icons_eeeeee_256x240.png); }
+.player-ui .ui-state-hover .ui-icon, .player-ui .ui-state-focus .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); }
+.player-ui .ui-state-active .ui-icon {background-image: url(images/ui-icons_8dc262_256x240.png); }
+.player-ui .ui-state-highlight .ui-icon {background-image: url(images/ui-icons_8dc262_256x240.png); }
+.player-ui .ui-state-error .ui-icon, .player-ui .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png); }
+
+/* positioning */
+.player-ui .ui-icon-carat-1-n { background-position: 0 0; }
+.player-ui .ui-icon-carat-1-ne { background-position: -16px 0; }
+.player-ui .ui-icon-carat-1-e { background-position: -32px 0; }
+.player-ui .ui-icon-carat-1-se { background-position: -48px 0; }
+.player-ui .ui-icon-carat-1-s { background-position: -64px 0; }
+.player-ui .ui-icon-carat-1-sw { background-position: -80px 0; }
+.player-ui .ui-icon-carat-1-w { background-position: -96px 0; }
+.player-ui .ui-icon-carat-1-nw { background-position: -112px 0; }
+.player-ui .ui-icon-carat-2-n-s { background-position: -128px 0; }
+.player-ui .ui-icon-carat-2-e-w { background-position: -144px 0; }
+.player-ui .ui-icon-triangle-1-n { background-position: 0 -16px; }
+.player-ui .ui-icon-triangle-1-ne { background-position: -16px -16px; }
+.player-ui .ui-icon-triangle-1-e { background-position: -32px -16px; }
+.player-ui .ui-icon-triangle-1-se { background-position: -48px -16px; }
+.player-ui .ui-icon-triangle-1-s { background-position: -64px -16px; }
+.player-ui .ui-icon-triangle-1-sw { background-position: -80px -16px; }
+.player-ui .ui-icon-triangle-1-w { background-position: -96px -16px; }
+.player-ui .ui-icon-triangle-1-nw { background-position: -112px -16px; }
+.player-ui .ui-icon-triangle-2-n-s { background-position: -128px -16px; }
+.player-ui .ui-icon-triangle-2-e-w { background-position: -144px -16px; }
+.player-ui .ui-icon-arrow-1-n { background-position: 0 -32px; }
+.player-ui .ui-icon-arrow-1-ne { background-position: -16px -32px; }
+.player-ui .ui-icon-arrow-1-e { background-position: -32px -32px; }
+.player-ui .ui-icon-arrow-1-se { background-position: -48px -32px; }
+.player-ui .ui-icon-arrow-1-s { background-position: -64px -32px; }
+.player-ui .ui-icon-arrow-1-sw { background-position: -80px -32px; }
+.player-ui .ui-icon-arrow-1-w { background-position: -96px -32px; }
+.player-ui .ui-icon-arrow-1-nw { background-position: -112px -32px; }
+.player-ui .ui-icon-arrow-2-n-s { background-position: -128px -32px; }
+.player-ui .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
+.player-ui .ui-icon-arrow-2-e-w { background-position: -160px -32px; }
+.player-ui .ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
+.player-ui .ui-icon-arrowstop-1-n { background-position: -192px -32px; }
+.player-ui .ui-icon-arrowstop-1-e { background-position: -208px -32px; }
+.player-ui .ui-icon-arrowstop-1-s { background-position: -224px -32px; }
+.player-ui .ui-icon-arrowstop-1-w { background-position: -240px -32px; }
+.player-ui .ui-icon-arrowthick-1-n { background-position: 0 -48px; }
+.player-ui .ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
+.player-ui .ui-icon-arrowthick-1-e { background-position: -32px -48px; }
+.player-ui .ui-icon-arrowthick-1-se { background-position: -48px -48px; }
+.player-ui .ui-icon-arrowthick-1-s { background-position: -64px -48px; }
+.player-ui .ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
+.player-ui .ui-icon-arrowthick-1-w { background-position: -96px -48px; }
+.player-ui .ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
+.player-ui .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
+.player-ui .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
+.player-ui .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
+.player-ui .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
+.player-ui .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
+.player-ui .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
+.player-ui .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
+.player-ui .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
+.player-ui .ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
+.player-ui .ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
+.player-ui .ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
+.player-ui .ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
+.player-ui .ui-icon-arrow-4 { background-position: 0 -80px; }
+.player-ui .ui-icon-arrow-4-diag { background-position: -16px -80px; }
+.player-ui .ui-icon-extlink { background-position: -32px -80px; }
+.player-ui .ui-icon-newwin { background-position: -48px -80px; }
+.player-ui .ui-icon-refresh { background-position: -64px -80px; }
+.player-ui .ui-icon-shuffle { background-position: -80px -80px; }
+.player-ui .ui-icon-transfer-e-w { background-position: -96px -80px; }
+.player-ui .ui-icon-transferthick-e-w { background-position: -112px -80px; }
+.player-ui .ui-icon-folder-collapsed { background-position: 0 -96px; }
+.player-ui .ui-icon-folder-open { background-position: -16px -96px; }
+.player-ui .ui-icon-document { background-position: -32px -96px; }
+.player-ui .ui-icon-document-b { background-position: -48px -96px; }
+.player-ui .ui-icon-note { background-position: -64px -96px; }
+.player-ui .ui-icon-mail-closed { background-position: -80px -96px; }
+.player-ui .ui-icon-mail-open { background-position: -96px -96px; }
+.player-ui .ui-icon-suitcase { background-position: -112px -96px; }
+.player-ui .ui-icon-comment { background-position: -128px -96px; }
+.player-ui .ui-icon-person { background-position: -144px -96px; }
+.player-ui .ui-icon-print { background-position: -160px -96px; }
+.player-ui .ui-icon-trash { background-position: -176px -96px; }
+.player-ui .ui-icon-locked { background-position: -192px -96px; }
+.player-ui .ui-icon-unlocked { background-position: -208px -96px; }
+.player-ui .ui-icon-bookmark { background-position: -224px -96px; }
+.player-ui .ui-icon-tag { background-position: -240px -96px; }
+.player-ui .ui-icon-home { background-position: 0 -112px; }
+.player-ui .ui-icon-flag { background-position: -16px -112px; }
+.player-ui .ui-icon-calendar { background-position: -32px -112px; }
+.player-ui .ui-icon-cart { background-position: -48px -112px; }
+.player-ui .ui-icon-pencil { background-position: -64px -112px; }
+.player-ui .ui-icon-clock { background-position: -80px -112px; }
+.player-ui .ui-icon-disk { background-position: -96px -112px; }
+.player-ui .ui-icon-calculator { background-position: -112px -112px; }
+.player-ui .ui-icon-zoomin { background-position: -128px -112px; }
+.player-ui .ui-icon-zoomout { background-position: -144px -112px; }
+.player-ui .ui-icon-search { background-position: -160px -112px; }
+.player-ui .ui-icon-wrench { background-position: -176px -112px; }
+.player-ui .ui-icon-gear { background-position: -192px -112px; }
+.player-ui .ui-icon-heart { background-position: -208px -112px; }
+.player-ui .ui-icon-star { background-position: -224px -112px; }
+.player-ui .ui-icon-link { background-position: -240px -112px; }
+.player-ui .ui-icon-cancel { background-position: 0 -128px; }
+.player-ui .ui-icon-plus { background-position: -16px -128px; }
+.player-ui .ui-icon-plusthick { background-position: -32px -128px; }
+.player-ui .ui-icon-minus { background-position: -48px -128px; }
+.player-ui .ui-icon-minusthick { background-position: -64px -128px; }
+.player-ui .ui-icon-close { background-position: -80px -128px; }
+.player-ui .ui-icon-closethick { background-position: -96px -128px; }
+.player-ui .ui-icon-key { background-position: -112px -128px; }
+.player-ui .ui-icon-lightbulb { background-position: -128px -128px; }
+.player-ui .ui-icon-scissors { background-position: -144px -128px; }
+.player-ui .ui-icon-clipboard { background-position: -160px -128px; }
+.player-ui .ui-icon-copy { background-position: -176px -128px; }
+.player-ui .ui-icon-contact { background-position: -192px -128px; }
+.player-ui .ui-icon-image { background-position: -208px -128px; }
+.player-ui .ui-icon-video { background-position: -224px -128px; }
+.player-ui .ui-icon-script { background-position: -240px -128px; }
+.player-ui .ui-icon-alert { background-position: 0 -144px; }
+.player-ui .ui-icon-info { background-position: -16px -144px; }
+.player-ui .ui-icon-notice { background-position: -32px -144px; }
+.player-ui .ui-icon-help { background-position: -48px -144px; }
+.player-ui .ui-icon-check { background-position: -64px -144px; }
+.player-ui .ui-icon-bullet { background-position: -80px -144px; }
+.player-ui .ui-icon-radio-off { background-position: -96px -144px; }
+.player-ui .ui-icon-radio-on { background-position: -112px -144px; }
+.player-ui .ui-icon-pin-w { background-position: -128px -144px; }
+.player-ui .ui-icon-pin-s { background-position: -144px -144px; }
+.player-ui .ui-icon-play { background-position: 0 -160px; }
+.player-ui .ui-icon-pause { background-position: -16px -160px; }
+.player-ui .ui-icon-seek-next { background-position: -32px -160px; }
+.player-ui .ui-icon-seek-prev { background-position: -48px -160px; }
+.player-ui .ui-icon-seek-end { background-position: -64px -160px; }
+.player-ui .ui-icon-seek-start { background-position: -80px -160px; }
+/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
+.player-ui .ui-icon-seek-first { background-position: -80px -160px; }
+.player-ui .ui-icon-stop { background-position: -96px -160px; }
+.player-ui .ui-icon-eject { background-position: -112px -160px; }
+.player-ui .ui-icon-volume-off { background-position: -128px -160px; }
+.player-ui .ui-icon-volume-on { background-position: -144px -160px; }
+.player-ui .ui-icon-power { background-position: 0 -176px; }
+.player-ui .ui-icon-signal-diag { background-position: -16px -176px; }
+.player-ui .ui-icon-signal { background-position: -32px -176px; }
+.player-ui .ui-icon-battery-0 { background-position: -48px -176px; }
+.player-ui .ui-icon-battery-1 { background-position: -64px -176px; }
+.player-ui .ui-icon-battery-2 { background-position: -80px -176px; }
+.player-ui .ui-icon-battery-3 { background-position: -96px -176px; }
+.player-ui .ui-icon-circle-plus { background-position: 0 -192px; }
+.player-ui .ui-icon-circle-minus { background-position: -16px -192px; }
+.player-ui .ui-icon-circle-close { background-position: -32px -192px; }
+.player-ui .ui-icon-circle-triangle-e { background-position: -48px -192px; }
+.player-ui .ui-icon-circle-triangle-s { background-position: -64px -192px; }
+.player-ui .ui-icon-circle-triangle-w { background-position: -80px -192px; }
+.player-ui .ui-icon-circle-triangle-n { background-position: -96px -192px; }
+.player-ui .ui-icon-circle-arrow-e { background-position: -112px -192px; }
+.player-ui .ui-icon-circle-arrow-s { background-position: -128px -192px; }
+.player-ui .ui-icon-circle-arrow-w { background-position: -144px -192px; }
+.player-ui .ui-icon-circle-arrow-n { background-position: -160px -192px; }
+.player-ui .ui-icon-circle-zoomin { background-position: -176px -192px; }
+.player-ui .ui-icon-circle-zoomout { background-position: -192px -192px; }
+.player-ui .ui-icon-circle-check { background-position: -208px -192px; }
+.player-ui .ui-icon-circlesmall-plus { background-position: 0 -208px; }
+.player-ui .ui-icon-circlesmall-minus { background-position: -16px -208px; }
+.player-ui .ui-icon-circlesmall-close { background-position: -32px -208px; }
+.player-ui .ui-icon-squaresmall-plus { background-position: -48px -208px; }
+.player-ui .ui-icon-squaresmall-minus { background-position: -64px -208px; }
+.player-ui .ui-icon-squaresmall-close { background-position: -80px -208px; }
+.player-ui .ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
+.player-ui .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
+.player-ui .ui-icon-grip-solid-vertical { background-position: -32px -224px; }
+.player-ui .ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
+.player-ui .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
+.player-ui .ui-icon-grip-diagonal-se { background-position: -80px -224px; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Corner radius */
+.player-ui .ui-corner-all, .player-ui .ui-corner-top, .player-ui .ui-corner-left, .player-ui .ui-corner-tl { -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; -khtml-border-top-left-radius: 6px; border-top-left-radius: 6px; }
+.player-ui .ui-corner-all, .player-ui .ui-corner-top, .player-ui .ui-corner-right, .player-ui .ui-corner-tr { -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; -khtml-border-top-right-radius: 6px; border-top-right-radius: 6px; }
+.player-ui .ui-corner-all, .player-ui .ui-corner-bottom, .player-ui .ui-corner-left, .player-ui .ui-corner-bl { -moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; -khtml-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px; }
+.player-ui .ui-corner-all, .player-ui .ui-corner-bottom, .player-ui .ui-corner-right, .player-ui .ui-corner-br { -moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; -khtml-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px; }
+
+/* Overlays */
+.player-ui .ui-widget-overlay { background: #2b2922 url(images/ui-bg_inset-soft_15_2b2922_1x100.png) 50% bottom repeat-x; opacity: .90;filter:Alpha(Opacity=90); }
+.player-ui .ui-widget-shadow { margin: -12px 0 0 -12px; padding: 12px; background: #cccccc url(images/ui-bg_highlight-hard_95_cccccc_1x100.png) 50% top repeat-x; opacity: .20;filter:Alpha(Opacity=20); -moz-border-radius: 10px; -khtml-border-radius: 10px; -webkit-border-radius: 10px; border-radius: 10px; }/*
+ * jQuery UI Resizable 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Resizable#theming
+ */
+.player-ui .ui-resizable { position: relative;}
+.player-ui .ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block; }
+.player-ui .ui-resizable-disabled .ui-resizable-handle, .player-ui .ui-resizable-autohide .ui-resizable-handle { display: none; }
+.player-ui .ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
+.player-ui .ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
+.player-ui .ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
+.player-ui .ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
+.player-ui .ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
+.player-ui .ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
+.player-ui .ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
+.player-ui .ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/*
+ * jQuery UI Selectable 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Selectable#theming
+ */
+.player-ui .ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }
+/*
+ * jQuery UI Accordion 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Accordion#theming
+ */
+/* IE/Win - Fix animation bug - #4615 */
+.player-ui .ui-accordion { width: 100%; }
+.player-ui .ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
+.player-ui .ui-accordion .ui-accordion-li-fix { display: inline; }
+.player-ui .ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
+.player-ui .ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; }
+.player-ui .ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; }
+.player-ui .ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
+.player-ui .ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; }
+.player-ui .ui-accordion .ui-accordion-content-active { display: block; }
+/*
+ * jQuery UI Autocomplete 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Autocomplete#theming
+ */
+.player-ui .ui-autocomplete { position: absolute; cursor: default; }	
+
+/* workarounds */
+* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
+
+/*
+ * jQuery UI Menu 1.8.18
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Menu#theming
+ */
+.player-ui .ui-menu {
+	list-style:none;
+	padding: 2px;
+	margin: 0;
+	display:block;
+	float: left;
+}
+.player-ui .ui-menu .ui-menu {
+	margin-top: -3px;
+}
+.player-ui .ui-menu .ui-menu-item {
+	margin:0;
+	padding: 0;
+	zoom: 1;
+	float: left;
+	clear: left;
+	width: 100%;
+}
+.player-ui .ui-menu .ui-menu-item a {
+	text-decoration:none;
+	display:block;
+	padding:.2em .4em;
+	line-height:1.5;
+	zoom:1;
+}
+.player-ui .ui-menu .ui-menu-item a.ui-state-hover,
+.player-ui .ui-menu .ui-menu-item a.ui-state-active {
+	font-weight: normal;
+	margin: -1px;
+}
+/*
+ * jQuery UI Button 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Button#theming
+ */
+.player-ui .ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: hidden; *overflow: visible; } /* the overflow property removes extra width in IE */
+.player-ui .ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
+button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
+.player-ui .ui-button-icons-only { width: 3.4em; } 
+button.ui-button-icons-only { width: 3.7em; } 
+
+/*button text element */
+.player-ui .ui-button .ui-button-text { display: block; line-height: 1.4;  }
+.player-ui .ui-button-text-only .ui-button-text { padding: .4em 1em; }
+.player-ui .ui-button-icon-only .ui-button-text, .player-ui .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
+.player-ui .ui-button-text-icon-primary .ui-button-text, .player-ui .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
+.player-ui .ui-button-text-icon-secondary .ui-button-text, .player-ui .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }
+.player-ui .ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }
+/* no icon support for input elements, provide padding by default */
+input.ui-button { padding: .4em 1em; }
+
+/*button icon element(s) */
+.player-ui .ui-button-icon-only .ui-icon, .player-ui .ui-button-text-icon-primary .ui-icon, .player-ui .ui-button-text-icon-secondary .ui-icon, .player-ui .ui-button-text-icons .ui-icon, .player-ui .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
+.player-ui .ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
+.player-ui .ui-button-text-icon-primary .ui-button-icon-primary, .player-ui .ui-button-text-icons .ui-button-icon-primary, .player-ui .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
+.player-ui .ui-button-text-icon-secondary .ui-button-icon-secondary, .player-ui .ui-button-text-icons .ui-button-icon-secondary, .player-ui .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
+.player-ui .ui-button-text-icons .ui-button-icon-secondary, .player-ui .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
+
+/*button sets*/
+.player-ui .ui-buttonset { margin-right: 7px; }
+.player-ui .ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }
+
+/* workarounds */
+button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
+/*
+ * jQuery UI Dialog 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Dialog#theming
+ */
+.player-ui .ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; }
+.player-ui .ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative;  }
+.player-ui .ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; } 
+.player-ui .ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
+.player-ui .ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
+.player-ui .ui-dialog .ui-dialog-titlebar-close:hover, .player-ui .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
+.player-ui .ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
+.player-ui .ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
+.player-ui .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
+.player-ui .ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
+.player-ui .ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
+.player-ui .ui-draggable .ui-dialog-titlebar { cursor: move; }
+/*
+ * jQuery UI Slider 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Slider#theming
+ */
+.player-ui .ui-slider { position: relative; text-align: left; }
+.player-ui .ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
+.player-ui .ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
+
+.player-ui .ui-slider-horizontal { height: .8em; }
+.player-ui .ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
+.player-ui .ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
+.player-ui .ui-slider-horizontal .ui-slider-range-min { left: 0; }
+.player-ui .ui-slider-horizontal .ui-slider-range-max { right: 0; }
+
+.player-ui .ui-slider-vertical { width: .8em; height: 100px; }
+.player-ui .ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
+.player-ui .ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
+.player-ui .ui-slider-vertical .ui-slider-range-min { bottom: 0; }
+.player-ui .ui-slider-vertical .ui-slider-range-max { top: 0; }/*
+ * jQuery UI Tabs 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Tabs#theming
+ */
+.player-ui .ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
+.player-ui .ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
+.player-ui .ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
+.player-ui .ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }
+.player-ui .ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; }
+.player-ui .ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .player-ui .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .player-ui .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
+.player-ui .ui-tabs .ui-tabs-nav li a, .player-ui .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
+.player-ui .ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }
+.player-ui .ui-tabs .ui-tabs-hide { display: none !important; }
+/*
+ * jQuery UI Datepicker 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Datepicker#theming
+ */
+.player-ui .ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }
+.player-ui .ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
+.player-ui .ui-datepicker .ui-datepicker-prev, .player-ui .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
+.player-ui .ui-datepicker .ui-datepicker-prev-hover, .player-ui .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
+.player-ui .ui-datepicker .ui-datepicker-prev { left:2px; }
+.player-ui .ui-datepicker .ui-datepicker-next { right:2px; }
+.player-ui .ui-datepicker .ui-datepicker-prev-hover { left:1px; }
+.player-ui .ui-datepicker .ui-datepicker-next-hover { right:1px; }
+.player-ui .ui-datepicker .ui-datepicker-prev span, .player-ui .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px;  }
+.player-ui .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
+.player-ui .ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
+.player-ui .ui-datepicker select.ui-datepicker-month-year {width: 100%;}
+.player-ui .ui-datepicker select.ui-datepicker-month, 
+.player-ui .ui-datepicker select.ui-datepicker-year { width: 49%;}
+.player-ui .ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
+.player-ui .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0;  }
+.player-ui .ui-datepicker td { border: 0; padding: 1px; }
+.player-ui .ui-datepicker td span, .player-ui .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
+.player-ui .ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
+.player-ui .ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
+.player-ui .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
+
+/* with multiple calendars */
+.player-ui .ui-datepicker.ui-datepicker-multi { width:auto; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group { float:left; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
+.player-ui .ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
+.player-ui .ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
+.player-ui .ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
+.player-ui .ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
+.player-ui .ui-datepicker-row-break { clear:both; width:100%; font-size:0em; }
+
+/* RTL support */
+.player-ui .ui-datepicker-rtl { direction: rtl; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-group { float:right; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+
+/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
+.player-ui .ui-datepicker-cover {
+    display: none; /*sorry for IE5*/
+    display/**/: block; /*sorry for IE5*/
+    position: absolute; /*must have*/
+    z-index: -1; /*must have*/
+    filter: mask(); /*must have*/
+    top: -4px; /*must have*/
+    left: -4px; /*must have*/
+    width: 200px; /*must have*/
+    height: 200px; /*must have*/
+}/*
+ * jQuery UI Progressbar 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Progressbar#theming
+ */
+.player-ui .ui-progressbar { height:2em; text-align: left; overflow: hidden; }
+.player-ui .ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/jquery-ui/start/images/ui-bg_flat_55_999999_40x100.png b/public/admin/js/osmplayer/jquery-ui/start/images/ui-bg_flat_55_999999_40x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..6b6de7d5af391fdae847bff6a3c0aea46596dc01
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/start/images/ui-bg_flat_55_999999_40x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/start/images/ui-bg_flat_75_aaaaaa_40x100.png b/public/admin/js/osmplayer/jquery-ui/start/images/ui-bg_flat_75_aaaaaa_40x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..5b5dab2ab7b1c50dea9cfe73dc5a269a92d2d4b4
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/start/images/ui-bg_flat_75_aaaaaa_40x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/start/images/ui-bg_glass_45_0078ae_1x400.png b/public/admin/js/osmplayer/jquery-ui/start/images/ui-bg_glass_45_0078ae_1x400.png
new file mode 100644
index 0000000000000000000000000000000000000000..3dac65068c84bd0ecfff5188f540c182fd169cad
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/start/images/ui-bg_glass_45_0078ae_1x400.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/start/images/ui-bg_glass_55_f8da4e_1x400.png b/public/admin/js/osmplayer/jquery-ui/start/images/ui-bg_glass_55_f8da4e_1x400.png
new file mode 100644
index 0000000000000000000000000000000000000000..b383704a49d8334bf593fe5acacfe39f93776fb6
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/start/images/ui-bg_glass_55_f8da4e_1x400.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/start/images/ui-bg_glass_75_79c9ec_1x400.png b/public/admin/js/osmplayer/jquery-ui/start/images/ui-bg_glass_75_79c9ec_1x400.png
new file mode 100644
index 0000000000000000000000000000000000000000..d384e425e87199e85d1ecbb34631199473357f01
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/start/images/ui-bg_glass_75_79c9ec_1x400.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/start/images/ui-bg_gloss-wave_45_e14f1c_500x100.png b/public/admin/js/osmplayer/jquery-ui/start/images/ui-bg_gloss-wave_45_e14f1c_500x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..b9851ba5d6c20c710571dfd6a67637ce376d456c
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/start/images/ui-bg_gloss-wave_45_e14f1c_500x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/start/images/ui-bg_gloss-wave_50_6eac2c_500x100.png b/public/admin/js/osmplayer/jquery-ui/start/images/ui-bg_gloss-wave_50_6eac2c_500x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..76dac56d2c5b0c1b6735bcd6117f3d10a95a50d7
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/start/images/ui-bg_gloss-wave_50_6eac2c_500x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/start/images/ui-bg_gloss-wave_75_2191c0_500x100.png b/public/admin/js/osmplayer/jquery-ui/start/images/ui-bg_gloss-wave_75_2191c0_500x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..eeacf69c6ce9581ccbb57643baedf296a87739dc
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/start/images/ui-bg_gloss-wave_75_2191c0_500x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/start/images/ui-bg_inset-hard_100_fcfdfd_1x100.png b/public/admin/js/osmplayer/jquery-ui/start/images/ui-bg_inset-hard_100_fcfdfd_1x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..38c38335d0919ceb7b0dd09e88a86be90a966ef3
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/start/images/ui-bg_inset-hard_100_fcfdfd_1x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/start/images/ui-icons_0078ae_256x240.png b/public/admin/js/osmplayer/jquery-ui/start/images/ui-icons_0078ae_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..5b36315f4b4130cd899894ee9f3bf955a34e3b5c
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/start/images/ui-icons_0078ae_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/start/images/ui-icons_056b93_256x240.png b/public/admin/js/osmplayer/jquery-ui/start/images/ui-icons_056b93_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..a3db109f6c9cda17371924992b53836cc68efc13
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/start/images/ui-icons_056b93_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/start/images/ui-icons_d8e7f3_256x240.png b/public/admin/js/osmplayer/jquery-ui/start/images/ui-icons_d8e7f3_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..ad2dc6f9dbeeabbda9ae6917659b6df07817ec35
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/start/images/ui-icons_d8e7f3_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/start/images/ui-icons_e0fdff_256x240.png b/public/admin/js/osmplayer/jquery-ui/start/images/ui-icons_e0fdff_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..8648d5104a3572bb223d96c83365dcaafa000033
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/start/images/ui-icons_e0fdff_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/start/images/ui-icons_f5e175_256x240.png b/public/admin/js/osmplayer/jquery-ui/start/images/ui-icons_f5e175_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..eda3b8a0514d7da24d66891245b17f0d2fca3d1b
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/start/images/ui-icons_f5e175_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/start/images/ui-icons_f7a50d_256x240.png b/public/admin/js/osmplayer/jquery-ui/start/images/ui-icons_f7a50d_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..401cac8370b0b88b255a352c0320f804f647f9c4
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/start/images/ui-icons_f7a50d_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/start/images/ui-icons_fcd113_256x240.png b/public/admin/js/osmplayer/jquery-ui/start/images/ui-icons_fcd113_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..26ab2933c84cb5fc5925b3327388fe32c05310d2
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/start/images/ui-icons_fcd113_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/start/jquery-ui-1.8.18.custom.css b/public/admin/js/osmplayer/jquery-ui/start/jquery-ui-1.8.18.custom.css
new file mode 100644
index 0000000000000000000000000000000000000000..99f9a68d2740250f95a54cc7cfceeb530f000316
--- /dev/null
+++ b/public/admin/js/osmplayer/jquery-ui/start/jquery-ui-1.8.18.custom.css
@@ -0,0 +1,565 @@
+/*
+ * jQuery UI CSS Framework 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ */
+
+/* Layout helpers
+----------------------------------*/
+.player-ui .ui-helper-hidden { display: none; }
+.player-ui .ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
+.player-ui .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
+.player-ui .ui-helper-clearfix:before, .player-ui .ui-helper-clearfix:after { content: ""; display: table; }
+.player-ui .ui-helper-clearfix:after { clear: both; }
+.player-ui .ui-helper-clearfix { zoom: 1; }
+.player-ui .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
+
+
+/* Interaction Cues
+----------------------------------*/
+.player-ui .ui-state-disabled { cursor: default !important; }
+
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.player-ui .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+.player-ui .ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
+
+
+/*
+ * jQuery UI CSS Framework 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ *
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana,Arial,sans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=5px&bgColorHeader=2191c0&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=75&borderColorHeader=4297d7&fcHeader=eaf5f7&iconColorHeader=d8e7f3&bgColorContent=fcfdfd&bgTextureContent=06_inset_hard.png&bgImgOpacityContent=100&borderColorContent=a6c9e2&fcContent=222222&iconColorContent=0078ae&bgColorDefault=0078ae&bgTextureDefault=02_glass.png&bgImgOpacityDefault=45&borderColorDefault=77d5f7&fcDefault=ffffff&iconColorDefault=e0fdff&bgColorHover=79c9ec&bgTextureHover=02_glass.png&bgImgOpacityHover=75&borderColorHover=448dae&fcHover=026890&iconColorHover=056b93&bgColorActive=6eac2c&bgTextureActive=12_gloss_wave.png&bgImgOpacityActive=50&borderColorActive=acdd4a&fcActive=ffffff&iconColorActive=f5e175&bgColorHighlight=f8da4e&bgTextureHighlight=02_glass.png&bgImgOpacityHighlight=55&borderColorHighlight=fcd113&fcHighlight=915608&iconColorHighlight=f7a50d&bgColorError=e14f1c&bgTextureError=12_gloss_wave.png&bgImgOpacityError=45&borderColorError=cd0a0a&fcError=ffffff&iconColorError=fcd113&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=75&opacityOverlay=30&bgColorShadow=999999&bgTextureShadow=01_flat.png&bgImgOpacityShadow=55&opacityShadow=45&thicknessShadow=0px&offsetTopShadow=5px&offsetLeftShadow=5px&cornerRadiusShadow=5px
+ */
+
+
+/* Component containers
+----------------------------------*/
+.player-ui .ui-widget { font-family: Verdana,Arial,sans-serif; font-size: 1.1em; }
+.player-ui .ui-widget .ui-widget { font-size: 1em; }
+.player-ui .ui-widget input, .player-ui .ui-widget select, .player-ui .ui-widget textarea, .player-ui .ui-widget button { font-family: Verdana,Arial,sans-serif; font-size: 1em; }
+.player-ui .ui-widget-content { border: 1px solid #a6c9e2; background: #fcfdfd url(images/ui-bg_inset-hard_100_fcfdfd_1x100.png) 50% bottom repeat-x; color: #222222; }
+.player-ui .ui-widget-content a { color: #222222; }
+.player-ui .ui-widget-header { border: 1px solid #4297d7; background: #2191c0 url(images/ui-bg_gloss-wave_75_2191c0_500x100.png) 50% 50% repeat-x; color: #eaf5f7; font-weight: bold; }
+.player-ui .ui-widget-header a { color: #eaf5f7; }
+
+/* Interaction states
+----------------------------------*/
+.player-ui .ui-state-default, .player-ui .ui-widget-content .ui-state-default, .player-ui .ui-widget-header .ui-state-default { border: 1px solid #77d5f7; background: #0078ae url(images/ui-bg_glass_45_0078ae_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #ffffff; }
+.player-ui .ui-state-default a, .player-ui .ui-state-default a:link, .player-ui .ui-state-default a:visited { color: #ffffff; text-decoration: none; }
+.player-ui .ui-state-hover, .player-ui .ui-widget-content .ui-state-hover, .player-ui .ui-widget-header .ui-state-hover, .player-ui .ui-state-focus, .player-ui .ui-widget-content .ui-state-focus, .player-ui .ui-widget-header .ui-state-focus { border: 1px solid #448dae; background: #79c9ec url(images/ui-bg_glass_75_79c9ec_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #026890; }
+.player-ui .ui-state-hover a, .player-ui .ui-state-hover a:hover { color: #026890; text-decoration: none; }
+.player-ui .ui-state-active, .player-ui .ui-widget-content .ui-state-active, .player-ui .ui-widget-header .ui-state-active { border: 1px solid #acdd4a; background: #6eac2c url(images/ui-bg_gloss-wave_50_6eac2c_500x100.png) 50% 50% repeat-x; font-weight: normal; color: #ffffff; }
+.player-ui .ui-state-active a, .player-ui .ui-state-active a:link, .player-ui .ui-state-active a:visited { color: #ffffff; text-decoration: none; }
+.player-ui .ui-widget :active { outline: none; }
+
+/* Interaction Cues
+----------------------------------*/
+.player-ui .ui-state-highlight, .player-ui .ui-widget-content .ui-state-highlight, .player-ui .ui-widget-header .ui-state-highlight  {border: 1px solid #fcd113; background: #f8da4e url(images/ui-bg_glass_55_f8da4e_1x400.png) 50% 50% repeat-x; color: #915608; }
+.player-ui .ui-state-highlight a, .player-ui .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #915608; }
+.player-ui .ui-state-error, .player-ui .ui-widget-content .ui-state-error, .player-ui .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #e14f1c url(images/ui-bg_gloss-wave_45_e14f1c_500x100.png) 50% top repeat-x; color: #ffffff; }
+.player-ui .ui-state-error a, .player-ui .ui-widget-content .ui-state-error a, .player-ui .ui-widget-header .ui-state-error a { color: #ffffff; }
+.player-ui .ui-state-error-text, .player-ui .ui-widget-content .ui-state-error-text, .player-ui .ui-widget-header .ui-state-error-text { color: #ffffff; }
+.player-ui .ui-priority-primary, .player-ui .ui-widget-content .ui-priority-primary, .player-ui .ui-widget-header .ui-priority-primary { font-weight: bold; }
+.player-ui .ui-priority-secondary, .player-ui .ui-widget-content .ui-priority-secondary,  .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
+.player-ui .ui-state-disabled, .player-ui .ui-widget-content .ui-state-disabled, .player-ui .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.player-ui .ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_0078ae_256x240.png); }
+.player-ui .ui-widget-content .ui-icon {background-image: url(images/ui-icons_0078ae_256x240.png); }
+.player-ui .ui-widget-header .ui-icon {background-image: url(images/ui-icons_d8e7f3_256x240.png); }
+.player-ui .ui-state-default .ui-icon { background-image: url(images/ui-icons_e0fdff_256x240.png); }
+.player-ui .ui-state-hover .ui-icon, .player-ui .ui-state-focus .ui-icon {background-image: url(images/ui-icons_056b93_256x240.png); }
+.player-ui .ui-state-active .ui-icon {background-image: url(images/ui-icons_f5e175_256x240.png); }
+.player-ui .ui-state-highlight .ui-icon {background-image: url(images/ui-icons_f7a50d_256x240.png); }
+.player-ui .ui-state-error .ui-icon, .player-ui .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_fcd113_256x240.png); }
+
+/* positioning */
+.player-ui .ui-icon-carat-1-n { background-position: 0 0; }
+.player-ui .ui-icon-carat-1-ne { background-position: -16px 0; }
+.player-ui .ui-icon-carat-1-e { background-position: -32px 0; }
+.player-ui .ui-icon-carat-1-se { background-position: -48px 0; }
+.player-ui .ui-icon-carat-1-s { background-position: -64px 0; }
+.player-ui .ui-icon-carat-1-sw { background-position: -80px 0; }
+.player-ui .ui-icon-carat-1-w { background-position: -96px 0; }
+.player-ui .ui-icon-carat-1-nw { background-position: -112px 0; }
+.player-ui .ui-icon-carat-2-n-s { background-position: -128px 0; }
+.player-ui .ui-icon-carat-2-e-w { background-position: -144px 0; }
+.player-ui .ui-icon-triangle-1-n { background-position: 0 -16px; }
+.player-ui .ui-icon-triangle-1-ne { background-position: -16px -16px; }
+.player-ui .ui-icon-triangle-1-e { background-position: -32px -16px; }
+.player-ui .ui-icon-triangle-1-se { background-position: -48px -16px; }
+.player-ui .ui-icon-triangle-1-s { background-position: -64px -16px; }
+.player-ui .ui-icon-triangle-1-sw { background-position: -80px -16px; }
+.player-ui .ui-icon-triangle-1-w { background-position: -96px -16px; }
+.player-ui .ui-icon-triangle-1-nw { background-position: -112px -16px; }
+.player-ui .ui-icon-triangle-2-n-s { background-position: -128px -16px; }
+.player-ui .ui-icon-triangle-2-e-w { background-position: -144px -16px; }
+.player-ui .ui-icon-arrow-1-n { background-position: 0 -32px; }
+.player-ui .ui-icon-arrow-1-ne { background-position: -16px -32px; }
+.player-ui .ui-icon-arrow-1-e { background-position: -32px -32px; }
+.player-ui .ui-icon-arrow-1-se { background-position: -48px -32px; }
+.player-ui .ui-icon-arrow-1-s { background-position: -64px -32px; }
+.player-ui .ui-icon-arrow-1-sw { background-position: -80px -32px; }
+.player-ui .ui-icon-arrow-1-w { background-position: -96px -32px; }
+.player-ui .ui-icon-arrow-1-nw { background-position: -112px -32px; }
+.player-ui .ui-icon-arrow-2-n-s { background-position: -128px -32px; }
+.player-ui .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
+.player-ui .ui-icon-arrow-2-e-w { background-position: -160px -32px; }
+.player-ui .ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
+.player-ui .ui-icon-arrowstop-1-n { background-position: -192px -32px; }
+.player-ui .ui-icon-arrowstop-1-e { background-position: -208px -32px; }
+.player-ui .ui-icon-arrowstop-1-s { background-position: -224px -32px; }
+.player-ui .ui-icon-arrowstop-1-w { background-position: -240px -32px; }
+.player-ui .ui-icon-arrowthick-1-n { background-position: 0 -48px; }
+.player-ui .ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
+.player-ui .ui-icon-arrowthick-1-e { background-position: -32px -48px; }
+.player-ui .ui-icon-arrowthick-1-se { background-position: -48px -48px; }
+.player-ui .ui-icon-arrowthick-1-s { background-position: -64px -48px; }
+.player-ui .ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
+.player-ui .ui-icon-arrowthick-1-w { background-position: -96px -48px; }
+.player-ui .ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
+.player-ui .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
+.player-ui .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
+.player-ui .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
+.player-ui .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
+.player-ui .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
+.player-ui .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
+.player-ui .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
+.player-ui .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
+.player-ui .ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
+.player-ui .ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
+.player-ui .ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
+.player-ui .ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
+.player-ui .ui-icon-arrow-4 { background-position: 0 -80px; }
+.player-ui .ui-icon-arrow-4-diag { background-position: -16px -80px; }
+.player-ui .ui-icon-extlink { background-position: -32px -80px; }
+.player-ui .ui-icon-newwin { background-position: -48px -80px; }
+.player-ui .ui-icon-refresh { background-position: -64px -80px; }
+.player-ui .ui-icon-shuffle { background-position: -80px -80px; }
+.player-ui .ui-icon-transfer-e-w { background-position: -96px -80px; }
+.player-ui .ui-icon-transferthick-e-w { background-position: -112px -80px; }
+.player-ui .ui-icon-folder-collapsed { background-position: 0 -96px; }
+.player-ui .ui-icon-folder-open { background-position: -16px -96px; }
+.player-ui .ui-icon-document { background-position: -32px -96px; }
+.player-ui .ui-icon-document-b { background-position: -48px -96px; }
+.player-ui .ui-icon-note { background-position: -64px -96px; }
+.player-ui .ui-icon-mail-closed { background-position: -80px -96px; }
+.player-ui .ui-icon-mail-open { background-position: -96px -96px; }
+.player-ui .ui-icon-suitcase { background-position: -112px -96px; }
+.player-ui .ui-icon-comment { background-position: -128px -96px; }
+.player-ui .ui-icon-person { background-position: -144px -96px; }
+.player-ui .ui-icon-print { background-position: -160px -96px; }
+.player-ui .ui-icon-trash { background-position: -176px -96px; }
+.player-ui .ui-icon-locked { background-position: -192px -96px; }
+.player-ui .ui-icon-unlocked { background-position: -208px -96px; }
+.player-ui .ui-icon-bookmark { background-position: -224px -96px; }
+.player-ui .ui-icon-tag { background-position: -240px -96px; }
+.player-ui .ui-icon-home { background-position: 0 -112px; }
+.player-ui .ui-icon-flag { background-position: -16px -112px; }
+.player-ui .ui-icon-calendar { background-position: -32px -112px; }
+.player-ui .ui-icon-cart { background-position: -48px -112px; }
+.player-ui .ui-icon-pencil { background-position: -64px -112px; }
+.player-ui .ui-icon-clock { background-position: -80px -112px; }
+.player-ui .ui-icon-disk { background-position: -96px -112px; }
+.player-ui .ui-icon-calculator { background-position: -112px -112px; }
+.player-ui .ui-icon-zoomin { background-position: -128px -112px; }
+.player-ui .ui-icon-zoomout { background-position: -144px -112px; }
+.player-ui .ui-icon-search { background-position: -160px -112px; }
+.player-ui .ui-icon-wrench { background-position: -176px -112px; }
+.player-ui .ui-icon-gear { background-position: -192px -112px; }
+.player-ui .ui-icon-heart { background-position: -208px -112px; }
+.player-ui .ui-icon-star { background-position: -224px -112px; }
+.player-ui .ui-icon-link { background-position: -240px -112px; }
+.player-ui .ui-icon-cancel { background-position: 0 -128px; }
+.player-ui .ui-icon-plus { background-position: -16px -128px; }
+.player-ui .ui-icon-plusthick { background-position: -32px -128px; }
+.player-ui .ui-icon-minus { background-position: -48px -128px; }
+.player-ui .ui-icon-minusthick { background-position: -64px -128px; }
+.player-ui .ui-icon-close { background-position: -80px -128px; }
+.player-ui .ui-icon-closethick { background-position: -96px -128px; }
+.player-ui .ui-icon-key { background-position: -112px -128px; }
+.player-ui .ui-icon-lightbulb { background-position: -128px -128px; }
+.player-ui .ui-icon-scissors { background-position: -144px -128px; }
+.player-ui .ui-icon-clipboard { background-position: -160px -128px; }
+.player-ui .ui-icon-copy { background-position: -176px -128px; }
+.player-ui .ui-icon-contact { background-position: -192px -128px; }
+.player-ui .ui-icon-image { background-position: -208px -128px; }
+.player-ui .ui-icon-video { background-position: -224px -128px; }
+.player-ui .ui-icon-script { background-position: -240px -128px; }
+.player-ui .ui-icon-alert { background-position: 0 -144px; }
+.player-ui .ui-icon-info { background-position: -16px -144px; }
+.player-ui .ui-icon-notice { background-position: -32px -144px; }
+.player-ui .ui-icon-help { background-position: -48px -144px; }
+.player-ui .ui-icon-check { background-position: -64px -144px; }
+.player-ui .ui-icon-bullet { background-position: -80px -144px; }
+.player-ui .ui-icon-radio-off { background-position: -96px -144px; }
+.player-ui .ui-icon-radio-on { background-position: -112px -144px; }
+.player-ui .ui-icon-pin-w { background-position: -128px -144px; }
+.player-ui .ui-icon-pin-s { background-position: -144px -144px; }
+.player-ui .ui-icon-play { background-position: 0 -160px; }
+.player-ui .ui-icon-pause { background-position: -16px -160px; }
+.player-ui .ui-icon-seek-next { background-position: -32px -160px; }
+.player-ui .ui-icon-seek-prev { background-position: -48px -160px; }
+.player-ui .ui-icon-seek-end { background-position: -64px -160px; }
+.player-ui .ui-icon-seek-start { background-position: -80px -160px; }
+/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
+.player-ui .ui-icon-seek-first { background-position: -80px -160px; }
+.player-ui .ui-icon-stop { background-position: -96px -160px; }
+.player-ui .ui-icon-eject { background-position: -112px -160px; }
+.player-ui .ui-icon-volume-off { background-position: -128px -160px; }
+.player-ui .ui-icon-volume-on { background-position: -144px -160px; }
+.player-ui .ui-icon-power { background-position: 0 -176px; }
+.player-ui .ui-icon-signal-diag { background-position: -16px -176px; }
+.player-ui .ui-icon-signal { background-position: -32px -176px; }
+.player-ui .ui-icon-battery-0 { background-position: -48px -176px; }
+.player-ui .ui-icon-battery-1 { background-position: -64px -176px; }
+.player-ui .ui-icon-battery-2 { background-position: -80px -176px; }
+.player-ui .ui-icon-battery-3 { background-position: -96px -176px; }
+.player-ui .ui-icon-circle-plus { background-position: 0 -192px; }
+.player-ui .ui-icon-circle-minus { background-position: -16px -192px; }
+.player-ui .ui-icon-circle-close { background-position: -32px -192px; }
+.player-ui .ui-icon-circle-triangle-e { background-position: -48px -192px; }
+.player-ui .ui-icon-circle-triangle-s { background-position: -64px -192px; }
+.player-ui .ui-icon-circle-triangle-w { background-position: -80px -192px; }
+.player-ui .ui-icon-circle-triangle-n { background-position: -96px -192px; }
+.player-ui .ui-icon-circle-arrow-e { background-position: -112px -192px; }
+.player-ui .ui-icon-circle-arrow-s { background-position: -128px -192px; }
+.player-ui .ui-icon-circle-arrow-w { background-position: -144px -192px; }
+.player-ui .ui-icon-circle-arrow-n { background-position: -160px -192px; }
+.player-ui .ui-icon-circle-zoomin { background-position: -176px -192px; }
+.player-ui .ui-icon-circle-zoomout { background-position: -192px -192px; }
+.player-ui .ui-icon-circle-check { background-position: -208px -192px; }
+.player-ui .ui-icon-circlesmall-plus { background-position: 0 -208px; }
+.player-ui .ui-icon-circlesmall-minus { background-position: -16px -208px; }
+.player-ui .ui-icon-circlesmall-close { background-position: -32px -208px; }
+.player-ui .ui-icon-squaresmall-plus { background-position: -48px -208px; }
+.player-ui .ui-icon-squaresmall-minus { background-position: -64px -208px; }
+.player-ui .ui-icon-squaresmall-close { background-position: -80px -208px; }
+.player-ui .ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
+.player-ui .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
+.player-ui .ui-icon-grip-solid-vertical { background-position: -32px -224px; }
+.player-ui .ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
+.player-ui .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
+.player-ui .ui-icon-grip-diagonal-se { background-position: -80px -224px; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Corner radius */
+.player-ui .ui-corner-all, .player-ui .ui-corner-top, .player-ui .ui-corner-left, .player-ui .ui-corner-tl { -moz-border-radius-topleft: 5px; -webkit-border-top-left-radius: 5px; -khtml-border-top-left-radius: 5px; border-top-left-radius: 5px; }
+.player-ui .ui-corner-all, .player-ui .ui-corner-top, .player-ui .ui-corner-right, .player-ui .ui-corner-tr { -moz-border-radius-topright: 5px; -webkit-border-top-right-radius: 5px; -khtml-border-top-right-radius: 5px; border-top-right-radius: 5px; }
+.player-ui .ui-corner-all, .player-ui .ui-corner-bottom, .player-ui .ui-corner-left, .player-ui .ui-corner-bl { -moz-border-radius-bottomleft: 5px; -webkit-border-bottom-left-radius: 5px; -khtml-border-bottom-left-radius: 5px; border-bottom-left-radius: 5px; }
+.player-ui .ui-corner-all, .player-ui .ui-corner-bottom, .player-ui .ui-corner-right, .player-ui .ui-corner-br { -moz-border-radius-bottomright: 5px; -webkit-border-bottom-right-radius: 5px; -khtml-border-bottom-right-radius: 5px; border-bottom-right-radius: 5px; }
+
+/* Overlays */
+.player-ui .ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_75_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); }
+.player-ui .ui-widget-shadow { margin: 5px 0 0 5px; padding: 0px; background: #999999 url(images/ui-bg_flat_55_999999_40x100.png) 50% 50% repeat-x; opacity: .45;filter:Alpha(Opacity=45); -moz-border-radius: 5px; -khtml-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; }/*
+ * jQuery UI Resizable 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Resizable#theming
+ */
+.player-ui .ui-resizable { position: relative;}
+.player-ui .ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block; }
+.player-ui .ui-resizable-disabled .ui-resizable-handle, .player-ui .ui-resizable-autohide .ui-resizable-handle { display: none; }
+.player-ui .ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
+.player-ui .ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
+.player-ui .ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
+.player-ui .ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
+.player-ui .ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
+.player-ui .ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
+.player-ui .ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
+.player-ui .ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/*
+ * jQuery UI Selectable 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Selectable#theming
+ */
+.player-ui .ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }
+/*
+ * jQuery UI Accordion 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Accordion#theming
+ */
+/* IE/Win - Fix animation bug - #4615 */
+.player-ui .ui-accordion { width: 100%; }
+.player-ui .ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
+.player-ui .ui-accordion .ui-accordion-li-fix { display: inline; }
+.player-ui .ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
+.player-ui .ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; }
+.player-ui .ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; }
+.player-ui .ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
+.player-ui .ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; }
+.player-ui .ui-accordion .ui-accordion-content-active { display: block; }
+/*
+ * jQuery UI Autocomplete 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Autocomplete#theming
+ */
+.player-ui .ui-autocomplete { position: absolute; cursor: default; }	
+
+/* workarounds */
+* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
+
+/*
+ * jQuery UI Menu 1.8.18
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Menu#theming
+ */
+.player-ui .ui-menu {
+	list-style:none;
+	padding: 2px;
+	margin: 0;
+	display:block;
+	float: left;
+}
+.player-ui .ui-menu .ui-menu {
+	margin-top: -3px;
+}
+.player-ui .ui-menu .ui-menu-item {
+	margin:0;
+	padding: 0;
+	zoom: 1;
+	float: left;
+	clear: left;
+	width: 100%;
+}
+.player-ui .ui-menu .ui-menu-item a {
+	text-decoration:none;
+	display:block;
+	padding:.2em .4em;
+	line-height:1.5;
+	zoom:1;
+}
+.player-ui .ui-menu .ui-menu-item a.ui-state-hover,
+.player-ui .ui-menu .ui-menu-item a.ui-state-active {
+	font-weight: normal;
+	margin: -1px;
+}
+/*
+ * jQuery UI Button 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Button#theming
+ */
+.player-ui .ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: hidden; *overflow: visible; } /* the overflow property removes extra width in IE */
+.player-ui .ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
+button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
+.player-ui .ui-button-icons-only { width: 3.4em; } 
+button.ui-button-icons-only { width: 3.7em; } 
+
+/*button text element */
+.player-ui .ui-button .ui-button-text { display: block; line-height: 1.4;  }
+.player-ui .ui-button-text-only .ui-button-text { padding: .4em 1em; }
+.player-ui .ui-button-icon-only .ui-button-text, .player-ui .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
+.player-ui .ui-button-text-icon-primary .ui-button-text, .player-ui .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
+.player-ui .ui-button-text-icon-secondary .ui-button-text, .player-ui .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }
+.player-ui .ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }
+/* no icon support for input elements, provide padding by default */
+input.ui-button { padding: .4em 1em; }
+
+/*button icon element(s) */
+.player-ui .ui-button-icon-only .ui-icon, .player-ui .ui-button-text-icon-primary .ui-icon, .player-ui .ui-button-text-icon-secondary .ui-icon, .player-ui .ui-button-text-icons .ui-icon, .player-ui .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
+.player-ui .ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
+.player-ui .ui-button-text-icon-primary .ui-button-icon-primary, .player-ui .ui-button-text-icons .ui-button-icon-primary, .player-ui .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
+.player-ui .ui-button-text-icon-secondary .ui-button-icon-secondary, .player-ui .ui-button-text-icons .ui-button-icon-secondary, .player-ui .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
+.player-ui .ui-button-text-icons .ui-button-icon-secondary, .player-ui .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
+
+/*button sets*/
+.player-ui .ui-buttonset { margin-right: 7px; }
+.player-ui .ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }
+
+/* workarounds */
+button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
+/*
+ * jQuery UI Dialog 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Dialog#theming
+ */
+.player-ui .ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; }
+.player-ui .ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative;  }
+.player-ui .ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; } 
+.player-ui .ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
+.player-ui .ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
+.player-ui .ui-dialog .ui-dialog-titlebar-close:hover, .player-ui .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
+.player-ui .ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
+.player-ui .ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
+.player-ui .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
+.player-ui .ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
+.player-ui .ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
+.player-ui .ui-draggable .ui-dialog-titlebar { cursor: move; }
+/*
+ * jQuery UI Slider 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Slider#theming
+ */
+.player-ui .ui-slider { position: relative; text-align: left; }
+.player-ui .ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
+.player-ui .ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
+
+.player-ui .ui-slider-horizontal { height: .8em; }
+.player-ui .ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
+.player-ui .ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
+.player-ui .ui-slider-horizontal .ui-slider-range-min { left: 0; }
+.player-ui .ui-slider-horizontal .ui-slider-range-max { right: 0; }
+
+.player-ui .ui-slider-vertical { width: .8em; height: 100px; }
+.player-ui .ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
+.player-ui .ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
+.player-ui .ui-slider-vertical .ui-slider-range-min { bottom: 0; }
+.player-ui .ui-slider-vertical .ui-slider-range-max { top: 0; }/*
+ * jQuery UI Tabs 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Tabs#theming
+ */
+.player-ui .ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
+.player-ui .ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
+.player-ui .ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
+.player-ui .ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }
+.player-ui .ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; }
+.player-ui .ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .player-ui .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .player-ui .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
+.player-ui .ui-tabs .ui-tabs-nav li a, .player-ui .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
+.player-ui .ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }
+.player-ui .ui-tabs .ui-tabs-hide { display: none !important; }
+/*
+ * jQuery UI Datepicker 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Datepicker#theming
+ */
+.player-ui .ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }
+.player-ui .ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
+.player-ui .ui-datepicker .ui-datepicker-prev, .player-ui .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
+.player-ui .ui-datepicker .ui-datepicker-prev-hover, .player-ui .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
+.player-ui .ui-datepicker .ui-datepicker-prev { left:2px; }
+.player-ui .ui-datepicker .ui-datepicker-next { right:2px; }
+.player-ui .ui-datepicker .ui-datepicker-prev-hover { left:1px; }
+.player-ui .ui-datepicker .ui-datepicker-next-hover { right:1px; }
+.player-ui .ui-datepicker .ui-datepicker-prev span, .player-ui .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px;  }
+.player-ui .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
+.player-ui .ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
+.player-ui .ui-datepicker select.ui-datepicker-month-year {width: 100%;}
+.player-ui .ui-datepicker select.ui-datepicker-month, 
+.player-ui .ui-datepicker select.ui-datepicker-year { width: 49%;}
+.player-ui .ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
+.player-ui .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0;  }
+.player-ui .ui-datepicker td { border: 0; padding: 1px; }
+.player-ui .ui-datepicker td span, .player-ui .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
+.player-ui .ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
+.player-ui .ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
+.player-ui .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
+
+/* with multiple calendars */
+.player-ui .ui-datepicker.ui-datepicker-multi { width:auto; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group { float:left; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
+.player-ui .ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
+.player-ui .ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
+.player-ui .ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
+.player-ui .ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
+.player-ui .ui-datepicker-row-break { clear:both; width:100%; font-size:0em; }
+
+/* RTL support */
+.player-ui .ui-datepicker-rtl { direction: rtl; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-group { float:right; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+
+/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
+.player-ui .ui-datepicker-cover {
+    display: none; /*sorry for IE5*/
+    display/**/: block; /*sorry for IE5*/
+    position: absolute; /*must have*/
+    z-index: -1; /*must have*/
+    filter: mask(); /*must have*/
+    top: -4px; /*must have*/
+    left: -4px; /*must have*/
+    width: 200px; /*must have*/
+    height: 200px; /*must have*/
+}/*
+ * jQuery UI Progressbar 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Progressbar#theming
+ */
+.player-ui .ui-progressbar { height:2em; text-align: left; overflow: hidden; }
+.player-ui .ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/jquery-ui/sunny/images/ui-bg_diagonals-medium_20_d34d17_40x40.png b/public/admin/js/osmplayer/jquery-ui/sunny/images/ui-bg_diagonals-medium_20_d34d17_40x40.png
new file mode 100644
index 0000000000000000000000000000000000000000..8083fb400bf9702e8c5720595ad56bc9bc8a0642
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/sunny/images/ui-bg_diagonals-medium_20_d34d17_40x40.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/sunny/images/ui-bg_flat_30_cccccc_40x100.png b/public/admin/js/osmplayer/jquery-ui/sunny/images/ui-bg_flat_30_cccccc_40x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..5473afffbc2662173f5af5c27d966c072de8039b
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/sunny/images/ui-bg_flat_30_cccccc_40x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/sunny/images/ui-bg_flat_50_5c5c5c_40x100.png b/public/admin/js/osmplayer/jquery-ui/sunny/images/ui-bg_flat_50_5c5c5c_40x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..5950a8db9e64e8d00bb28726cb869947abfdc7fc
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/sunny/images/ui-bg_flat_50_5c5c5c_40x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/sunny/images/ui-bg_gloss-wave_45_817865_500x100.png b/public/admin/js/osmplayer/jquery-ui/sunny/images/ui-bg_gloss-wave_45_817865_500x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..7662917a5dc5b2e54b324b49119bd4cccb72578b
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/sunny/images/ui-bg_gloss-wave_45_817865_500x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/sunny/images/ui-bg_gloss-wave_60_fece2f_500x100.png b/public/admin/js/osmplayer/jquery-ui/sunny/images/ui-bg_gloss-wave_60_fece2f_500x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..01ccab3977818f447d019f64e4c01b121a8d6a9e
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/sunny/images/ui-bg_gloss-wave_60_fece2f_500x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/sunny/images/ui-bg_gloss-wave_70_ffdd57_500x100.png b/public/admin/js/osmplayer/jquery-ui/sunny/images/ui-bg_gloss-wave_70_ffdd57_500x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..f8bd10482a61c46fea7a785d0f375a6aa79e147e
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/sunny/images/ui-bg_gloss-wave_70_ffdd57_500x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/sunny/images/ui-bg_gloss-wave_90_fff9e5_500x100.png b/public/admin/js/osmplayer/jquery-ui/sunny/images/ui-bg_gloss-wave_90_fff9e5_500x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..6e3ad2df76e3669cb737cdc3b36bca9c41fb353a
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/sunny/images/ui-bg_gloss-wave_90_fff9e5_500x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/sunny/images/ui-bg_highlight-soft_100_feeebd_1x100.png b/public/admin/js/osmplayer/jquery-ui/sunny/images/ui-bg_highlight-soft_100_feeebd_1x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..8c5c35cea2b397d97b332900a02139ed4ea749fa
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/sunny/images/ui-bg_highlight-soft_100_feeebd_1x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/sunny/images/ui-bg_inset-soft_30_ffffff_1x100.png b/public/admin/js/osmplayer/jquery-ui/sunny/images/ui-bg_inset-soft_30_ffffff_1x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..820b0175460be4874d69ab6191a2134dd2012353
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/sunny/images/ui-bg_inset-soft_30_ffffff_1x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/sunny/images/ui-icons_3d3d3d_256x240.png b/public/admin/js/osmplayer/jquery-ui/sunny/images/ui-icons_3d3d3d_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..c216ba1d591ed0381cf681ad70bd0f0c59574bb3
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/sunny/images/ui-icons_3d3d3d_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/sunny/images/ui-icons_bd7b00_256x240.png b/public/admin/js/osmplayer/jquery-ui/sunny/images/ui-icons_bd7b00_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..e81995d57fea6327c3280d21e6df369b1f8239a2
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/sunny/images/ui-icons_bd7b00_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/sunny/images/ui-icons_d19405_256x240.png b/public/admin/js/osmplayer/jquery-ui/sunny/images/ui-icons_d19405_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..d168087627fec4186905ec350231e6edd0fc21f7
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/sunny/images/ui-icons_d19405_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/sunny/images/ui-icons_eb990f_256x240.png b/public/admin/js/osmplayer/jquery-ui/sunny/images/ui-icons_eb990f_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..fd0b00a6df15807a2d80ea417b654beb43a5c42e
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/sunny/images/ui-icons_eb990f_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/sunny/images/ui-icons_ed9f26_256x240.png b/public/admin/js/osmplayer/jquery-ui/sunny/images/ui-icons_ed9f26_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..668e030c5e02e9b9851fb92c76610ecccdb6164b
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/sunny/images/ui-icons_ed9f26_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/sunny/images/ui-icons_fadc7a_256x240.png b/public/admin/js/osmplayer/jquery-ui/sunny/images/ui-icons_fadc7a_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..711a99d5fb4eaa3369028a81f32da49ea201f798
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/sunny/images/ui-icons_fadc7a_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/sunny/images/ui-icons_ffe180_256x240.png b/public/admin/js/osmplayer/jquery-ui/sunny/images/ui-icons_ffe180_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..048e8e14f42abb800cb09efd6328fdd538c6927c
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/sunny/images/ui-icons_ffe180_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/sunny/jquery-ui-1.8.18.custom.css b/public/admin/js/osmplayer/jquery-ui/sunny/jquery-ui-1.8.18.custom.css
new file mode 100644
index 0000000000000000000000000000000000000000..c9a61c30eade1943e13365b707b0dd36fdabd6ef
--- /dev/null
+++ b/public/admin/js/osmplayer/jquery-ui/sunny/jquery-ui-1.8.18.custom.css
@@ -0,0 +1,565 @@
+/*
+ * jQuery UI CSS Framework 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ */
+
+/* Layout helpers
+----------------------------------*/
+.player-ui .ui-helper-hidden { display: none; }
+.player-ui .ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
+.player-ui .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
+.player-ui .ui-helper-clearfix:before, .player-ui .ui-helper-clearfix:after { content: ""; display: table; }
+.player-ui .ui-helper-clearfix:after { clear: both; }
+.player-ui .ui-helper-clearfix { zoom: 1; }
+.player-ui .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
+
+
+/* Interaction Cues
+----------------------------------*/
+.player-ui .ui-state-disabled { cursor: default !important; }
+
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.player-ui .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+.player-ui .ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
+
+
+/*
+ * jQuery UI CSS Framework 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ *
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Segoe%20UI,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=8px&bgColorHeader=817865&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=45&borderColorHeader=494437&fcHeader=ffffff&iconColorHeader=fadc7a&bgColorContent=feeebd&bgTextureContent=03_highlight_soft.png&bgImgOpacityContent=100&borderColorContent=8e846b&fcContent=383838&iconColorContent=d19405&bgColorDefault=fece2f&bgTextureDefault=12_gloss_wave.png&bgImgOpacityDefault=60&borderColorDefault=d19405&fcDefault=4c3000&iconColorDefault=3d3d3d&bgColorHover=ffdd57&bgTextureHover=12_gloss_wave.png&bgImgOpacityHover=70&borderColorHover=a45b13&fcHover=381f00&iconColorHover=bd7b00&bgColorActive=ffffff&bgTextureActive=05_inset_soft.png&bgImgOpacityActive=30&borderColorActive=655e4e&fcActive=0074c7&iconColorActive=eb990f&bgColorHighlight=fff9e5&bgTextureHighlight=12_gloss_wave.png&bgImgOpacityHighlight=90&borderColorHighlight=eeb420&fcHighlight=1f1f1f&iconColorHighlight=ed9f26&bgColorError=d34d17&bgTextureError=07_diagonals_medium.png&bgImgOpacityError=20&borderColorError=ffb73d&fcError=ffffff&iconColorError=ffe180&bgColorOverlay=5c5c5c&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=50&opacityOverlay=80&bgColorShadow=cccccc&bgTextureShadow=01_flat.png&bgImgOpacityShadow=30&opacityShadow=60&thicknessShadow=7px&offsetTopShadow=-7px&offsetLeftShadow=-7px&cornerRadiusShadow=8px
+ */
+
+
+/* Component containers
+----------------------------------*/
+.player-ui .ui-widget { font-family: Segoe UI, Arial, sans-serif; font-size: 1.1em; }
+.player-ui .ui-widget .ui-widget { font-size: 1em; }
+.player-ui .ui-widget input, .player-ui .ui-widget select, .player-ui .ui-widget textarea, .player-ui .ui-widget button { font-family: Segoe UI, Arial, sans-serif; font-size: 1em; }
+.player-ui .ui-widget-content { border: 1px solid #8e846b; background: #feeebd url(images/ui-bg_highlight-soft_100_feeebd_1x100.png) 50% top repeat-x; color: #383838; }
+.player-ui .ui-widget-content a { color: #383838; }
+.player-ui .ui-widget-header { border: 1px solid #494437; background: #817865 url(images/ui-bg_gloss-wave_45_817865_500x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; }
+.player-ui .ui-widget-header a { color: #ffffff; }
+
+/* Interaction states
+----------------------------------*/
+.player-ui .ui-state-default, .player-ui .ui-widget-content .ui-state-default, .player-ui .ui-widget-header .ui-state-default { border: 1px solid #d19405; background: #fece2f url(images/ui-bg_gloss-wave_60_fece2f_500x100.png) 50% 50% repeat-x; font-weight: bold; color: #4c3000; }
+.player-ui .ui-state-default a, .player-ui .ui-state-default a:link, .player-ui .ui-state-default a:visited { color: #4c3000; text-decoration: none; }
+.player-ui .ui-state-hover, .player-ui .ui-widget-content .ui-state-hover, .player-ui .ui-widget-header .ui-state-hover, .player-ui .ui-state-focus, .player-ui .ui-widget-content .ui-state-focus, .player-ui .ui-widget-header .ui-state-focus { border: 1px solid #a45b13; background: #ffdd57 url(images/ui-bg_gloss-wave_70_ffdd57_500x100.png) 50% 50% repeat-x; font-weight: bold; color: #381f00; }
+.player-ui .ui-state-hover a, .player-ui .ui-state-hover a:hover { color: #381f00; text-decoration: none; }
+.player-ui .ui-state-active, .player-ui .ui-widget-content .ui-state-active, .player-ui .ui-widget-header .ui-state-active { border: 1px solid #655e4e; background: #ffffff url(images/ui-bg_inset-soft_30_ffffff_1x100.png) 50% 50% repeat-x; font-weight: bold; color: #0074c7; }
+.player-ui .ui-state-active a, .player-ui .ui-state-active a:link, .player-ui .ui-state-active a:visited { color: #0074c7; text-decoration: none; }
+.player-ui .ui-widget :active { outline: none; }
+
+/* Interaction Cues
+----------------------------------*/
+.player-ui .ui-state-highlight, .player-ui .ui-widget-content .ui-state-highlight, .player-ui .ui-widget-header .ui-state-highlight  {border: 1px solid #eeb420; background: #fff9e5 url(images/ui-bg_gloss-wave_90_fff9e5_500x100.png) 50% top repeat-x; color: #1f1f1f; }
+.player-ui .ui-state-highlight a, .player-ui .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #1f1f1f; }
+.player-ui .ui-state-error, .player-ui .ui-widget-content .ui-state-error, .player-ui .ui-widget-header .ui-state-error {border: 1px solid #ffb73d; background: #d34d17 url(images/ui-bg_diagonals-medium_20_d34d17_40x40.png) 50% 50% repeat; color: #ffffff; }
+.player-ui .ui-state-error a, .player-ui .ui-widget-content .ui-state-error a, .player-ui .ui-widget-header .ui-state-error a { color: #ffffff; }
+.player-ui .ui-state-error-text, .player-ui .ui-widget-content .ui-state-error-text, .player-ui .ui-widget-header .ui-state-error-text { color: #ffffff; }
+.player-ui .ui-priority-primary, .player-ui .ui-widget-content .ui-priority-primary, .player-ui .ui-widget-header .ui-priority-primary { font-weight: bold; }
+.player-ui .ui-priority-secondary, .player-ui .ui-widget-content .ui-priority-secondary,  .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
+.player-ui .ui-state-disabled, .player-ui .ui-widget-content .ui-state-disabled, .player-ui .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.player-ui .ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_d19405_256x240.png); }
+.player-ui .ui-widget-content .ui-icon {background-image: url(images/ui-icons_d19405_256x240.png); }
+.player-ui .ui-widget-header .ui-icon {background-image: url(images/ui-icons_fadc7a_256x240.png); }
+.player-ui .ui-state-default .ui-icon { background-image: url(images/ui-icons_3d3d3d_256x240.png); }
+.player-ui .ui-state-hover .ui-icon, .player-ui .ui-state-focus .ui-icon {background-image: url(images/ui-icons_bd7b00_256x240.png); }
+.player-ui .ui-state-active .ui-icon {background-image: url(images/ui-icons_eb990f_256x240.png); }
+.player-ui .ui-state-highlight .ui-icon {background-image: url(images/ui-icons_ed9f26_256x240.png); }
+.player-ui .ui-state-error .ui-icon, .player-ui .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_ffe180_256x240.png); }
+
+/* positioning */
+.player-ui .ui-icon-carat-1-n { background-position: 0 0; }
+.player-ui .ui-icon-carat-1-ne { background-position: -16px 0; }
+.player-ui .ui-icon-carat-1-e { background-position: -32px 0; }
+.player-ui .ui-icon-carat-1-se { background-position: -48px 0; }
+.player-ui .ui-icon-carat-1-s { background-position: -64px 0; }
+.player-ui .ui-icon-carat-1-sw { background-position: -80px 0; }
+.player-ui .ui-icon-carat-1-w { background-position: -96px 0; }
+.player-ui .ui-icon-carat-1-nw { background-position: -112px 0; }
+.player-ui .ui-icon-carat-2-n-s { background-position: -128px 0; }
+.player-ui .ui-icon-carat-2-e-w { background-position: -144px 0; }
+.player-ui .ui-icon-triangle-1-n { background-position: 0 -16px; }
+.player-ui .ui-icon-triangle-1-ne { background-position: -16px -16px; }
+.player-ui .ui-icon-triangle-1-e { background-position: -32px -16px; }
+.player-ui .ui-icon-triangle-1-se { background-position: -48px -16px; }
+.player-ui .ui-icon-triangle-1-s { background-position: -64px -16px; }
+.player-ui .ui-icon-triangle-1-sw { background-position: -80px -16px; }
+.player-ui .ui-icon-triangle-1-w { background-position: -96px -16px; }
+.player-ui .ui-icon-triangle-1-nw { background-position: -112px -16px; }
+.player-ui .ui-icon-triangle-2-n-s { background-position: -128px -16px; }
+.player-ui .ui-icon-triangle-2-e-w { background-position: -144px -16px; }
+.player-ui .ui-icon-arrow-1-n { background-position: 0 -32px; }
+.player-ui .ui-icon-arrow-1-ne { background-position: -16px -32px; }
+.player-ui .ui-icon-arrow-1-e { background-position: -32px -32px; }
+.player-ui .ui-icon-arrow-1-se { background-position: -48px -32px; }
+.player-ui .ui-icon-arrow-1-s { background-position: -64px -32px; }
+.player-ui .ui-icon-arrow-1-sw { background-position: -80px -32px; }
+.player-ui .ui-icon-arrow-1-w { background-position: -96px -32px; }
+.player-ui .ui-icon-arrow-1-nw { background-position: -112px -32px; }
+.player-ui .ui-icon-arrow-2-n-s { background-position: -128px -32px; }
+.player-ui .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
+.player-ui .ui-icon-arrow-2-e-w { background-position: -160px -32px; }
+.player-ui .ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
+.player-ui .ui-icon-arrowstop-1-n { background-position: -192px -32px; }
+.player-ui .ui-icon-arrowstop-1-e { background-position: -208px -32px; }
+.player-ui .ui-icon-arrowstop-1-s { background-position: -224px -32px; }
+.player-ui .ui-icon-arrowstop-1-w { background-position: -240px -32px; }
+.player-ui .ui-icon-arrowthick-1-n { background-position: 0 -48px; }
+.player-ui .ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
+.player-ui .ui-icon-arrowthick-1-e { background-position: -32px -48px; }
+.player-ui .ui-icon-arrowthick-1-se { background-position: -48px -48px; }
+.player-ui .ui-icon-arrowthick-1-s { background-position: -64px -48px; }
+.player-ui .ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
+.player-ui .ui-icon-arrowthick-1-w { background-position: -96px -48px; }
+.player-ui .ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
+.player-ui .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
+.player-ui .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
+.player-ui .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
+.player-ui .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
+.player-ui .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
+.player-ui .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
+.player-ui .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
+.player-ui .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
+.player-ui .ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
+.player-ui .ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
+.player-ui .ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
+.player-ui .ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
+.player-ui .ui-icon-arrow-4 { background-position: 0 -80px; }
+.player-ui .ui-icon-arrow-4-diag { background-position: -16px -80px; }
+.player-ui .ui-icon-extlink { background-position: -32px -80px; }
+.player-ui .ui-icon-newwin { background-position: -48px -80px; }
+.player-ui .ui-icon-refresh { background-position: -64px -80px; }
+.player-ui .ui-icon-shuffle { background-position: -80px -80px; }
+.player-ui .ui-icon-transfer-e-w { background-position: -96px -80px; }
+.player-ui .ui-icon-transferthick-e-w { background-position: -112px -80px; }
+.player-ui .ui-icon-folder-collapsed { background-position: 0 -96px; }
+.player-ui .ui-icon-folder-open { background-position: -16px -96px; }
+.player-ui .ui-icon-document { background-position: -32px -96px; }
+.player-ui .ui-icon-document-b { background-position: -48px -96px; }
+.player-ui .ui-icon-note { background-position: -64px -96px; }
+.player-ui .ui-icon-mail-closed { background-position: -80px -96px; }
+.player-ui .ui-icon-mail-open { background-position: -96px -96px; }
+.player-ui .ui-icon-suitcase { background-position: -112px -96px; }
+.player-ui .ui-icon-comment { background-position: -128px -96px; }
+.player-ui .ui-icon-person { background-position: -144px -96px; }
+.player-ui .ui-icon-print { background-position: -160px -96px; }
+.player-ui .ui-icon-trash { background-position: -176px -96px; }
+.player-ui .ui-icon-locked { background-position: -192px -96px; }
+.player-ui .ui-icon-unlocked { background-position: -208px -96px; }
+.player-ui .ui-icon-bookmark { background-position: -224px -96px; }
+.player-ui .ui-icon-tag { background-position: -240px -96px; }
+.player-ui .ui-icon-home { background-position: 0 -112px; }
+.player-ui .ui-icon-flag { background-position: -16px -112px; }
+.player-ui .ui-icon-calendar { background-position: -32px -112px; }
+.player-ui .ui-icon-cart { background-position: -48px -112px; }
+.player-ui .ui-icon-pencil { background-position: -64px -112px; }
+.player-ui .ui-icon-clock { background-position: -80px -112px; }
+.player-ui .ui-icon-disk { background-position: -96px -112px; }
+.player-ui .ui-icon-calculator { background-position: -112px -112px; }
+.player-ui .ui-icon-zoomin { background-position: -128px -112px; }
+.player-ui .ui-icon-zoomout { background-position: -144px -112px; }
+.player-ui .ui-icon-search { background-position: -160px -112px; }
+.player-ui .ui-icon-wrench { background-position: -176px -112px; }
+.player-ui .ui-icon-gear { background-position: -192px -112px; }
+.player-ui .ui-icon-heart { background-position: -208px -112px; }
+.player-ui .ui-icon-star { background-position: -224px -112px; }
+.player-ui .ui-icon-link { background-position: -240px -112px; }
+.player-ui .ui-icon-cancel { background-position: 0 -128px; }
+.player-ui .ui-icon-plus { background-position: -16px -128px; }
+.player-ui .ui-icon-plusthick { background-position: -32px -128px; }
+.player-ui .ui-icon-minus { background-position: -48px -128px; }
+.player-ui .ui-icon-minusthick { background-position: -64px -128px; }
+.player-ui .ui-icon-close { background-position: -80px -128px; }
+.player-ui .ui-icon-closethick { background-position: -96px -128px; }
+.player-ui .ui-icon-key { background-position: -112px -128px; }
+.player-ui .ui-icon-lightbulb { background-position: -128px -128px; }
+.player-ui .ui-icon-scissors { background-position: -144px -128px; }
+.player-ui .ui-icon-clipboard { background-position: -160px -128px; }
+.player-ui .ui-icon-copy { background-position: -176px -128px; }
+.player-ui .ui-icon-contact { background-position: -192px -128px; }
+.player-ui .ui-icon-image { background-position: -208px -128px; }
+.player-ui .ui-icon-video { background-position: -224px -128px; }
+.player-ui .ui-icon-script { background-position: -240px -128px; }
+.player-ui .ui-icon-alert { background-position: 0 -144px; }
+.player-ui .ui-icon-info { background-position: -16px -144px; }
+.player-ui .ui-icon-notice { background-position: -32px -144px; }
+.player-ui .ui-icon-help { background-position: -48px -144px; }
+.player-ui .ui-icon-check { background-position: -64px -144px; }
+.player-ui .ui-icon-bullet { background-position: -80px -144px; }
+.player-ui .ui-icon-radio-off { background-position: -96px -144px; }
+.player-ui .ui-icon-radio-on { background-position: -112px -144px; }
+.player-ui .ui-icon-pin-w { background-position: -128px -144px; }
+.player-ui .ui-icon-pin-s { background-position: -144px -144px; }
+.player-ui .ui-icon-play { background-position: 0 -160px; }
+.player-ui .ui-icon-pause { background-position: -16px -160px; }
+.player-ui .ui-icon-seek-next { background-position: -32px -160px; }
+.player-ui .ui-icon-seek-prev { background-position: -48px -160px; }
+.player-ui .ui-icon-seek-end { background-position: -64px -160px; }
+.player-ui .ui-icon-seek-start { background-position: -80px -160px; }
+/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
+.player-ui .ui-icon-seek-first { background-position: -80px -160px; }
+.player-ui .ui-icon-stop { background-position: -96px -160px; }
+.player-ui .ui-icon-eject { background-position: -112px -160px; }
+.player-ui .ui-icon-volume-off { background-position: -128px -160px; }
+.player-ui .ui-icon-volume-on { background-position: -144px -160px; }
+.player-ui .ui-icon-power { background-position: 0 -176px; }
+.player-ui .ui-icon-signal-diag { background-position: -16px -176px; }
+.player-ui .ui-icon-signal { background-position: -32px -176px; }
+.player-ui .ui-icon-battery-0 { background-position: -48px -176px; }
+.player-ui .ui-icon-battery-1 { background-position: -64px -176px; }
+.player-ui .ui-icon-battery-2 { background-position: -80px -176px; }
+.player-ui .ui-icon-battery-3 { background-position: -96px -176px; }
+.player-ui .ui-icon-circle-plus { background-position: 0 -192px; }
+.player-ui .ui-icon-circle-minus { background-position: -16px -192px; }
+.player-ui .ui-icon-circle-close { background-position: -32px -192px; }
+.player-ui .ui-icon-circle-triangle-e { background-position: -48px -192px; }
+.player-ui .ui-icon-circle-triangle-s { background-position: -64px -192px; }
+.player-ui .ui-icon-circle-triangle-w { background-position: -80px -192px; }
+.player-ui .ui-icon-circle-triangle-n { background-position: -96px -192px; }
+.player-ui .ui-icon-circle-arrow-e { background-position: -112px -192px; }
+.player-ui .ui-icon-circle-arrow-s { background-position: -128px -192px; }
+.player-ui .ui-icon-circle-arrow-w { background-position: -144px -192px; }
+.player-ui .ui-icon-circle-arrow-n { background-position: -160px -192px; }
+.player-ui .ui-icon-circle-zoomin { background-position: -176px -192px; }
+.player-ui .ui-icon-circle-zoomout { background-position: -192px -192px; }
+.player-ui .ui-icon-circle-check { background-position: -208px -192px; }
+.player-ui .ui-icon-circlesmall-plus { background-position: 0 -208px; }
+.player-ui .ui-icon-circlesmall-minus { background-position: -16px -208px; }
+.player-ui .ui-icon-circlesmall-close { background-position: -32px -208px; }
+.player-ui .ui-icon-squaresmall-plus { background-position: -48px -208px; }
+.player-ui .ui-icon-squaresmall-minus { background-position: -64px -208px; }
+.player-ui .ui-icon-squaresmall-close { background-position: -80px -208px; }
+.player-ui .ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
+.player-ui .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
+.player-ui .ui-icon-grip-solid-vertical { background-position: -32px -224px; }
+.player-ui .ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
+.player-ui .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
+.player-ui .ui-icon-grip-diagonal-se { background-position: -80px -224px; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Corner radius */
+.player-ui .ui-corner-all, .player-ui .ui-corner-top, .player-ui .ui-corner-left, .player-ui .ui-corner-tl { -moz-border-radius-topleft: 8px; -webkit-border-top-left-radius: 8px; -khtml-border-top-left-radius: 8px; border-top-left-radius: 8px; }
+.player-ui .ui-corner-all, .player-ui .ui-corner-top, .player-ui .ui-corner-right, .player-ui .ui-corner-tr { -moz-border-radius-topright: 8px; -webkit-border-top-right-radius: 8px; -khtml-border-top-right-radius: 8px; border-top-right-radius: 8px; }
+.player-ui .ui-corner-all, .player-ui .ui-corner-bottom, .player-ui .ui-corner-left, .player-ui .ui-corner-bl { -moz-border-radius-bottomleft: 8px; -webkit-border-bottom-left-radius: 8px; -khtml-border-bottom-left-radius: 8px; border-bottom-left-radius: 8px; }
+.player-ui .ui-corner-all, .player-ui .ui-corner-bottom, .player-ui .ui-corner-right, .player-ui .ui-corner-br { -moz-border-radius-bottomright: 8px; -webkit-border-bottom-right-radius: 8px; -khtml-border-bottom-right-radius: 8px; border-bottom-right-radius: 8px; }
+
+/* Overlays */
+.player-ui .ui-widget-overlay { background: #5c5c5c url(images/ui-bg_flat_50_5c5c5c_40x100.png) 50% 50% repeat-x; opacity: .80;filter:Alpha(Opacity=80); }
+.player-ui .ui-widget-shadow { margin: -7px 0 0 -7px; padding: 7px; background: #cccccc url(images/ui-bg_flat_30_cccccc_40x100.png) 50% 50% repeat-x; opacity: .60;filter:Alpha(Opacity=60); -moz-border-radius: 8px; -khtml-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/*
+ * jQuery UI Resizable 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Resizable#theming
+ */
+.player-ui .ui-resizable { position: relative;}
+.player-ui .ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block; }
+.player-ui .ui-resizable-disabled .ui-resizable-handle, .player-ui .ui-resizable-autohide .ui-resizable-handle { display: none; }
+.player-ui .ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
+.player-ui .ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
+.player-ui .ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
+.player-ui .ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
+.player-ui .ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
+.player-ui .ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
+.player-ui .ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
+.player-ui .ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/*
+ * jQuery UI Selectable 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Selectable#theming
+ */
+.player-ui .ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }
+/*
+ * jQuery UI Accordion 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Accordion#theming
+ */
+/* IE/Win - Fix animation bug - #4615 */
+.player-ui .ui-accordion { width: 100%; }
+.player-ui .ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
+.player-ui .ui-accordion .ui-accordion-li-fix { display: inline; }
+.player-ui .ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
+.player-ui .ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; }
+.player-ui .ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; }
+.player-ui .ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
+.player-ui .ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; }
+.player-ui .ui-accordion .ui-accordion-content-active { display: block; }
+/*
+ * jQuery UI Autocomplete 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Autocomplete#theming
+ */
+.player-ui .ui-autocomplete { position: absolute; cursor: default; }	
+
+/* workarounds */
+* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
+
+/*
+ * jQuery UI Menu 1.8.18
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Menu#theming
+ */
+.player-ui .ui-menu {
+	list-style:none;
+	padding: 2px;
+	margin: 0;
+	display:block;
+	float: left;
+}
+.player-ui .ui-menu .ui-menu {
+	margin-top: -3px;
+}
+.player-ui .ui-menu .ui-menu-item {
+	margin:0;
+	padding: 0;
+	zoom: 1;
+	float: left;
+	clear: left;
+	width: 100%;
+}
+.player-ui .ui-menu .ui-menu-item a {
+	text-decoration:none;
+	display:block;
+	padding:.2em .4em;
+	line-height:1.5;
+	zoom:1;
+}
+.player-ui .ui-menu .ui-menu-item a.ui-state-hover,
+.player-ui .ui-menu .ui-menu-item a.ui-state-active {
+	font-weight: normal;
+	margin: -1px;
+}
+/*
+ * jQuery UI Button 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Button#theming
+ */
+.player-ui .ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: hidden; *overflow: visible; } /* the overflow property removes extra width in IE */
+.player-ui .ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
+button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
+.player-ui .ui-button-icons-only { width: 3.4em; } 
+button.ui-button-icons-only { width: 3.7em; } 
+
+/*button text element */
+.player-ui .ui-button .ui-button-text { display: block; line-height: 1.4;  }
+.player-ui .ui-button-text-only .ui-button-text { padding: .4em 1em; }
+.player-ui .ui-button-icon-only .ui-button-text, .player-ui .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
+.player-ui .ui-button-text-icon-primary .ui-button-text, .player-ui .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
+.player-ui .ui-button-text-icon-secondary .ui-button-text, .player-ui .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }
+.player-ui .ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }
+/* no icon support for input elements, provide padding by default */
+input.ui-button { padding: .4em 1em; }
+
+/*button icon element(s) */
+.player-ui .ui-button-icon-only .ui-icon, .player-ui .ui-button-text-icon-primary .ui-icon, .player-ui .ui-button-text-icon-secondary .ui-icon, .player-ui .ui-button-text-icons .ui-icon, .player-ui .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
+.player-ui .ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
+.player-ui .ui-button-text-icon-primary .ui-button-icon-primary, .player-ui .ui-button-text-icons .ui-button-icon-primary, .player-ui .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
+.player-ui .ui-button-text-icon-secondary .ui-button-icon-secondary, .player-ui .ui-button-text-icons .ui-button-icon-secondary, .player-ui .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
+.player-ui .ui-button-text-icons .ui-button-icon-secondary, .player-ui .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
+
+/*button sets*/
+.player-ui .ui-buttonset { margin-right: 7px; }
+.player-ui .ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }
+
+/* workarounds */
+button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
+/*
+ * jQuery UI Dialog 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Dialog#theming
+ */
+.player-ui .ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; }
+.player-ui .ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative;  }
+.player-ui .ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; } 
+.player-ui .ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
+.player-ui .ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
+.player-ui .ui-dialog .ui-dialog-titlebar-close:hover, .player-ui .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
+.player-ui .ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
+.player-ui .ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
+.player-ui .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
+.player-ui .ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
+.player-ui .ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
+.player-ui .ui-draggable .ui-dialog-titlebar { cursor: move; }
+/*
+ * jQuery UI Slider 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Slider#theming
+ */
+.player-ui .ui-slider { position: relative; text-align: left; }
+.player-ui .ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
+.player-ui .ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
+
+.player-ui .ui-slider-horizontal { height: .8em; }
+.player-ui .ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
+.player-ui .ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
+.player-ui .ui-slider-horizontal .ui-slider-range-min { left: 0; }
+.player-ui .ui-slider-horizontal .ui-slider-range-max { right: 0; }
+
+.player-ui .ui-slider-vertical { width: .8em; height: 100px; }
+.player-ui .ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
+.player-ui .ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
+.player-ui .ui-slider-vertical .ui-slider-range-min { bottom: 0; }
+.player-ui .ui-slider-vertical .ui-slider-range-max { top: 0; }/*
+ * jQuery UI Tabs 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Tabs#theming
+ */
+.player-ui .ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
+.player-ui .ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
+.player-ui .ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
+.player-ui .ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }
+.player-ui .ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; }
+.player-ui .ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .player-ui .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .player-ui .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
+.player-ui .ui-tabs .ui-tabs-nav li a, .player-ui .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
+.player-ui .ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }
+.player-ui .ui-tabs .ui-tabs-hide { display: none !important; }
+/*
+ * jQuery UI Datepicker 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Datepicker#theming
+ */
+.player-ui .ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }
+.player-ui .ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
+.player-ui .ui-datepicker .ui-datepicker-prev, .player-ui .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
+.player-ui .ui-datepicker .ui-datepicker-prev-hover, .player-ui .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
+.player-ui .ui-datepicker .ui-datepicker-prev { left:2px; }
+.player-ui .ui-datepicker .ui-datepicker-next { right:2px; }
+.player-ui .ui-datepicker .ui-datepicker-prev-hover { left:1px; }
+.player-ui .ui-datepicker .ui-datepicker-next-hover { right:1px; }
+.player-ui .ui-datepicker .ui-datepicker-prev span, .player-ui .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px;  }
+.player-ui .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
+.player-ui .ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
+.player-ui .ui-datepicker select.ui-datepicker-month-year {width: 100%;}
+.player-ui .ui-datepicker select.ui-datepicker-month, 
+.player-ui .ui-datepicker select.ui-datepicker-year { width: 49%;}
+.player-ui .ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
+.player-ui .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0;  }
+.player-ui .ui-datepicker td { border: 0; padding: 1px; }
+.player-ui .ui-datepicker td span, .player-ui .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
+.player-ui .ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
+.player-ui .ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
+.player-ui .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
+
+/* with multiple calendars */
+.player-ui .ui-datepicker.ui-datepicker-multi { width:auto; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group { float:left; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
+.player-ui .ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
+.player-ui .ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
+.player-ui .ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
+.player-ui .ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
+.player-ui .ui-datepicker-row-break { clear:both; width:100%; font-size:0em; }
+
+/* RTL support */
+.player-ui .ui-datepicker-rtl { direction: rtl; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-group { float:right; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+
+/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
+.player-ui .ui-datepicker-cover {
+    display: none; /*sorry for IE5*/
+    display/**/: block; /*sorry for IE5*/
+    position: absolute; /*must have*/
+    z-index: -1; /*must have*/
+    filter: mask(); /*must have*/
+    top: -4px; /*must have*/
+    left: -4px; /*must have*/
+    width: 200px; /*must have*/
+    height: 200px; /*must have*/
+}/*
+ * jQuery UI Progressbar 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Progressbar#theming
+ */
+.player-ui .ui-progressbar { height:2em; text-align: left; overflow: hidden; }
+.player-ui .ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/jquery-ui/swanky-purse/images/ui-bg_diamond_10_4f4221_10x8.png b/public/admin/js/osmplayer/jquery-ui/swanky-purse/images/ui-bg_diamond_10_4f4221_10x8.png
new file mode 100644
index 0000000000000000000000000000000000000000..fc3262efb5c206a1c920d950fcccea647949f384
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/swanky-purse/images/ui-bg_diamond_10_4f4221_10x8.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/swanky-purse/images/ui-bg_diamond_20_372806_10x8.png b/public/admin/js/osmplayer/jquery-ui/swanky-purse/images/ui-bg_diamond_20_372806_10x8.png
new file mode 100644
index 0000000000000000000000000000000000000000..aba2c180878a040209ab8a2ab1ed606af73fe5dc
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/swanky-purse/images/ui-bg_diamond_20_372806_10x8.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/swanky-purse/images/ui-bg_diamond_25_675423_10x8.png b/public/admin/js/osmplayer/jquery-ui/swanky-purse/images/ui-bg_diamond_25_675423_10x8.png
new file mode 100644
index 0000000000000000000000000000000000000000..753b82cf31d5617b53d0bc9fa98c565a74535499
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/swanky-purse/images/ui-bg_diamond_25_675423_10x8.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/swanky-purse/images/ui-bg_diamond_25_d5ac5d_10x8.png b/public/admin/js/osmplayer/jquery-ui/swanky-purse/images/ui-bg_diamond_25_d5ac5d_10x8.png
new file mode 100644
index 0000000000000000000000000000000000000000..939b6d4936af9b97d731dde4c0b0d37a6c608ae9
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/swanky-purse/images/ui-bg_diamond_25_d5ac5d_10x8.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/swanky-purse/images/ui-bg_diamond_8_261803_10x8.png b/public/admin/js/osmplayer/jquery-ui/swanky-purse/images/ui-bg_diamond_8_261803_10x8.png
new file mode 100644
index 0000000000000000000000000000000000000000..27d918c39e99f65852c9ed995217595bf3d3458a
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/swanky-purse/images/ui-bg_diamond_8_261803_10x8.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/swanky-purse/images/ui-bg_diamond_8_443113_10x8.png b/public/admin/js/osmplayer/jquery-ui/swanky-purse/images/ui-bg_diamond_8_443113_10x8.png
new file mode 100644
index 0000000000000000000000000000000000000000..77c1d2b60597baa1612909388937083038cb2dc8
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/swanky-purse/images/ui-bg_diamond_8_443113_10x8.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/swanky-purse/images/ui-bg_flat_75_ddd4b0_40x100.png b/public/admin/js/osmplayer/jquery-ui/swanky-purse/images/ui-bg_flat_75_ddd4b0_40x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..f5cc553102318ddd02c890bc351d8bc20257f0b6
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/swanky-purse/images/ui-bg_flat_75_ddd4b0_40x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/swanky-purse/images/ui-bg_highlight-hard_65_fee4bd_1x100.png b/public/admin/js/osmplayer/jquery-ui/swanky-purse/images/ui-bg_highlight-hard_65_fee4bd_1x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..52d3a341825ea6d2f42a6eca315447b90f7de390
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/swanky-purse/images/ui-bg_highlight-hard_65_fee4bd_1x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/swanky-purse/images/ui-icons_070603_256x240.png b/public/admin/js/osmplayer/jquery-ui/swanky-purse/images/ui-icons_070603_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..fb0bf7287fd9a38d09a54c8079a74d7ce156d530
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/swanky-purse/images/ui-icons_070603_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/swanky-purse/images/ui-icons_e8e2b5_256x240.png b/public/admin/js/osmplayer/jquery-ui/swanky-purse/images/ui-icons_e8e2b5_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..e349b59b4f15abf066513fdaecb6829d74f1c2c7
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/swanky-purse/images/ui-icons_e8e2b5_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/swanky-purse/images/ui-icons_e9cd86_256x240.png b/public/admin/js/osmplayer/jquery-ui/swanky-purse/images/ui-icons_e9cd86_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..8cb9c894a2a470cab054e605a41421d8ffec6ef2
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/swanky-purse/images/ui-icons_e9cd86_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/swanky-purse/images/ui-icons_efec9f_256x240.png b/public/admin/js/osmplayer/jquery-ui/swanky-purse/images/ui-icons_efec9f_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..232e4b99ad5b56d10f5434ea847b9a145c3b7b14
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/swanky-purse/images/ui-icons_efec9f_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/swanky-purse/images/ui-icons_f2ec64_256x240.png b/public/admin/js/osmplayer/jquery-ui/swanky-purse/images/ui-icons_f2ec64_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..734740c1e5b0f89f0e2b294a340912ea01453591
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/swanky-purse/images/ui-icons_f2ec64_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/swanky-purse/images/ui-icons_f9f2bd_256x240.png b/public/admin/js/osmplayer/jquery-ui/swanky-purse/images/ui-icons_f9f2bd_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..2350769f5858bc15b41a922ea7e63ae483e2b21c
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/swanky-purse/images/ui-icons_f9f2bd_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/swanky-purse/images/ui-icons_ff7519_256x240.png b/public/admin/js/osmplayer/jquery-ui/swanky-purse/images/ui-icons_ff7519_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..544517142205f1adfc22b44eda10028e10abd42c
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/swanky-purse/images/ui-icons_ff7519_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/swanky-purse/jquery-ui-1.8.18.custom.css b/public/admin/js/osmplayer/jquery-ui/swanky-purse/jquery-ui-1.8.18.custom.css
new file mode 100644
index 0000000000000000000000000000000000000000..17f1d774fcd4ededaf3bac46c3d0860fa5367c3a
--- /dev/null
+++ b/public/admin/js/osmplayer/jquery-ui/swanky-purse/jquery-ui-1.8.18.custom.css
@@ -0,0 +1,565 @@
+/*
+ * jQuery UI CSS Framework 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ */
+
+/* Layout helpers
+----------------------------------*/
+.player-ui .ui-helper-hidden { display: none; }
+.player-ui .ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
+.player-ui .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
+.player-ui .ui-helper-clearfix:before, .player-ui .ui-helper-clearfix:after { content: ""; display: table; }
+.player-ui .ui-helper-clearfix:after { clear: both; }
+.player-ui .ui-helper-clearfix { zoom: 1; }
+.player-ui .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
+
+
+/* Interaction Cues
+----------------------------------*/
+.player-ui .ui-state-disabled { cursor: default !important; }
+
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.player-ui .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+.player-ui .ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
+
+
+/*
+ * jQuery UI CSS Framework 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ *
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Georgia,%20Verdana,Arial,sans-serif&fwDefault=bold&fsDefault=1.2em&cornerRadius=5px&bgColorHeader=261803&bgTextureHeader=13_diamond.png&bgImgOpacityHeader=8&borderColorHeader=baaa5a&fcHeader=eacd86&iconColorHeader=e9cd86&bgColorContent=443113&bgTextureContent=13_diamond.png&bgImgOpacityContent=8&borderColorContent=efec9f&fcContent=efec9f&iconColorContent=efec9f&bgColorDefault=4f4221&bgTextureDefault=13_diamond.png&bgImgOpacityDefault=10&borderColorDefault=362917&fcDefault=f8eec9&iconColorDefault=e8e2b5&bgColorHover=675423&bgTextureHover=13_diamond.png&bgImgOpacityHover=25&borderColorHover=362917&fcHover=f8eec9&iconColorHover=f2ec64&bgColorActive=443113&bgTextureActive=13_diamond.png&bgImgOpacityActive=8&borderColorActive=efec9f&fcActive=f9f2bd&iconColorActive=f9f2bd&bgColorHighlight=d5ac5d&bgTextureHighlight=13_diamond.png&bgImgOpacityHighlight=25&borderColorHighlight=362917&fcHighlight=060200&iconColorHighlight=070603&bgColorError=fee4bd&bgTextureError=04_highlight_hard.png&bgImgOpacityError=65&borderColorError=c26629&fcError=803f1e&iconColorError=ff7519&bgColorOverlay=372806&bgTextureOverlay=13_diamond.png&bgImgOpacityOverlay=20&opacityOverlay=80&bgColorShadow=ddd4b0&bgTextureShadow=01_flat.png&bgImgOpacityShadow=75&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=12px
+ */
+
+
+/* Component containers
+----------------------------------*/
+.player-ui .ui-widget { font-family: Georgia, Verdana,Arial,sans-serif; font-size: 1.2em; }
+.player-ui .ui-widget .ui-widget { font-size: 1em; }
+.player-ui .ui-widget input, .player-ui .ui-widget select, .player-ui .ui-widget textarea, .player-ui .ui-widget button { font-family: Georgia, Verdana,Arial,sans-serif; font-size: 1em; }
+.player-ui .ui-widget-content { border: 1px solid #efec9f; background: #443113 url(images/ui-bg_diamond_8_443113_10x8.png) 50% 50% repeat; color: #efec9f; }
+.player-ui .ui-widget-content a { color: #efec9f; }
+.player-ui .ui-widget-header { border: 1px solid #baaa5a; background: #261803 url(images/ui-bg_diamond_8_261803_10x8.png) 50% 50% repeat; color: #eacd86; font-weight: bold; }
+.player-ui .ui-widget-header a { color: #eacd86; }
+
+/* Interaction states
+----------------------------------*/
+.player-ui .ui-state-default, .player-ui .ui-widget-content .ui-state-default, .player-ui .ui-widget-header .ui-state-default { border: 1px solid #362917; background: #4f4221 url(images/ui-bg_diamond_10_4f4221_10x8.png) 50% 50% repeat; font-weight: bold; color: #f8eec9; }
+.player-ui .ui-state-default a, .player-ui .ui-state-default a:link, .player-ui .ui-state-default a:visited { color: #f8eec9; text-decoration: none; }
+.player-ui .ui-state-hover, .player-ui .ui-widget-content .ui-state-hover, .player-ui .ui-widget-header .ui-state-hover, .player-ui .ui-state-focus, .player-ui .ui-widget-content .ui-state-focus, .player-ui .ui-widget-header .ui-state-focus { border: 1px solid #362917; background: #675423 url(images/ui-bg_diamond_25_675423_10x8.png) 50% 50% repeat; font-weight: bold; color: #f8eec9; }
+.player-ui .ui-state-hover a, .player-ui .ui-state-hover a:hover { color: #f8eec9; text-decoration: none; }
+.player-ui .ui-state-active, .player-ui .ui-widget-content .ui-state-active, .player-ui .ui-widget-header .ui-state-active { border: 1px solid #efec9f; background: #443113 url(images/ui-bg_diamond_8_443113_10x8.png) 50% 50% repeat; font-weight: bold; color: #f9f2bd; }
+.player-ui .ui-state-active a, .player-ui .ui-state-active a:link, .player-ui .ui-state-active a:visited { color: #f9f2bd; text-decoration: none; }
+.player-ui .ui-widget :active { outline: none; }
+
+/* Interaction Cues
+----------------------------------*/
+.player-ui .ui-state-highlight, .player-ui .ui-widget-content .ui-state-highlight, .player-ui .ui-widget-header .ui-state-highlight  {border: 1px solid #362917; background: #d5ac5d url(images/ui-bg_diamond_25_d5ac5d_10x8.png) 50% 50% repeat; color: #060200; }
+.player-ui .ui-state-highlight a, .player-ui .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #060200; }
+.player-ui .ui-state-error, .player-ui .ui-widget-content .ui-state-error, .player-ui .ui-widget-header .ui-state-error {border: 1px solid #c26629; background: #fee4bd url(images/ui-bg_highlight-hard_65_fee4bd_1x100.png) 50% top repeat-x; color: #803f1e; }
+.player-ui .ui-state-error a, .player-ui .ui-widget-content .ui-state-error a, .player-ui .ui-widget-header .ui-state-error a { color: #803f1e; }
+.player-ui .ui-state-error-text, .player-ui .ui-widget-content .ui-state-error-text, .player-ui .ui-widget-header .ui-state-error-text { color: #803f1e; }
+.player-ui .ui-priority-primary, .player-ui .ui-widget-content .ui-priority-primary, .player-ui .ui-widget-header .ui-priority-primary { font-weight: bold; }
+.player-ui .ui-priority-secondary, .player-ui .ui-widget-content .ui-priority-secondary,  .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
+.player-ui .ui-state-disabled, .player-ui .ui-widget-content .ui-state-disabled, .player-ui .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.player-ui .ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_efec9f_256x240.png); }
+.player-ui .ui-widget-content .ui-icon {background-image: url(images/ui-icons_efec9f_256x240.png); }
+.player-ui .ui-widget-header .ui-icon {background-image: url(images/ui-icons_e9cd86_256x240.png); }
+.player-ui .ui-state-default .ui-icon { background-image: url(images/ui-icons_e8e2b5_256x240.png); }
+.player-ui .ui-state-hover .ui-icon, .player-ui .ui-state-focus .ui-icon {background-image: url(images/ui-icons_f2ec64_256x240.png); }
+.player-ui .ui-state-active .ui-icon {background-image: url(images/ui-icons_f9f2bd_256x240.png); }
+.player-ui .ui-state-highlight .ui-icon {background-image: url(images/ui-icons_070603_256x240.png); }
+.player-ui .ui-state-error .ui-icon, .player-ui .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_ff7519_256x240.png); }
+
+/* positioning */
+.player-ui .ui-icon-carat-1-n { background-position: 0 0; }
+.player-ui .ui-icon-carat-1-ne { background-position: -16px 0; }
+.player-ui .ui-icon-carat-1-e { background-position: -32px 0; }
+.player-ui .ui-icon-carat-1-se { background-position: -48px 0; }
+.player-ui .ui-icon-carat-1-s { background-position: -64px 0; }
+.player-ui .ui-icon-carat-1-sw { background-position: -80px 0; }
+.player-ui .ui-icon-carat-1-w { background-position: -96px 0; }
+.player-ui .ui-icon-carat-1-nw { background-position: -112px 0; }
+.player-ui .ui-icon-carat-2-n-s { background-position: -128px 0; }
+.player-ui .ui-icon-carat-2-e-w { background-position: -144px 0; }
+.player-ui .ui-icon-triangle-1-n { background-position: 0 -16px; }
+.player-ui .ui-icon-triangle-1-ne { background-position: -16px -16px; }
+.player-ui .ui-icon-triangle-1-e { background-position: -32px -16px; }
+.player-ui .ui-icon-triangle-1-se { background-position: -48px -16px; }
+.player-ui .ui-icon-triangle-1-s { background-position: -64px -16px; }
+.player-ui .ui-icon-triangle-1-sw { background-position: -80px -16px; }
+.player-ui .ui-icon-triangle-1-w { background-position: -96px -16px; }
+.player-ui .ui-icon-triangle-1-nw { background-position: -112px -16px; }
+.player-ui .ui-icon-triangle-2-n-s { background-position: -128px -16px; }
+.player-ui .ui-icon-triangle-2-e-w { background-position: -144px -16px; }
+.player-ui .ui-icon-arrow-1-n { background-position: 0 -32px; }
+.player-ui .ui-icon-arrow-1-ne { background-position: -16px -32px; }
+.player-ui .ui-icon-arrow-1-e { background-position: -32px -32px; }
+.player-ui .ui-icon-arrow-1-se { background-position: -48px -32px; }
+.player-ui .ui-icon-arrow-1-s { background-position: -64px -32px; }
+.player-ui .ui-icon-arrow-1-sw { background-position: -80px -32px; }
+.player-ui .ui-icon-arrow-1-w { background-position: -96px -32px; }
+.player-ui .ui-icon-arrow-1-nw { background-position: -112px -32px; }
+.player-ui .ui-icon-arrow-2-n-s { background-position: -128px -32px; }
+.player-ui .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
+.player-ui .ui-icon-arrow-2-e-w { background-position: -160px -32px; }
+.player-ui .ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
+.player-ui .ui-icon-arrowstop-1-n { background-position: -192px -32px; }
+.player-ui .ui-icon-arrowstop-1-e { background-position: -208px -32px; }
+.player-ui .ui-icon-arrowstop-1-s { background-position: -224px -32px; }
+.player-ui .ui-icon-arrowstop-1-w { background-position: -240px -32px; }
+.player-ui .ui-icon-arrowthick-1-n { background-position: 0 -48px; }
+.player-ui .ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
+.player-ui .ui-icon-arrowthick-1-e { background-position: -32px -48px; }
+.player-ui .ui-icon-arrowthick-1-se { background-position: -48px -48px; }
+.player-ui .ui-icon-arrowthick-1-s { background-position: -64px -48px; }
+.player-ui .ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
+.player-ui .ui-icon-arrowthick-1-w { background-position: -96px -48px; }
+.player-ui .ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
+.player-ui .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
+.player-ui .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
+.player-ui .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
+.player-ui .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
+.player-ui .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
+.player-ui .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
+.player-ui .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
+.player-ui .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
+.player-ui .ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
+.player-ui .ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
+.player-ui .ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
+.player-ui .ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
+.player-ui .ui-icon-arrow-4 { background-position: 0 -80px; }
+.player-ui .ui-icon-arrow-4-diag { background-position: -16px -80px; }
+.player-ui .ui-icon-extlink { background-position: -32px -80px; }
+.player-ui .ui-icon-newwin { background-position: -48px -80px; }
+.player-ui .ui-icon-refresh { background-position: -64px -80px; }
+.player-ui .ui-icon-shuffle { background-position: -80px -80px; }
+.player-ui .ui-icon-transfer-e-w { background-position: -96px -80px; }
+.player-ui .ui-icon-transferthick-e-w { background-position: -112px -80px; }
+.player-ui .ui-icon-folder-collapsed { background-position: 0 -96px; }
+.player-ui .ui-icon-folder-open { background-position: -16px -96px; }
+.player-ui .ui-icon-document { background-position: -32px -96px; }
+.player-ui .ui-icon-document-b { background-position: -48px -96px; }
+.player-ui .ui-icon-note { background-position: -64px -96px; }
+.player-ui .ui-icon-mail-closed { background-position: -80px -96px; }
+.player-ui .ui-icon-mail-open { background-position: -96px -96px; }
+.player-ui .ui-icon-suitcase { background-position: -112px -96px; }
+.player-ui .ui-icon-comment { background-position: -128px -96px; }
+.player-ui .ui-icon-person { background-position: -144px -96px; }
+.player-ui .ui-icon-print { background-position: -160px -96px; }
+.player-ui .ui-icon-trash { background-position: -176px -96px; }
+.player-ui .ui-icon-locked { background-position: -192px -96px; }
+.player-ui .ui-icon-unlocked { background-position: -208px -96px; }
+.player-ui .ui-icon-bookmark { background-position: -224px -96px; }
+.player-ui .ui-icon-tag { background-position: -240px -96px; }
+.player-ui .ui-icon-home { background-position: 0 -112px; }
+.player-ui .ui-icon-flag { background-position: -16px -112px; }
+.player-ui .ui-icon-calendar { background-position: -32px -112px; }
+.player-ui .ui-icon-cart { background-position: -48px -112px; }
+.player-ui .ui-icon-pencil { background-position: -64px -112px; }
+.player-ui .ui-icon-clock { background-position: -80px -112px; }
+.player-ui .ui-icon-disk { background-position: -96px -112px; }
+.player-ui .ui-icon-calculator { background-position: -112px -112px; }
+.player-ui .ui-icon-zoomin { background-position: -128px -112px; }
+.player-ui .ui-icon-zoomout { background-position: -144px -112px; }
+.player-ui .ui-icon-search { background-position: -160px -112px; }
+.player-ui .ui-icon-wrench { background-position: -176px -112px; }
+.player-ui .ui-icon-gear { background-position: -192px -112px; }
+.player-ui .ui-icon-heart { background-position: -208px -112px; }
+.player-ui .ui-icon-star { background-position: -224px -112px; }
+.player-ui .ui-icon-link { background-position: -240px -112px; }
+.player-ui .ui-icon-cancel { background-position: 0 -128px; }
+.player-ui .ui-icon-plus { background-position: -16px -128px; }
+.player-ui .ui-icon-plusthick { background-position: -32px -128px; }
+.player-ui .ui-icon-minus { background-position: -48px -128px; }
+.player-ui .ui-icon-minusthick { background-position: -64px -128px; }
+.player-ui .ui-icon-close { background-position: -80px -128px; }
+.player-ui .ui-icon-closethick { background-position: -96px -128px; }
+.player-ui .ui-icon-key { background-position: -112px -128px; }
+.player-ui .ui-icon-lightbulb { background-position: -128px -128px; }
+.player-ui .ui-icon-scissors { background-position: -144px -128px; }
+.player-ui .ui-icon-clipboard { background-position: -160px -128px; }
+.player-ui .ui-icon-copy { background-position: -176px -128px; }
+.player-ui .ui-icon-contact { background-position: -192px -128px; }
+.player-ui .ui-icon-image { background-position: -208px -128px; }
+.player-ui .ui-icon-video { background-position: -224px -128px; }
+.player-ui .ui-icon-script { background-position: -240px -128px; }
+.player-ui .ui-icon-alert { background-position: 0 -144px; }
+.player-ui .ui-icon-info { background-position: -16px -144px; }
+.player-ui .ui-icon-notice { background-position: -32px -144px; }
+.player-ui .ui-icon-help { background-position: -48px -144px; }
+.player-ui .ui-icon-check { background-position: -64px -144px; }
+.player-ui .ui-icon-bullet { background-position: -80px -144px; }
+.player-ui .ui-icon-radio-off { background-position: -96px -144px; }
+.player-ui .ui-icon-radio-on { background-position: -112px -144px; }
+.player-ui .ui-icon-pin-w { background-position: -128px -144px; }
+.player-ui .ui-icon-pin-s { background-position: -144px -144px; }
+.player-ui .ui-icon-play { background-position: 0 -160px; }
+.player-ui .ui-icon-pause { background-position: -16px -160px; }
+.player-ui .ui-icon-seek-next { background-position: -32px -160px; }
+.player-ui .ui-icon-seek-prev { background-position: -48px -160px; }
+.player-ui .ui-icon-seek-end { background-position: -64px -160px; }
+.player-ui .ui-icon-seek-start { background-position: -80px -160px; }
+/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
+.player-ui .ui-icon-seek-first { background-position: -80px -160px; }
+.player-ui .ui-icon-stop { background-position: -96px -160px; }
+.player-ui .ui-icon-eject { background-position: -112px -160px; }
+.player-ui .ui-icon-volume-off { background-position: -128px -160px; }
+.player-ui .ui-icon-volume-on { background-position: -144px -160px; }
+.player-ui .ui-icon-power { background-position: 0 -176px; }
+.player-ui .ui-icon-signal-diag { background-position: -16px -176px; }
+.player-ui .ui-icon-signal { background-position: -32px -176px; }
+.player-ui .ui-icon-battery-0 { background-position: -48px -176px; }
+.player-ui .ui-icon-battery-1 { background-position: -64px -176px; }
+.player-ui .ui-icon-battery-2 { background-position: -80px -176px; }
+.player-ui .ui-icon-battery-3 { background-position: -96px -176px; }
+.player-ui .ui-icon-circle-plus { background-position: 0 -192px; }
+.player-ui .ui-icon-circle-minus { background-position: -16px -192px; }
+.player-ui .ui-icon-circle-close { background-position: -32px -192px; }
+.player-ui .ui-icon-circle-triangle-e { background-position: -48px -192px; }
+.player-ui .ui-icon-circle-triangle-s { background-position: -64px -192px; }
+.player-ui .ui-icon-circle-triangle-w { background-position: -80px -192px; }
+.player-ui .ui-icon-circle-triangle-n { background-position: -96px -192px; }
+.player-ui .ui-icon-circle-arrow-e { background-position: -112px -192px; }
+.player-ui .ui-icon-circle-arrow-s { background-position: -128px -192px; }
+.player-ui .ui-icon-circle-arrow-w { background-position: -144px -192px; }
+.player-ui .ui-icon-circle-arrow-n { background-position: -160px -192px; }
+.player-ui .ui-icon-circle-zoomin { background-position: -176px -192px; }
+.player-ui .ui-icon-circle-zoomout { background-position: -192px -192px; }
+.player-ui .ui-icon-circle-check { background-position: -208px -192px; }
+.player-ui .ui-icon-circlesmall-plus { background-position: 0 -208px; }
+.player-ui .ui-icon-circlesmall-minus { background-position: -16px -208px; }
+.player-ui .ui-icon-circlesmall-close { background-position: -32px -208px; }
+.player-ui .ui-icon-squaresmall-plus { background-position: -48px -208px; }
+.player-ui .ui-icon-squaresmall-minus { background-position: -64px -208px; }
+.player-ui .ui-icon-squaresmall-close { background-position: -80px -208px; }
+.player-ui .ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
+.player-ui .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
+.player-ui .ui-icon-grip-solid-vertical { background-position: -32px -224px; }
+.player-ui .ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
+.player-ui .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
+.player-ui .ui-icon-grip-diagonal-se { background-position: -80px -224px; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Corner radius */
+.player-ui .ui-corner-all, .player-ui .ui-corner-top, .player-ui .ui-corner-left, .player-ui .ui-corner-tl { -moz-border-radius-topleft: 5px; -webkit-border-top-left-radius: 5px; -khtml-border-top-left-radius: 5px; border-top-left-radius: 5px; }
+.player-ui .ui-corner-all, .player-ui .ui-corner-top, .player-ui .ui-corner-right, .player-ui .ui-corner-tr { -moz-border-radius-topright: 5px; -webkit-border-top-right-radius: 5px; -khtml-border-top-right-radius: 5px; border-top-right-radius: 5px; }
+.player-ui .ui-corner-all, .player-ui .ui-corner-bottom, .player-ui .ui-corner-left, .player-ui .ui-corner-bl { -moz-border-radius-bottomleft: 5px; -webkit-border-bottom-left-radius: 5px; -khtml-border-bottom-left-radius: 5px; border-bottom-left-radius: 5px; }
+.player-ui .ui-corner-all, .player-ui .ui-corner-bottom, .player-ui .ui-corner-right, .player-ui .ui-corner-br { -moz-border-radius-bottomright: 5px; -webkit-border-bottom-right-radius: 5px; -khtml-border-bottom-right-radius: 5px; border-bottom-right-radius: 5px; }
+
+/* Overlays */
+.player-ui .ui-widget-overlay { background: #372806 url(images/ui-bg_diamond_20_372806_10x8.png) 50% 50% repeat; opacity: .80;filter:Alpha(Opacity=80); }
+.player-ui .ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #ddd4b0 url(images/ui-bg_flat_75_ddd4b0_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 12px; -khtml-border-radius: 12px; -webkit-border-radius: 12px; border-radius: 12px; }/*
+ * jQuery UI Resizable 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Resizable#theming
+ */
+.player-ui .ui-resizable { position: relative;}
+.player-ui .ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block; }
+.player-ui .ui-resizable-disabled .ui-resizable-handle, .player-ui .ui-resizable-autohide .ui-resizable-handle { display: none; }
+.player-ui .ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
+.player-ui .ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
+.player-ui .ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
+.player-ui .ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
+.player-ui .ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
+.player-ui .ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
+.player-ui .ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
+.player-ui .ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/*
+ * jQuery UI Selectable 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Selectable#theming
+ */
+.player-ui .ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }
+/*
+ * jQuery UI Accordion 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Accordion#theming
+ */
+/* IE/Win - Fix animation bug - #4615 */
+.player-ui .ui-accordion { width: 100%; }
+.player-ui .ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
+.player-ui .ui-accordion .ui-accordion-li-fix { display: inline; }
+.player-ui .ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
+.player-ui .ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; }
+.player-ui .ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; }
+.player-ui .ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
+.player-ui .ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; }
+.player-ui .ui-accordion .ui-accordion-content-active { display: block; }
+/*
+ * jQuery UI Autocomplete 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Autocomplete#theming
+ */
+.player-ui .ui-autocomplete { position: absolute; cursor: default; }	
+
+/* workarounds */
+* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
+
+/*
+ * jQuery UI Menu 1.8.18
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Menu#theming
+ */
+.player-ui .ui-menu {
+	list-style:none;
+	padding: 2px;
+	margin: 0;
+	display:block;
+	float: left;
+}
+.player-ui .ui-menu .ui-menu {
+	margin-top: -3px;
+}
+.player-ui .ui-menu .ui-menu-item {
+	margin:0;
+	padding: 0;
+	zoom: 1;
+	float: left;
+	clear: left;
+	width: 100%;
+}
+.player-ui .ui-menu .ui-menu-item a {
+	text-decoration:none;
+	display:block;
+	padding:.2em .4em;
+	line-height:1.5;
+	zoom:1;
+}
+.player-ui .ui-menu .ui-menu-item a.ui-state-hover,
+.player-ui .ui-menu .ui-menu-item a.ui-state-active {
+	font-weight: normal;
+	margin: -1px;
+}
+/*
+ * jQuery UI Button 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Button#theming
+ */
+.player-ui .ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: hidden; *overflow: visible; } /* the overflow property removes extra width in IE */
+.player-ui .ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
+button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
+.player-ui .ui-button-icons-only { width: 3.4em; } 
+button.ui-button-icons-only { width: 3.7em; } 
+
+/*button text element */
+.player-ui .ui-button .ui-button-text { display: block; line-height: 1.4;  }
+.player-ui .ui-button-text-only .ui-button-text { padding: .4em 1em; }
+.player-ui .ui-button-icon-only .ui-button-text, .player-ui .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
+.player-ui .ui-button-text-icon-primary .ui-button-text, .player-ui .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
+.player-ui .ui-button-text-icon-secondary .ui-button-text, .player-ui .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }
+.player-ui .ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }
+/* no icon support for input elements, provide padding by default */
+input.ui-button { padding: .4em 1em; }
+
+/*button icon element(s) */
+.player-ui .ui-button-icon-only .ui-icon, .player-ui .ui-button-text-icon-primary .ui-icon, .player-ui .ui-button-text-icon-secondary .ui-icon, .player-ui .ui-button-text-icons .ui-icon, .player-ui .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
+.player-ui .ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
+.player-ui .ui-button-text-icon-primary .ui-button-icon-primary, .player-ui .ui-button-text-icons .ui-button-icon-primary, .player-ui .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
+.player-ui .ui-button-text-icon-secondary .ui-button-icon-secondary, .player-ui .ui-button-text-icons .ui-button-icon-secondary, .player-ui .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
+.player-ui .ui-button-text-icons .ui-button-icon-secondary, .player-ui .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
+
+/*button sets*/
+.player-ui .ui-buttonset { margin-right: 7px; }
+.player-ui .ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }
+
+/* workarounds */
+button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
+/*
+ * jQuery UI Dialog 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Dialog#theming
+ */
+.player-ui .ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; }
+.player-ui .ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative;  }
+.player-ui .ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; } 
+.player-ui .ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
+.player-ui .ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
+.player-ui .ui-dialog .ui-dialog-titlebar-close:hover, .player-ui .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
+.player-ui .ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
+.player-ui .ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
+.player-ui .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
+.player-ui .ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
+.player-ui .ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
+.player-ui .ui-draggable .ui-dialog-titlebar { cursor: move; }
+/*
+ * jQuery UI Slider 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Slider#theming
+ */
+.player-ui .ui-slider { position: relative; text-align: left; }
+.player-ui .ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
+.player-ui .ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
+
+.player-ui .ui-slider-horizontal { height: .8em; }
+.player-ui .ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
+.player-ui .ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
+.player-ui .ui-slider-horizontal .ui-slider-range-min { left: 0; }
+.player-ui .ui-slider-horizontal .ui-slider-range-max { right: 0; }
+
+.player-ui .ui-slider-vertical { width: .8em; height: 100px; }
+.player-ui .ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
+.player-ui .ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
+.player-ui .ui-slider-vertical .ui-slider-range-min { bottom: 0; }
+.player-ui .ui-slider-vertical .ui-slider-range-max { top: 0; }/*
+ * jQuery UI Tabs 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Tabs#theming
+ */
+.player-ui .ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
+.player-ui .ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
+.player-ui .ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
+.player-ui .ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }
+.player-ui .ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; }
+.player-ui .ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .player-ui .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .player-ui .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
+.player-ui .ui-tabs .ui-tabs-nav li a, .player-ui .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
+.player-ui .ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }
+.player-ui .ui-tabs .ui-tabs-hide { display: none !important; }
+/*
+ * jQuery UI Datepicker 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Datepicker#theming
+ */
+.player-ui .ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }
+.player-ui .ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
+.player-ui .ui-datepicker .ui-datepicker-prev, .player-ui .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
+.player-ui .ui-datepicker .ui-datepicker-prev-hover, .player-ui .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
+.player-ui .ui-datepicker .ui-datepicker-prev { left:2px; }
+.player-ui .ui-datepicker .ui-datepicker-next { right:2px; }
+.player-ui .ui-datepicker .ui-datepicker-prev-hover { left:1px; }
+.player-ui .ui-datepicker .ui-datepicker-next-hover { right:1px; }
+.player-ui .ui-datepicker .ui-datepicker-prev span, .player-ui .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px;  }
+.player-ui .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
+.player-ui .ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
+.player-ui .ui-datepicker select.ui-datepicker-month-year {width: 100%;}
+.player-ui .ui-datepicker select.ui-datepicker-month, 
+.player-ui .ui-datepicker select.ui-datepicker-year { width: 49%;}
+.player-ui .ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
+.player-ui .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0;  }
+.player-ui .ui-datepicker td { border: 0; padding: 1px; }
+.player-ui .ui-datepicker td span, .player-ui .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
+.player-ui .ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
+.player-ui .ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
+.player-ui .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
+
+/* with multiple calendars */
+.player-ui .ui-datepicker.ui-datepicker-multi { width:auto; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group { float:left; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
+.player-ui .ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
+.player-ui .ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
+.player-ui .ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
+.player-ui .ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
+.player-ui .ui-datepicker-row-break { clear:both; width:100%; font-size:0em; }
+
+/* RTL support */
+.player-ui .ui-datepicker-rtl { direction: rtl; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-group { float:right; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+
+/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
+.player-ui .ui-datepicker-cover {
+    display: none; /*sorry for IE5*/
+    display/**/: block; /*sorry for IE5*/
+    position: absolute; /*must have*/
+    z-index: -1; /*must have*/
+    filter: mask(); /*must have*/
+    top: -4px; /*must have*/
+    left: -4px; /*must have*/
+    width: 200px; /*must have*/
+    height: 200px; /*must have*/
+}/*
+ * jQuery UI Progressbar 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Progressbar#theming
+ */
+.player-ui .ui-progressbar { height:2em; text-align: left; overflow: hidden; }
+.player-ui .ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/jquery-ui/ui-darkness/images/ui-bg_flat_30_cccccc_40x100.png b/public/admin/js/osmplayer/jquery-ui/ui-darkness/images/ui-bg_flat_30_cccccc_40x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..5473afffbc2662173f5af5c27d966c072de8039b
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/ui-darkness/images/ui-bg_flat_30_cccccc_40x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/ui-darkness/images/ui-bg_flat_50_5c5c5c_40x100.png b/public/admin/js/osmplayer/jquery-ui/ui-darkness/images/ui-bg_flat_50_5c5c5c_40x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..5950a8db9e64e8d00bb28726cb869947abfdc7fc
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/ui-darkness/images/ui-bg_flat_50_5c5c5c_40x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/ui-darkness/images/ui-bg_glass_20_555555_1x400.png b/public/admin/js/osmplayer/jquery-ui/ui-darkness/images/ui-bg_glass_20_555555_1x400.png
new file mode 100644
index 0000000000000000000000000000000000000000..1ad224ad36890adab7d2cd16ad402566edc67567
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/ui-darkness/images/ui-bg_glass_20_555555_1x400.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/ui-darkness/images/ui-bg_glass_40_0078a3_1x400.png b/public/admin/js/osmplayer/jquery-ui/ui-darkness/images/ui-bg_glass_40_0078a3_1x400.png
new file mode 100644
index 0000000000000000000000000000000000000000..1cf1cac1c217656eec6ee2479c6af40f119fae88
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/ui-darkness/images/ui-bg_glass_40_0078a3_1x400.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/ui-darkness/images/ui-bg_glass_40_ffc73d_1x400.png b/public/admin/js/osmplayer/jquery-ui/ui-darkness/images/ui-bg_glass_40_ffc73d_1x400.png
new file mode 100644
index 0000000000000000000000000000000000000000..35ec0d9d290646cc4e487ad973dde7e979829d00
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/ui-darkness/images/ui-bg_glass_40_ffc73d_1x400.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/ui-darkness/images/ui-bg_gloss-wave_25_333333_500x100.png b/public/admin/js/osmplayer/jquery-ui/ui-darkness/images/ui-bg_gloss-wave_25_333333_500x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..b1b03b677165b6628a426bd69f5677f125ecc43c
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/ui-darkness/images/ui-bg_gloss-wave_25_333333_500x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/ui-darkness/images/ui-bg_highlight-soft_80_eeeeee_1x100.png b/public/admin/js/osmplayer/jquery-ui/ui-darkness/images/ui-bg_highlight-soft_80_eeeeee_1x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..e56eefd612ae74339bd45ae91ddfc2ae2eb7092b
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/ui-darkness/images/ui-bg_highlight-soft_80_eeeeee_1x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/ui-darkness/images/ui-bg_inset-soft_25_000000_1x100.png b/public/admin/js/osmplayer/jquery-ui/ui-darkness/images/ui-bg_inset-soft_25_000000_1x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..3525eb9ff4c26d2c74003e7e2fdf09cccf7c9d54
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/ui-darkness/images/ui-bg_inset-soft_25_000000_1x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/ui-darkness/images/ui-bg_inset-soft_30_f58400_1x100.png b/public/admin/js/osmplayer/jquery-ui/ui-darkness/images/ui-bg_inset-soft_30_f58400_1x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..2b6a9f92408ede5e967497f0c917d99e06a2e7f8
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/ui-darkness/images/ui-bg_inset-soft_30_f58400_1x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/ui-darkness/images/ui-icons_222222_256x240.png b/public/admin/js/osmplayer/jquery-ui/ui-darkness/images/ui-icons_222222_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..b273ff111d219c9b9a8b96d57683d0075fb7871a
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/ui-darkness/images/ui-icons_222222_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/ui-darkness/images/ui-icons_4b8e0b_256x240.png b/public/admin/js/osmplayer/jquery-ui/ui-darkness/images/ui-icons_4b8e0b_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..3bdb67be8f85c00d44940330a9a8cb07a73e83a4
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/ui-darkness/images/ui-icons_4b8e0b_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/ui-darkness/images/ui-icons_a83300_256x240.png b/public/admin/js/osmplayer/jquery-ui/ui-darkness/images/ui-icons_a83300_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..95993eab7625fb91819ce8d3d72fd6f71a520eda
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/ui-darkness/images/ui-icons_a83300_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/ui-darkness/images/ui-icons_cccccc_256x240.png b/public/admin/js/osmplayer/jquery-ui/ui-darkness/images/ui-icons_cccccc_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..9254e05cfb964be56241b5bb4d0a0eb51c02df80
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/ui-darkness/images/ui-icons_cccccc_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/ui-darkness/images/ui-icons_ffffff_256x240.png b/public/admin/js/osmplayer/jquery-ui/ui-darkness/images/ui-icons_ffffff_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..42f8f992c727ddaa617da224a522e463df690387
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/ui-darkness/images/ui-icons_ffffff_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/ui-darkness/jquery-ui-1.8.18.custom.css b/public/admin/js/osmplayer/jquery-ui/ui-darkness/jquery-ui-1.8.18.custom.css
new file mode 100644
index 0000000000000000000000000000000000000000..d1292e343be109dabb040084bf46f51f18008bb5
--- /dev/null
+++ b/public/admin/js/osmplayer/jquery-ui/ui-darkness/jquery-ui-1.8.18.custom.css
@@ -0,0 +1,565 @@
+/*
+ * jQuery UI CSS Framework 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ */
+
+/* Layout helpers
+----------------------------------*/
+.player-ui .ui-helper-hidden { display: none; }
+.player-ui .ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
+.player-ui .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
+.player-ui .ui-helper-clearfix:before, .player-ui .ui-helper-clearfix:after { content: ""; display: table; }
+.player-ui .ui-helper-clearfix:after { clear: both; }
+.player-ui .ui-helper-clearfix { zoom: 1; }
+.player-ui .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
+
+
+/* Interaction Cues
+----------------------------------*/
+.player-ui .ui-state-disabled { cursor: default !important; }
+
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.player-ui .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+.player-ui .ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
+
+
+/*
+ * jQuery UI CSS Framework 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ *
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Segoe%20UI,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=6px&bgColorHeader=333333&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=25&borderColorHeader=333333&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=000000&bgTextureContent=05_inset_soft.png&bgImgOpacityContent=25&borderColorContent=666666&fcContent=ffffff&iconColorContent=cccccc&bgColorDefault=555555&bgTextureDefault=02_glass.png&bgImgOpacityDefault=20&borderColorDefault=666666&fcDefault=eeeeee&iconColorDefault=cccccc&bgColorHover=0078a3&bgTextureHover=02_glass.png&bgImgOpacityHover=40&borderColorHover=59b4d4&fcHover=ffffff&iconColorHover=ffffff&bgColorActive=f58400&bgTextureActive=05_inset_soft.png&bgImgOpacityActive=30&borderColorActive=ffaf0f&fcActive=ffffff&iconColorActive=222222&bgColorHighlight=eeeeee&bgTextureHighlight=03_highlight_soft.png&bgImgOpacityHighlight=80&borderColorHighlight=cccccc&fcHighlight=2e7db2&iconColorHighlight=4b8e0b&bgColorError=ffc73d&bgTextureError=02_glass.png&bgImgOpacityError=40&borderColorError=ffb73d&fcError=111111&iconColorError=a83300&bgColorOverlay=5c5c5c&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=50&opacityOverlay=80&bgColorShadow=cccccc&bgTextureShadow=01_flat.png&bgImgOpacityShadow=30&opacityShadow=60&thicknessShadow=7px&offsetTopShadow=-7px&offsetLeftShadow=-7px&cornerRadiusShadow=8px
+ */
+
+
+/* Component containers
+----------------------------------*/
+.player-ui .ui-widget { font-family: Segoe UI, Arial, sans-serif; font-size: 1.1em; }
+.player-ui .ui-widget .ui-widget { font-size: 1em; }
+.player-ui .ui-widget input, .player-ui .ui-widget select, .player-ui .ui-widget textarea, .player-ui .ui-widget button { font-family: Segoe UI, Arial, sans-serif; font-size: 1em; }
+.player-ui .ui-widget-content { border: 1px solid #666666; background: #000000 url(images/ui-bg_inset-soft_25_000000_1x100.png) 50% bottom repeat-x; color: #ffffff; }
+.player-ui .ui-widget-content a { color: #ffffff; }
+.player-ui .ui-widget-header { border: 1px solid #333333; background: #333333 url(images/ui-bg_gloss-wave_25_333333_500x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; }
+.player-ui .ui-widget-header a { color: #ffffff; }
+
+/* Interaction states
+----------------------------------*/
+.player-ui .ui-state-default, .player-ui .ui-widget-content .ui-state-default, .player-ui .ui-widget-header .ui-state-default { border: 1px solid #666666; background: #555555 url(images/ui-bg_glass_20_555555_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #eeeeee; }
+.player-ui .ui-state-default a, .player-ui .ui-state-default a:link, .player-ui .ui-state-default a:visited { color: #eeeeee; text-decoration: none; }
+.player-ui .ui-state-hover, .player-ui .ui-widget-content .ui-state-hover, .player-ui .ui-widget-header .ui-state-hover, .player-ui .ui-state-focus, .player-ui .ui-widget-content .ui-state-focus, .player-ui .ui-widget-header .ui-state-focus { border: 1px solid #59b4d4; background: #0078a3 url(images/ui-bg_glass_40_0078a3_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #ffffff; }
+.player-ui .ui-state-hover a, .player-ui .ui-state-hover a:hover { color: #ffffff; text-decoration: none; }
+.player-ui .ui-state-active, .player-ui .ui-widget-content .ui-state-active, .player-ui .ui-widget-header .ui-state-active { border: 1px solid #ffaf0f; background: #f58400 url(images/ui-bg_inset-soft_30_f58400_1x100.png) 50% 50% repeat-x; font-weight: bold; color: #ffffff; }
+.player-ui .ui-state-active a, .player-ui .ui-state-active a:link, .player-ui .ui-state-active a:visited { color: #ffffff; text-decoration: none; }
+.player-ui .ui-widget :active { outline: none; }
+
+/* Interaction Cues
+----------------------------------*/
+.player-ui .ui-state-highlight, .player-ui .ui-widget-content .ui-state-highlight, .player-ui .ui-widget-header .ui-state-highlight  {border: 1px solid #cccccc; background: #eeeeee url(images/ui-bg_highlight-soft_80_eeeeee_1x100.png) 50% top repeat-x; color: #2e7db2; }
+.player-ui .ui-state-highlight a, .player-ui .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #2e7db2; }
+.player-ui .ui-state-error, .player-ui .ui-widget-content .ui-state-error, .player-ui .ui-widget-header .ui-state-error {border: 1px solid #ffb73d; background: #ffc73d url(images/ui-bg_glass_40_ffc73d_1x400.png) 50% 50% repeat-x; color: #111111; }
+.player-ui .ui-state-error a, .player-ui .ui-widget-content .ui-state-error a, .player-ui .ui-widget-header .ui-state-error a { color: #111111; }
+.player-ui .ui-state-error-text, .player-ui .ui-widget-content .ui-state-error-text, .player-ui .ui-widget-header .ui-state-error-text { color: #111111; }
+.player-ui .ui-priority-primary, .player-ui .ui-widget-content .ui-priority-primary, .player-ui .ui-widget-header .ui-priority-primary { font-weight: bold; }
+.player-ui .ui-priority-secondary, .player-ui .ui-widget-content .ui-priority-secondary,  .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
+.player-ui .ui-state-disabled, .player-ui .ui-widget-content .ui-state-disabled, .player-ui .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.player-ui .ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_cccccc_256x240.png); }
+.player-ui .ui-widget-content .ui-icon {background-image: url(images/ui-icons_cccccc_256x240.png); }
+.player-ui .ui-widget-header .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); }
+.player-ui .ui-state-default .ui-icon { background-image: url(images/ui-icons_cccccc_256x240.png); }
+.player-ui .ui-state-hover .ui-icon, .player-ui .ui-state-focus .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); }
+.player-ui .ui-state-active .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
+.player-ui .ui-state-highlight .ui-icon {background-image: url(images/ui-icons_4b8e0b_256x240.png); }
+.player-ui .ui-state-error .ui-icon, .player-ui .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_a83300_256x240.png); }
+
+/* positioning */
+.player-ui .ui-icon-carat-1-n { background-position: 0 0; }
+.player-ui .ui-icon-carat-1-ne { background-position: -16px 0; }
+.player-ui .ui-icon-carat-1-e { background-position: -32px 0; }
+.player-ui .ui-icon-carat-1-se { background-position: -48px 0; }
+.player-ui .ui-icon-carat-1-s { background-position: -64px 0; }
+.player-ui .ui-icon-carat-1-sw { background-position: -80px 0; }
+.player-ui .ui-icon-carat-1-w { background-position: -96px 0; }
+.player-ui .ui-icon-carat-1-nw { background-position: -112px 0; }
+.player-ui .ui-icon-carat-2-n-s { background-position: -128px 0; }
+.player-ui .ui-icon-carat-2-e-w { background-position: -144px 0; }
+.player-ui .ui-icon-triangle-1-n { background-position: 0 -16px; }
+.player-ui .ui-icon-triangle-1-ne { background-position: -16px -16px; }
+.player-ui .ui-icon-triangle-1-e { background-position: -32px -16px; }
+.player-ui .ui-icon-triangle-1-se { background-position: -48px -16px; }
+.player-ui .ui-icon-triangle-1-s { background-position: -64px -16px; }
+.player-ui .ui-icon-triangle-1-sw { background-position: -80px -16px; }
+.player-ui .ui-icon-triangle-1-w { background-position: -96px -16px; }
+.player-ui .ui-icon-triangle-1-nw { background-position: -112px -16px; }
+.player-ui .ui-icon-triangle-2-n-s { background-position: -128px -16px; }
+.player-ui .ui-icon-triangle-2-e-w { background-position: -144px -16px; }
+.player-ui .ui-icon-arrow-1-n { background-position: 0 -32px; }
+.player-ui .ui-icon-arrow-1-ne { background-position: -16px -32px; }
+.player-ui .ui-icon-arrow-1-e { background-position: -32px -32px; }
+.player-ui .ui-icon-arrow-1-se { background-position: -48px -32px; }
+.player-ui .ui-icon-arrow-1-s { background-position: -64px -32px; }
+.player-ui .ui-icon-arrow-1-sw { background-position: -80px -32px; }
+.player-ui .ui-icon-arrow-1-w { background-position: -96px -32px; }
+.player-ui .ui-icon-arrow-1-nw { background-position: -112px -32px; }
+.player-ui .ui-icon-arrow-2-n-s { background-position: -128px -32px; }
+.player-ui .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
+.player-ui .ui-icon-arrow-2-e-w { background-position: -160px -32px; }
+.player-ui .ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
+.player-ui .ui-icon-arrowstop-1-n { background-position: -192px -32px; }
+.player-ui .ui-icon-arrowstop-1-e { background-position: -208px -32px; }
+.player-ui .ui-icon-arrowstop-1-s { background-position: -224px -32px; }
+.player-ui .ui-icon-arrowstop-1-w { background-position: -240px -32px; }
+.player-ui .ui-icon-arrowthick-1-n { background-position: 0 -48px; }
+.player-ui .ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
+.player-ui .ui-icon-arrowthick-1-e { background-position: -32px -48px; }
+.player-ui .ui-icon-arrowthick-1-se { background-position: -48px -48px; }
+.player-ui .ui-icon-arrowthick-1-s { background-position: -64px -48px; }
+.player-ui .ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
+.player-ui .ui-icon-arrowthick-1-w { background-position: -96px -48px; }
+.player-ui .ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
+.player-ui .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
+.player-ui .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
+.player-ui .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
+.player-ui .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
+.player-ui .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
+.player-ui .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
+.player-ui .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
+.player-ui .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
+.player-ui .ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
+.player-ui .ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
+.player-ui .ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
+.player-ui .ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
+.player-ui .ui-icon-arrow-4 { background-position: 0 -80px; }
+.player-ui .ui-icon-arrow-4-diag { background-position: -16px -80px; }
+.player-ui .ui-icon-extlink { background-position: -32px -80px; }
+.player-ui .ui-icon-newwin { background-position: -48px -80px; }
+.player-ui .ui-icon-refresh { background-position: -64px -80px; }
+.player-ui .ui-icon-shuffle { background-position: -80px -80px; }
+.player-ui .ui-icon-transfer-e-w { background-position: -96px -80px; }
+.player-ui .ui-icon-transferthick-e-w { background-position: -112px -80px; }
+.player-ui .ui-icon-folder-collapsed { background-position: 0 -96px; }
+.player-ui .ui-icon-folder-open { background-position: -16px -96px; }
+.player-ui .ui-icon-document { background-position: -32px -96px; }
+.player-ui .ui-icon-document-b { background-position: -48px -96px; }
+.player-ui .ui-icon-note { background-position: -64px -96px; }
+.player-ui .ui-icon-mail-closed { background-position: -80px -96px; }
+.player-ui .ui-icon-mail-open { background-position: -96px -96px; }
+.player-ui .ui-icon-suitcase { background-position: -112px -96px; }
+.player-ui .ui-icon-comment { background-position: -128px -96px; }
+.player-ui .ui-icon-person { background-position: -144px -96px; }
+.player-ui .ui-icon-print { background-position: -160px -96px; }
+.player-ui .ui-icon-trash { background-position: -176px -96px; }
+.player-ui .ui-icon-locked { background-position: -192px -96px; }
+.player-ui .ui-icon-unlocked { background-position: -208px -96px; }
+.player-ui .ui-icon-bookmark { background-position: -224px -96px; }
+.player-ui .ui-icon-tag { background-position: -240px -96px; }
+.player-ui .ui-icon-home { background-position: 0 -112px; }
+.player-ui .ui-icon-flag { background-position: -16px -112px; }
+.player-ui .ui-icon-calendar { background-position: -32px -112px; }
+.player-ui .ui-icon-cart { background-position: -48px -112px; }
+.player-ui .ui-icon-pencil { background-position: -64px -112px; }
+.player-ui .ui-icon-clock { background-position: -80px -112px; }
+.player-ui .ui-icon-disk { background-position: -96px -112px; }
+.player-ui .ui-icon-calculator { background-position: -112px -112px; }
+.player-ui .ui-icon-zoomin { background-position: -128px -112px; }
+.player-ui .ui-icon-zoomout { background-position: -144px -112px; }
+.player-ui .ui-icon-search { background-position: -160px -112px; }
+.player-ui .ui-icon-wrench { background-position: -176px -112px; }
+.player-ui .ui-icon-gear { background-position: -192px -112px; }
+.player-ui .ui-icon-heart { background-position: -208px -112px; }
+.player-ui .ui-icon-star { background-position: -224px -112px; }
+.player-ui .ui-icon-link { background-position: -240px -112px; }
+.player-ui .ui-icon-cancel { background-position: 0 -128px; }
+.player-ui .ui-icon-plus { background-position: -16px -128px; }
+.player-ui .ui-icon-plusthick { background-position: -32px -128px; }
+.player-ui .ui-icon-minus { background-position: -48px -128px; }
+.player-ui .ui-icon-minusthick { background-position: -64px -128px; }
+.player-ui .ui-icon-close { background-position: -80px -128px; }
+.player-ui .ui-icon-closethick { background-position: -96px -128px; }
+.player-ui .ui-icon-key { background-position: -112px -128px; }
+.player-ui .ui-icon-lightbulb { background-position: -128px -128px; }
+.player-ui .ui-icon-scissors { background-position: -144px -128px; }
+.player-ui .ui-icon-clipboard { background-position: -160px -128px; }
+.player-ui .ui-icon-copy { background-position: -176px -128px; }
+.player-ui .ui-icon-contact { background-position: -192px -128px; }
+.player-ui .ui-icon-image { background-position: -208px -128px; }
+.player-ui .ui-icon-video { background-position: -224px -128px; }
+.player-ui .ui-icon-script { background-position: -240px -128px; }
+.player-ui .ui-icon-alert { background-position: 0 -144px; }
+.player-ui .ui-icon-info { background-position: -16px -144px; }
+.player-ui .ui-icon-notice { background-position: -32px -144px; }
+.player-ui .ui-icon-help { background-position: -48px -144px; }
+.player-ui .ui-icon-check { background-position: -64px -144px; }
+.player-ui .ui-icon-bullet { background-position: -80px -144px; }
+.player-ui .ui-icon-radio-off { background-position: -96px -144px; }
+.player-ui .ui-icon-radio-on { background-position: -112px -144px; }
+.player-ui .ui-icon-pin-w { background-position: -128px -144px; }
+.player-ui .ui-icon-pin-s { background-position: -144px -144px; }
+.player-ui .ui-icon-play { background-position: 0 -160px; }
+.player-ui .ui-icon-pause { background-position: -16px -160px; }
+.player-ui .ui-icon-seek-next { background-position: -32px -160px; }
+.player-ui .ui-icon-seek-prev { background-position: -48px -160px; }
+.player-ui .ui-icon-seek-end { background-position: -64px -160px; }
+.player-ui .ui-icon-seek-start { background-position: -80px -160px; }
+/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
+.player-ui .ui-icon-seek-first { background-position: -80px -160px; }
+.player-ui .ui-icon-stop { background-position: -96px -160px; }
+.player-ui .ui-icon-eject { background-position: -112px -160px; }
+.player-ui .ui-icon-volume-off { background-position: -128px -160px; }
+.player-ui .ui-icon-volume-on { background-position: -144px -160px; }
+.player-ui .ui-icon-power { background-position: 0 -176px; }
+.player-ui .ui-icon-signal-diag { background-position: -16px -176px; }
+.player-ui .ui-icon-signal { background-position: -32px -176px; }
+.player-ui .ui-icon-battery-0 { background-position: -48px -176px; }
+.player-ui .ui-icon-battery-1 { background-position: -64px -176px; }
+.player-ui .ui-icon-battery-2 { background-position: -80px -176px; }
+.player-ui .ui-icon-battery-3 { background-position: -96px -176px; }
+.player-ui .ui-icon-circle-plus { background-position: 0 -192px; }
+.player-ui .ui-icon-circle-minus { background-position: -16px -192px; }
+.player-ui .ui-icon-circle-close { background-position: -32px -192px; }
+.player-ui .ui-icon-circle-triangle-e { background-position: -48px -192px; }
+.player-ui .ui-icon-circle-triangle-s { background-position: -64px -192px; }
+.player-ui .ui-icon-circle-triangle-w { background-position: -80px -192px; }
+.player-ui .ui-icon-circle-triangle-n { background-position: -96px -192px; }
+.player-ui .ui-icon-circle-arrow-e { background-position: -112px -192px; }
+.player-ui .ui-icon-circle-arrow-s { background-position: -128px -192px; }
+.player-ui .ui-icon-circle-arrow-w { background-position: -144px -192px; }
+.player-ui .ui-icon-circle-arrow-n { background-position: -160px -192px; }
+.player-ui .ui-icon-circle-zoomin { background-position: -176px -192px; }
+.player-ui .ui-icon-circle-zoomout { background-position: -192px -192px; }
+.player-ui .ui-icon-circle-check { background-position: -208px -192px; }
+.player-ui .ui-icon-circlesmall-plus { background-position: 0 -208px; }
+.player-ui .ui-icon-circlesmall-minus { background-position: -16px -208px; }
+.player-ui .ui-icon-circlesmall-close { background-position: -32px -208px; }
+.player-ui .ui-icon-squaresmall-plus { background-position: -48px -208px; }
+.player-ui .ui-icon-squaresmall-minus { background-position: -64px -208px; }
+.player-ui .ui-icon-squaresmall-close { background-position: -80px -208px; }
+.player-ui .ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
+.player-ui .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
+.player-ui .ui-icon-grip-solid-vertical { background-position: -32px -224px; }
+.player-ui .ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
+.player-ui .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
+.player-ui .ui-icon-grip-diagonal-se { background-position: -80px -224px; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Corner radius */
+.player-ui .ui-corner-all, .player-ui .ui-corner-top, .player-ui .ui-corner-left, .player-ui .ui-corner-tl { -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; -khtml-border-top-left-radius: 6px; border-top-left-radius: 6px; }
+.player-ui .ui-corner-all, .player-ui .ui-corner-top, .player-ui .ui-corner-right, .player-ui .ui-corner-tr { -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; -khtml-border-top-right-radius: 6px; border-top-right-radius: 6px; }
+.player-ui .ui-corner-all, .player-ui .ui-corner-bottom, .player-ui .ui-corner-left, .player-ui .ui-corner-bl { -moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; -khtml-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px; }
+.player-ui .ui-corner-all, .player-ui .ui-corner-bottom, .player-ui .ui-corner-right, .player-ui .ui-corner-br { -moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; -khtml-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px; }
+
+/* Overlays */
+.player-ui .ui-widget-overlay { background: #5c5c5c url(images/ui-bg_flat_50_5c5c5c_40x100.png) 50% 50% repeat-x; opacity: .80;filter:Alpha(Opacity=80); }
+.player-ui .ui-widget-shadow { margin: -7px 0 0 -7px; padding: 7px; background: #cccccc url(images/ui-bg_flat_30_cccccc_40x100.png) 50% 50% repeat-x; opacity: .60;filter:Alpha(Opacity=60); -moz-border-radius: 8px; -khtml-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/*
+ * jQuery UI Resizable 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Resizable#theming
+ */
+.player-ui .ui-resizable { position: relative;}
+.player-ui .ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block; }
+.player-ui .ui-resizable-disabled .ui-resizable-handle, .player-ui .ui-resizable-autohide .ui-resizable-handle { display: none; }
+.player-ui .ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
+.player-ui .ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
+.player-ui .ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
+.player-ui .ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
+.player-ui .ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
+.player-ui .ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
+.player-ui .ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
+.player-ui .ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/*
+ * jQuery UI Selectable 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Selectable#theming
+ */
+.player-ui .ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }
+/*
+ * jQuery UI Accordion 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Accordion#theming
+ */
+/* IE/Win - Fix animation bug - #4615 */
+.player-ui .ui-accordion { width: 100%; }
+.player-ui .ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
+.player-ui .ui-accordion .ui-accordion-li-fix { display: inline; }
+.player-ui .ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
+.player-ui .ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; }
+.player-ui .ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; }
+.player-ui .ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
+.player-ui .ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; }
+.player-ui .ui-accordion .ui-accordion-content-active { display: block; }
+/*
+ * jQuery UI Autocomplete 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Autocomplete#theming
+ */
+.player-ui .ui-autocomplete { position: absolute; cursor: default; }	
+
+/* workarounds */
+* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
+
+/*
+ * jQuery UI Menu 1.8.18
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Menu#theming
+ */
+.player-ui .ui-menu {
+	list-style:none;
+	padding: 2px;
+	margin: 0;
+	display:block;
+	float: left;
+}
+.player-ui .ui-menu .ui-menu {
+	margin-top: -3px;
+}
+.player-ui .ui-menu .ui-menu-item {
+	margin:0;
+	padding: 0;
+	zoom: 1;
+	float: left;
+	clear: left;
+	width: 100%;
+}
+.player-ui .ui-menu .ui-menu-item a {
+	text-decoration:none;
+	display:block;
+	padding:.2em .4em;
+	line-height:1.5;
+	zoom:1;
+}
+.player-ui .ui-menu .ui-menu-item a.ui-state-hover,
+.player-ui .ui-menu .ui-menu-item a.ui-state-active {
+	font-weight: normal;
+	margin: -1px;
+}
+/*
+ * jQuery UI Button 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Button#theming
+ */
+.player-ui .ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: hidden; *overflow: visible; } /* the overflow property removes extra width in IE */
+.player-ui .ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
+button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
+.player-ui .ui-button-icons-only { width: 3.4em; } 
+button.ui-button-icons-only { width: 3.7em; } 
+
+/*button text element */
+.player-ui .ui-button .ui-button-text { display: block; line-height: 1.4;  }
+.player-ui .ui-button-text-only .ui-button-text { padding: .4em 1em; }
+.player-ui .ui-button-icon-only .ui-button-text, .player-ui .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
+.player-ui .ui-button-text-icon-primary .ui-button-text, .player-ui .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
+.player-ui .ui-button-text-icon-secondary .ui-button-text, .player-ui .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }
+.player-ui .ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }
+/* no icon support for input elements, provide padding by default */
+input.ui-button { padding: .4em 1em; }
+
+/*button icon element(s) */
+.player-ui .ui-button-icon-only .ui-icon, .player-ui .ui-button-text-icon-primary .ui-icon, .player-ui .ui-button-text-icon-secondary .ui-icon, .player-ui .ui-button-text-icons .ui-icon, .player-ui .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
+.player-ui .ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
+.player-ui .ui-button-text-icon-primary .ui-button-icon-primary, .player-ui .ui-button-text-icons .ui-button-icon-primary, .player-ui .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
+.player-ui .ui-button-text-icon-secondary .ui-button-icon-secondary, .player-ui .ui-button-text-icons .ui-button-icon-secondary, .player-ui .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
+.player-ui .ui-button-text-icons .ui-button-icon-secondary, .player-ui .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
+
+/*button sets*/
+.player-ui .ui-buttonset { margin-right: 7px; }
+.player-ui .ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }
+
+/* workarounds */
+button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
+/*
+ * jQuery UI Dialog 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Dialog#theming
+ */
+.player-ui .ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; }
+.player-ui .ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative;  }
+.player-ui .ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; } 
+.player-ui .ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
+.player-ui .ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
+.player-ui .ui-dialog .ui-dialog-titlebar-close:hover, .player-ui .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
+.player-ui .ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
+.player-ui .ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
+.player-ui .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
+.player-ui .ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
+.player-ui .ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
+.player-ui .ui-draggable .ui-dialog-titlebar { cursor: move; }
+/*
+ * jQuery UI Slider 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Slider#theming
+ */
+.player-ui .ui-slider { position: relative; text-align: left; }
+.player-ui .ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
+.player-ui .ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
+
+.player-ui .ui-slider-horizontal { height: .8em; }
+.player-ui .ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
+.player-ui .ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
+.player-ui .ui-slider-horizontal .ui-slider-range-min { left: 0; }
+.player-ui .ui-slider-horizontal .ui-slider-range-max { right: 0; }
+
+.player-ui .ui-slider-vertical { width: .8em; height: 100px; }
+.player-ui .ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
+.player-ui .ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
+.player-ui .ui-slider-vertical .ui-slider-range-min { bottom: 0; }
+.player-ui .ui-slider-vertical .ui-slider-range-max { top: 0; }/*
+ * jQuery UI Tabs 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Tabs#theming
+ */
+.player-ui .ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
+.player-ui .ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
+.player-ui .ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
+.player-ui .ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }
+.player-ui .ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; }
+.player-ui .ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .player-ui .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .player-ui .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
+.player-ui .ui-tabs .ui-tabs-nav li a, .player-ui .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
+.player-ui .ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }
+.player-ui .ui-tabs .ui-tabs-hide { display: none !important; }
+/*
+ * jQuery UI Datepicker 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Datepicker#theming
+ */
+.player-ui .ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }
+.player-ui .ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
+.player-ui .ui-datepicker .ui-datepicker-prev, .player-ui .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
+.player-ui .ui-datepicker .ui-datepicker-prev-hover, .player-ui .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
+.player-ui .ui-datepicker .ui-datepicker-prev { left:2px; }
+.player-ui .ui-datepicker .ui-datepicker-next { right:2px; }
+.player-ui .ui-datepicker .ui-datepicker-prev-hover { left:1px; }
+.player-ui .ui-datepicker .ui-datepicker-next-hover { right:1px; }
+.player-ui .ui-datepicker .ui-datepicker-prev span, .player-ui .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px;  }
+.player-ui .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
+.player-ui .ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
+.player-ui .ui-datepicker select.ui-datepicker-month-year {width: 100%;}
+.player-ui .ui-datepicker select.ui-datepicker-month, 
+.player-ui .ui-datepicker select.ui-datepicker-year { width: 49%;}
+.player-ui .ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
+.player-ui .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0;  }
+.player-ui .ui-datepicker td { border: 0; padding: 1px; }
+.player-ui .ui-datepicker td span, .player-ui .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
+.player-ui .ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
+.player-ui .ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
+.player-ui .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
+
+/* with multiple calendars */
+.player-ui .ui-datepicker.ui-datepicker-multi { width:auto; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group { float:left; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
+.player-ui .ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
+.player-ui .ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
+.player-ui .ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
+.player-ui .ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
+.player-ui .ui-datepicker-row-break { clear:both; width:100%; font-size:0em; }
+
+/* RTL support */
+.player-ui .ui-datepicker-rtl { direction: rtl; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-group { float:right; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+
+/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
+.player-ui .ui-datepicker-cover {
+    display: none; /*sorry for IE5*/
+    display/**/: block; /*sorry for IE5*/
+    position: absolute; /*must have*/
+    z-index: -1; /*must have*/
+    filter: mask(); /*must have*/
+    top: -4px; /*must have*/
+    left: -4px; /*must have*/
+    width: 200px; /*must have*/
+    height: 200px; /*must have*/
+}/*
+ * jQuery UI Progressbar 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Progressbar#theming
+ */
+.player-ui .ui-progressbar { height:2em; text-align: left; overflow: hidden; }
+.player-ui .ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/jquery-ui/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png b/public/admin/js/osmplayer/jquery-ui/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png
new file mode 100644
index 0000000000000000000000000000000000000000..954e22dbd99e8c6dd7091335599abf2d10bf8003
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png b/public/admin/js/osmplayer/jquery-ui/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png
new file mode 100644
index 0000000000000000000000000000000000000000..64ece5707d91a6edf9fad4bfcce0c4dbcafcf58d
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/ui-lightness/images/ui-bg_flat_10_000000_40x100.png b/public/admin/js/osmplayer/jquery-ui/ui-lightness/images/ui-bg_flat_10_000000_40x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..abdc01082bf3534eafecc5819d28c9574d44ea89
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/ui-lightness/images/ui-bg_flat_10_000000_40x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png b/public/admin/js/osmplayer/jquery-ui/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png
new file mode 100644
index 0000000000000000000000000000000000000000..9b383f4d2eab09c0f2a739d6b232c32934bc620b
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png b/public/admin/js/osmplayer/jquery-ui/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png
new file mode 100644
index 0000000000000000000000000000000000000000..a23baad25b1d1ff36e17361eab24271f2e9b7326
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png b/public/admin/js/osmplayer/jquery-ui/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png
new file mode 100644
index 0000000000000000000000000000000000000000..42ccba269b6e91bef12ad0fa18be651b5ef0ee68
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png b/public/admin/js/osmplayer/jquery-ui/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..39d5824d6af5456f1e89fc7847ea3599ea5fd815
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png b/public/admin/js/osmplayer/jquery-ui/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..f1273672d253263b7564e9e21d69d7d9d0b337d9
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png b/public/admin/js/osmplayer/jquery-ui/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..359397acffdd84bd102f0e8a951c9d744f278db5
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/ui-lightness/images/ui-icons_222222_256x240.png b/public/admin/js/osmplayer/jquery-ui/ui-lightness/images/ui-icons_222222_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..b273ff111d219c9b9a8b96d57683d0075fb7871a
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/ui-lightness/images/ui-icons_222222_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/ui-lightness/images/ui-icons_228ef1_256x240.png b/public/admin/js/osmplayer/jquery-ui/ui-lightness/images/ui-icons_228ef1_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..a641a371afa0fbb08ba599dc7ddf14b9bfc3c84f
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/ui-lightness/images/ui-icons_228ef1_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/ui-lightness/images/ui-icons_ef8c08_256x240.png b/public/admin/js/osmplayer/jquery-ui/ui-lightness/images/ui-icons_ef8c08_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..85e63e9f604ce042d59eb06a8428eeb7cb7896c9
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/ui-lightness/images/ui-icons_ef8c08_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/ui-lightness/images/ui-icons_ffd27a_256x240.png b/public/admin/js/osmplayer/jquery-ui/ui-lightness/images/ui-icons_ffd27a_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..e117effa3dca24e7978cfc5f8b967f661e81044f
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/ui-lightness/images/ui-icons_ffd27a_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/ui-lightness/images/ui-icons_ffffff_256x240.png b/public/admin/js/osmplayer/jquery-ui/ui-lightness/images/ui-icons_ffffff_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..42f8f992c727ddaa617da224a522e463df690387
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/ui-lightness/images/ui-icons_ffffff_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/ui-lightness/jquery-ui-1.8.18.custom.css b/public/admin/js/osmplayer/jquery-ui/ui-lightness/jquery-ui-1.8.18.custom.css
new file mode 100644
index 0000000000000000000000000000000000000000..6cde85b6e111699e44931e572cf851ad4fd58e20
--- /dev/null
+++ b/public/admin/js/osmplayer/jquery-ui/ui-lightness/jquery-ui-1.8.18.custom.css
@@ -0,0 +1,565 @@
+/*
+ * jQuery UI CSS Framework 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ */
+
+/* Layout helpers
+----------------------------------*/
+.player-ui .ui-helper-hidden { display: none; }
+.player-ui .ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
+.player-ui .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
+.player-ui .ui-helper-clearfix:before, .player-ui .ui-helper-clearfix:after { content: ""; display: table; }
+.player-ui .ui-helper-clearfix:after { clear: both; }
+.player-ui .ui-helper-clearfix { zoom: 1; }
+.player-ui .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
+
+
+/* Interaction Cues
+----------------------------------*/
+.player-ui .ui-state-disabled { cursor: default !important; }
+
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.player-ui .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+.player-ui .ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
+
+
+/*
+ * jQuery UI CSS Framework 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ *
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS,%20Tahoma,%20Verdana,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=f6a828&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=35&borderColorHeader=e78f08&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=03_highlight_soft.png&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f6f6f6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=100&borderColorDefault=cccccc&fcDefault=1c94c4&iconColorDefault=ef8c08&bgColorHover=fdf5ce&bgTextureHover=02_glass.png&bgImgOpacityHover=100&borderColorHover=fbcb09&fcHover=c77405&iconColorHover=ef8c08&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=fbd850&fcActive=eb8f00&iconColorActive=ef8c08&bgColorHighlight=ffe45c&bgTextureHighlight=03_highlight_soft.png&bgImgOpacityHighlight=75&borderColorHighlight=fed22f&fcHighlight=363636&iconColorHighlight=228ef1&bgColorError=b81900&bgTextureError=08_diagonals_thick.png&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=08_diagonals_thick.png&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=01_flat.png&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px
+ */
+
+
+/* Component containers
+----------------------------------*/
+.player-ui .ui-widget { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1.1em; }
+.player-ui .ui-widget .ui-widget { font-size: 1em; }
+.player-ui .ui-widget input, .player-ui .ui-widget select, .player-ui .ui-widget textarea, .player-ui .ui-widget button { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1em; }
+.player-ui .ui-widget-content { border: 1px solid #dddddd; background: #eeeeee url(images/ui-bg_highlight-soft_100_eeeeee_1x100.png) 50% top repeat-x; color: #333333; }
+.player-ui .ui-widget-content a { color: #333333; }
+.player-ui .ui-widget-header { border: 1px solid #e78f08; background: #f6a828 url(images/ui-bg_gloss-wave_35_f6a828_500x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; }
+.player-ui .ui-widget-header a { color: #ffffff; }
+
+/* Interaction states
+----------------------------------*/
+.player-ui .ui-state-default, .player-ui .ui-widget-content .ui-state-default, .player-ui .ui-widget-header .ui-state-default { border: 1px solid #cccccc; background: #f6f6f6 url(images/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #1c94c4; }
+.player-ui .ui-state-default a, .player-ui .ui-state-default a:link, .player-ui .ui-state-default a:visited { color: #1c94c4; text-decoration: none; }
+.player-ui .ui-state-hover, .player-ui .ui-widget-content .ui-state-hover, .player-ui .ui-widget-header .ui-state-hover, .player-ui .ui-state-focus, .player-ui .ui-widget-content .ui-state-focus, .player-ui .ui-widget-header .ui-state-focus { border: 1px solid #fbcb09; background: #fdf5ce url(images/ui-bg_glass_100_fdf5ce_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #c77405; }
+.player-ui .ui-state-hover a, .player-ui .ui-state-hover a:hover { color: #c77405; text-decoration: none; }
+.player-ui .ui-state-active, .player-ui .ui-widget-content .ui-state-active, .player-ui .ui-widget-header .ui-state-active { border: 1px solid #fbd850; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #eb8f00; }
+.player-ui .ui-state-active a, .player-ui .ui-state-active a:link, .player-ui .ui-state-active a:visited { color: #eb8f00; text-decoration: none; }
+.player-ui .ui-widget :active { outline: none; }
+
+/* Interaction Cues
+----------------------------------*/
+.player-ui .ui-state-highlight, .player-ui .ui-widget-content .ui-state-highlight, .player-ui .ui-widget-header .ui-state-highlight  {border: 1px solid #fed22f; background: #ffe45c url(images/ui-bg_highlight-soft_75_ffe45c_1x100.png) 50% top repeat-x; color: #363636; }
+.player-ui .ui-state-highlight a, .player-ui .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
+.player-ui .ui-state-error, .player-ui .ui-widget-content .ui-state-error, .player-ui .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #b81900 url(images/ui-bg_diagonals-thick_18_b81900_40x40.png) 50% 50% repeat; color: #ffffff; }
+.player-ui .ui-state-error a, .player-ui .ui-widget-content .ui-state-error a, .player-ui .ui-widget-header .ui-state-error a { color: #ffffff; }
+.player-ui .ui-state-error-text, .player-ui .ui-widget-content .ui-state-error-text, .player-ui .ui-widget-header .ui-state-error-text { color: #ffffff; }
+.player-ui .ui-priority-primary, .player-ui .ui-widget-content .ui-priority-primary, .player-ui .ui-widget-header .ui-priority-primary { font-weight: bold; }
+.player-ui .ui-priority-secondary, .player-ui .ui-widget-content .ui-priority-secondary,  .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
+.player-ui .ui-state-disabled, .player-ui .ui-widget-content .ui-state-disabled, .player-ui .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.player-ui .ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); }
+.player-ui .ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
+.player-ui .ui-widget-header .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); }
+.player-ui .ui-state-default .ui-icon { background-image: url(images/ui-icons_ef8c08_256x240.png); }
+.player-ui .ui-state-hover .ui-icon, .player-ui .ui-state-focus .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); }
+.player-ui .ui-state-active .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); }
+.player-ui .ui-state-highlight .ui-icon {background-image: url(images/ui-icons_228ef1_256x240.png); }
+.player-ui .ui-state-error .ui-icon, .player-ui .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_ffd27a_256x240.png); }
+
+/* positioning */
+.player-ui .ui-icon-carat-1-n { background-position: 0 0; }
+.player-ui .ui-icon-carat-1-ne { background-position: -16px 0; }
+.player-ui .ui-icon-carat-1-e { background-position: -32px 0; }
+.player-ui .ui-icon-carat-1-se { background-position: -48px 0; }
+.player-ui .ui-icon-carat-1-s { background-position: -64px 0; }
+.player-ui .ui-icon-carat-1-sw { background-position: -80px 0; }
+.player-ui .ui-icon-carat-1-w { background-position: -96px 0; }
+.player-ui .ui-icon-carat-1-nw { background-position: -112px 0; }
+.player-ui .ui-icon-carat-2-n-s { background-position: -128px 0; }
+.player-ui .ui-icon-carat-2-e-w { background-position: -144px 0; }
+.player-ui .ui-icon-triangle-1-n { background-position: 0 -16px; }
+.player-ui .ui-icon-triangle-1-ne { background-position: -16px -16px; }
+.player-ui .ui-icon-triangle-1-e { background-position: -32px -16px; }
+.player-ui .ui-icon-triangle-1-se { background-position: -48px -16px; }
+.player-ui .ui-icon-triangle-1-s { background-position: -64px -16px; }
+.player-ui .ui-icon-triangle-1-sw { background-position: -80px -16px; }
+.player-ui .ui-icon-triangle-1-w { background-position: -96px -16px; }
+.player-ui .ui-icon-triangle-1-nw { background-position: -112px -16px; }
+.player-ui .ui-icon-triangle-2-n-s { background-position: -128px -16px; }
+.player-ui .ui-icon-triangle-2-e-w { background-position: -144px -16px; }
+.player-ui .ui-icon-arrow-1-n { background-position: 0 -32px; }
+.player-ui .ui-icon-arrow-1-ne { background-position: -16px -32px; }
+.player-ui .ui-icon-arrow-1-e { background-position: -32px -32px; }
+.player-ui .ui-icon-arrow-1-se { background-position: -48px -32px; }
+.player-ui .ui-icon-arrow-1-s { background-position: -64px -32px; }
+.player-ui .ui-icon-arrow-1-sw { background-position: -80px -32px; }
+.player-ui .ui-icon-arrow-1-w { background-position: -96px -32px; }
+.player-ui .ui-icon-arrow-1-nw { background-position: -112px -32px; }
+.player-ui .ui-icon-arrow-2-n-s { background-position: -128px -32px; }
+.player-ui .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
+.player-ui .ui-icon-arrow-2-e-w { background-position: -160px -32px; }
+.player-ui .ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
+.player-ui .ui-icon-arrowstop-1-n { background-position: -192px -32px; }
+.player-ui .ui-icon-arrowstop-1-e { background-position: -208px -32px; }
+.player-ui .ui-icon-arrowstop-1-s { background-position: -224px -32px; }
+.player-ui .ui-icon-arrowstop-1-w { background-position: -240px -32px; }
+.player-ui .ui-icon-arrowthick-1-n { background-position: 0 -48px; }
+.player-ui .ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
+.player-ui .ui-icon-arrowthick-1-e { background-position: -32px -48px; }
+.player-ui .ui-icon-arrowthick-1-se { background-position: -48px -48px; }
+.player-ui .ui-icon-arrowthick-1-s { background-position: -64px -48px; }
+.player-ui .ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
+.player-ui .ui-icon-arrowthick-1-w { background-position: -96px -48px; }
+.player-ui .ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
+.player-ui .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
+.player-ui .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
+.player-ui .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
+.player-ui .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
+.player-ui .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
+.player-ui .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
+.player-ui .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
+.player-ui .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
+.player-ui .ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
+.player-ui .ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
+.player-ui .ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
+.player-ui .ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
+.player-ui .ui-icon-arrow-4 { background-position: 0 -80px; }
+.player-ui .ui-icon-arrow-4-diag { background-position: -16px -80px; }
+.player-ui .ui-icon-extlink { background-position: -32px -80px; }
+.player-ui .ui-icon-newwin { background-position: -48px -80px; }
+.player-ui .ui-icon-refresh { background-position: -64px -80px; }
+.player-ui .ui-icon-shuffle { background-position: -80px -80px; }
+.player-ui .ui-icon-transfer-e-w { background-position: -96px -80px; }
+.player-ui .ui-icon-transferthick-e-w { background-position: -112px -80px; }
+.player-ui .ui-icon-folder-collapsed { background-position: 0 -96px; }
+.player-ui .ui-icon-folder-open { background-position: -16px -96px; }
+.player-ui .ui-icon-document { background-position: -32px -96px; }
+.player-ui .ui-icon-document-b { background-position: -48px -96px; }
+.player-ui .ui-icon-note { background-position: -64px -96px; }
+.player-ui .ui-icon-mail-closed { background-position: -80px -96px; }
+.player-ui .ui-icon-mail-open { background-position: -96px -96px; }
+.player-ui .ui-icon-suitcase { background-position: -112px -96px; }
+.player-ui .ui-icon-comment { background-position: -128px -96px; }
+.player-ui .ui-icon-person { background-position: -144px -96px; }
+.player-ui .ui-icon-print { background-position: -160px -96px; }
+.player-ui .ui-icon-trash { background-position: -176px -96px; }
+.player-ui .ui-icon-locked { background-position: -192px -96px; }
+.player-ui .ui-icon-unlocked { background-position: -208px -96px; }
+.player-ui .ui-icon-bookmark { background-position: -224px -96px; }
+.player-ui .ui-icon-tag { background-position: -240px -96px; }
+.player-ui .ui-icon-home { background-position: 0 -112px; }
+.player-ui .ui-icon-flag { background-position: -16px -112px; }
+.player-ui .ui-icon-calendar { background-position: -32px -112px; }
+.player-ui .ui-icon-cart { background-position: -48px -112px; }
+.player-ui .ui-icon-pencil { background-position: -64px -112px; }
+.player-ui .ui-icon-clock { background-position: -80px -112px; }
+.player-ui .ui-icon-disk { background-position: -96px -112px; }
+.player-ui .ui-icon-calculator { background-position: -112px -112px; }
+.player-ui .ui-icon-zoomin { background-position: -128px -112px; }
+.player-ui .ui-icon-zoomout { background-position: -144px -112px; }
+.player-ui .ui-icon-search { background-position: -160px -112px; }
+.player-ui .ui-icon-wrench { background-position: -176px -112px; }
+.player-ui .ui-icon-gear { background-position: -192px -112px; }
+.player-ui .ui-icon-heart { background-position: -208px -112px; }
+.player-ui .ui-icon-star { background-position: -224px -112px; }
+.player-ui .ui-icon-link { background-position: -240px -112px; }
+.player-ui .ui-icon-cancel { background-position: 0 -128px; }
+.player-ui .ui-icon-plus { background-position: -16px -128px; }
+.player-ui .ui-icon-plusthick { background-position: -32px -128px; }
+.player-ui .ui-icon-minus { background-position: -48px -128px; }
+.player-ui .ui-icon-minusthick { background-position: -64px -128px; }
+.player-ui .ui-icon-close { background-position: -80px -128px; }
+.player-ui .ui-icon-closethick { background-position: -96px -128px; }
+.player-ui .ui-icon-key { background-position: -112px -128px; }
+.player-ui .ui-icon-lightbulb { background-position: -128px -128px; }
+.player-ui .ui-icon-scissors { background-position: -144px -128px; }
+.player-ui .ui-icon-clipboard { background-position: -160px -128px; }
+.player-ui .ui-icon-copy { background-position: -176px -128px; }
+.player-ui .ui-icon-contact { background-position: -192px -128px; }
+.player-ui .ui-icon-image { background-position: -208px -128px; }
+.player-ui .ui-icon-video { background-position: -224px -128px; }
+.player-ui .ui-icon-script { background-position: -240px -128px; }
+.player-ui .ui-icon-alert { background-position: 0 -144px; }
+.player-ui .ui-icon-info { background-position: -16px -144px; }
+.player-ui .ui-icon-notice { background-position: -32px -144px; }
+.player-ui .ui-icon-help { background-position: -48px -144px; }
+.player-ui .ui-icon-check { background-position: -64px -144px; }
+.player-ui .ui-icon-bullet { background-position: -80px -144px; }
+.player-ui .ui-icon-radio-off { background-position: -96px -144px; }
+.player-ui .ui-icon-radio-on { background-position: -112px -144px; }
+.player-ui .ui-icon-pin-w { background-position: -128px -144px; }
+.player-ui .ui-icon-pin-s { background-position: -144px -144px; }
+.player-ui .ui-icon-play { background-position: 0 -160px; }
+.player-ui .ui-icon-pause { background-position: -16px -160px; }
+.player-ui .ui-icon-seek-next { background-position: -32px -160px; }
+.player-ui .ui-icon-seek-prev { background-position: -48px -160px; }
+.player-ui .ui-icon-seek-end { background-position: -64px -160px; }
+.player-ui .ui-icon-seek-start { background-position: -80px -160px; }
+/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
+.player-ui .ui-icon-seek-first { background-position: -80px -160px; }
+.player-ui .ui-icon-stop { background-position: -96px -160px; }
+.player-ui .ui-icon-eject { background-position: -112px -160px; }
+.player-ui .ui-icon-volume-off { background-position: -128px -160px; }
+.player-ui .ui-icon-volume-on { background-position: -144px -160px; }
+.player-ui .ui-icon-power { background-position: 0 -176px; }
+.player-ui .ui-icon-signal-diag { background-position: -16px -176px; }
+.player-ui .ui-icon-signal { background-position: -32px -176px; }
+.player-ui .ui-icon-battery-0 { background-position: -48px -176px; }
+.player-ui .ui-icon-battery-1 { background-position: -64px -176px; }
+.player-ui .ui-icon-battery-2 { background-position: -80px -176px; }
+.player-ui .ui-icon-battery-3 { background-position: -96px -176px; }
+.player-ui .ui-icon-circle-plus { background-position: 0 -192px; }
+.player-ui .ui-icon-circle-minus { background-position: -16px -192px; }
+.player-ui .ui-icon-circle-close { background-position: -32px -192px; }
+.player-ui .ui-icon-circle-triangle-e { background-position: -48px -192px; }
+.player-ui .ui-icon-circle-triangle-s { background-position: -64px -192px; }
+.player-ui .ui-icon-circle-triangle-w { background-position: -80px -192px; }
+.player-ui .ui-icon-circle-triangle-n { background-position: -96px -192px; }
+.player-ui .ui-icon-circle-arrow-e { background-position: -112px -192px; }
+.player-ui .ui-icon-circle-arrow-s { background-position: -128px -192px; }
+.player-ui .ui-icon-circle-arrow-w { background-position: -144px -192px; }
+.player-ui .ui-icon-circle-arrow-n { background-position: -160px -192px; }
+.player-ui .ui-icon-circle-zoomin { background-position: -176px -192px; }
+.player-ui .ui-icon-circle-zoomout { background-position: -192px -192px; }
+.player-ui .ui-icon-circle-check { background-position: -208px -192px; }
+.player-ui .ui-icon-circlesmall-plus { background-position: 0 -208px; }
+.player-ui .ui-icon-circlesmall-minus { background-position: -16px -208px; }
+.player-ui .ui-icon-circlesmall-close { background-position: -32px -208px; }
+.player-ui .ui-icon-squaresmall-plus { background-position: -48px -208px; }
+.player-ui .ui-icon-squaresmall-minus { background-position: -64px -208px; }
+.player-ui .ui-icon-squaresmall-close { background-position: -80px -208px; }
+.player-ui .ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
+.player-ui .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
+.player-ui .ui-icon-grip-solid-vertical { background-position: -32px -224px; }
+.player-ui .ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
+.player-ui .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
+.player-ui .ui-icon-grip-diagonal-se { background-position: -80px -224px; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Corner radius */
+.player-ui .ui-corner-all, .player-ui .ui-corner-top, .player-ui .ui-corner-left, .player-ui .ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -khtml-border-top-left-radius: 4px; border-top-left-radius: 4px; }
+.player-ui .ui-corner-all, .player-ui .ui-corner-top, .player-ui .ui-corner-right, .player-ui .ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; -khtml-border-top-right-radius: 4px; border-top-right-radius: 4px; }
+.player-ui .ui-corner-all, .player-ui .ui-corner-bottom, .player-ui .ui-corner-left, .player-ui .ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; -khtml-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }
+.player-ui .ui-corner-all, .player-ui .ui-corner-bottom, .player-ui .ui-corner-right, .player-ui .ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; -khtml-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
+
+/* Overlays */
+.player-ui .ui-widget-overlay { background: #666666 url(images/ui-bg_diagonals-thick_20_666666_40x40.png) 50% 50% repeat; opacity: .50;filter:Alpha(Opacity=50); }
+.player-ui .ui-widget-shadow { margin: -5px 0 0 -5px; padding: 5px; background: #000000 url(images/ui-bg_flat_10_000000_40x100.png) 50% 50% repeat-x; opacity: .20;filter:Alpha(Opacity=20); -moz-border-radius: 5px; -khtml-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; }/*
+ * jQuery UI Resizable 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Resizable#theming
+ */
+.player-ui .ui-resizable { position: relative;}
+.player-ui .ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block; }
+.player-ui .ui-resizable-disabled .ui-resizable-handle, .player-ui .ui-resizable-autohide .ui-resizable-handle { display: none; }
+.player-ui .ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
+.player-ui .ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
+.player-ui .ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
+.player-ui .ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
+.player-ui .ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
+.player-ui .ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
+.player-ui .ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
+.player-ui .ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/*
+ * jQuery UI Selectable 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Selectable#theming
+ */
+.player-ui .ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }
+/*
+ * jQuery UI Accordion 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Accordion#theming
+ */
+/* IE/Win - Fix animation bug - #4615 */
+.player-ui .ui-accordion { width: 100%; }
+.player-ui .ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
+.player-ui .ui-accordion .ui-accordion-li-fix { display: inline; }
+.player-ui .ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
+.player-ui .ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; }
+.player-ui .ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; }
+.player-ui .ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
+.player-ui .ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; }
+.player-ui .ui-accordion .ui-accordion-content-active { display: block; }
+/*
+ * jQuery UI Autocomplete 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Autocomplete#theming
+ */
+.player-ui .ui-autocomplete { position: absolute; cursor: default; }	
+
+/* workarounds */
+* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
+
+/*
+ * jQuery UI Menu 1.8.18
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Menu#theming
+ */
+.player-ui .ui-menu {
+	list-style:none;
+	padding: 2px;
+	margin: 0;
+	display:block;
+	float: left;
+}
+.player-ui .ui-menu .ui-menu {
+	margin-top: -3px;
+}
+.player-ui .ui-menu .ui-menu-item {
+	margin:0;
+	padding: 0;
+	zoom: 1;
+	float: left;
+	clear: left;
+	width: 100%;
+}
+.player-ui .ui-menu .ui-menu-item a {
+	text-decoration:none;
+	display:block;
+	padding:.2em .4em;
+	line-height:1.5;
+	zoom:1;
+}
+.player-ui .ui-menu .ui-menu-item a.ui-state-hover,
+.player-ui .ui-menu .ui-menu-item a.ui-state-active {
+	font-weight: normal;
+	margin: -1px;
+}
+/*
+ * jQuery UI Button 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Button#theming
+ */
+.player-ui .ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: hidden; *overflow: visible; } /* the overflow property removes extra width in IE */
+.player-ui .ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
+button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
+.player-ui .ui-button-icons-only { width: 3.4em; } 
+button.ui-button-icons-only { width: 3.7em; } 
+
+/*button text element */
+.player-ui .ui-button .ui-button-text { display: block; line-height: 1.4;  }
+.player-ui .ui-button-text-only .ui-button-text { padding: .4em 1em; }
+.player-ui .ui-button-icon-only .ui-button-text, .player-ui .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
+.player-ui .ui-button-text-icon-primary .ui-button-text, .player-ui .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
+.player-ui .ui-button-text-icon-secondary .ui-button-text, .player-ui .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }
+.player-ui .ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }
+/* no icon support for input elements, provide padding by default */
+input.ui-button { padding: .4em 1em; }
+
+/*button icon element(s) */
+.player-ui .ui-button-icon-only .ui-icon, .player-ui .ui-button-text-icon-primary .ui-icon, .player-ui .ui-button-text-icon-secondary .ui-icon, .player-ui .ui-button-text-icons .ui-icon, .player-ui .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
+.player-ui .ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
+.player-ui .ui-button-text-icon-primary .ui-button-icon-primary, .player-ui .ui-button-text-icons .ui-button-icon-primary, .player-ui .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
+.player-ui .ui-button-text-icon-secondary .ui-button-icon-secondary, .player-ui .ui-button-text-icons .ui-button-icon-secondary, .player-ui .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
+.player-ui .ui-button-text-icons .ui-button-icon-secondary, .player-ui .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
+
+/*button sets*/
+.player-ui .ui-buttonset { margin-right: 7px; }
+.player-ui .ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }
+
+/* workarounds */
+button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
+/*
+ * jQuery UI Dialog 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Dialog#theming
+ */
+.player-ui .ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; }
+.player-ui .ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative;  }
+.player-ui .ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; } 
+.player-ui .ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
+.player-ui .ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
+.player-ui .ui-dialog .ui-dialog-titlebar-close:hover, .player-ui .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
+.player-ui .ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
+.player-ui .ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
+.player-ui .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
+.player-ui .ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
+.player-ui .ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
+.player-ui .ui-draggable .ui-dialog-titlebar { cursor: move; }
+/*
+ * jQuery UI Slider 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Slider#theming
+ */
+.player-ui .ui-slider { position: relative; text-align: left; }
+.player-ui .ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
+.player-ui .ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
+
+.player-ui .ui-slider-horizontal { height: .8em; }
+.player-ui .ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
+.player-ui .ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
+.player-ui .ui-slider-horizontal .ui-slider-range-min { left: 0; }
+.player-ui .ui-slider-horizontal .ui-slider-range-max { right: 0; }
+
+.player-ui .ui-slider-vertical { width: .8em; height: 100px; }
+.player-ui .ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
+.player-ui .ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
+.player-ui .ui-slider-vertical .ui-slider-range-min { bottom: 0; }
+.player-ui .ui-slider-vertical .ui-slider-range-max { top: 0; }/*
+ * jQuery UI Tabs 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Tabs#theming
+ */
+.player-ui .ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
+.player-ui .ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
+.player-ui .ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
+.player-ui .ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }
+.player-ui .ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; }
+.player-ui .ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .player-ui .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .player-ui .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
+.player-ui .ui-tabs .ui-tabs-nav li a, .player-ui .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
+.player-ui .ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }
+.player-ui .ui-tabs .ui-tabs-hide { display: none !important; }
+/*
+ * jQuery UI Datepicker 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Datepicker#theming
+ */
+.player-ui .ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }
+.player-ui .ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
+.player-ui .ui-datepicker .ui-datepicker-prev, .player-ui .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
+.player-ui .ui-datepicker .ui-datepicker-prev-hover, .player-ui .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
+.player-ui .ui-datepicker .ui-datepicker-prev { left:2px; }
+.player-ui .ui-datepicker .ui-datepicker-next { right:2px; }
+.player-ui .ui-datepicker .ui-datepicker-prev-hover { left:1px; }
+.player-ui .ui-datepicker .ui-datepicker-next-hover { right:1px; }
+.player-ui .ui-datepicker .ui-datepicker-prev span, .player-ui .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px;  }
+.player-ui .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
+.player-ui .ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
+.player-ui .ui-datepicker select.ui-datepicker-month-year {width: 100%;}
+.player-ui .ui-datepicker select.ui-datepicker-month, 
+.player-ui .ui-datepicker select.ui-datepicker-year { width: 49%;}
+.player-ui .ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
+.player-ui .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0;  }
+.player-ui .ui-datepicker td { border: 0; padding: 1px; }
+.player-ui .ui-datepicker td span, .player-ui .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
+.player-ui .ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
+.player-ui .ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
+.player-ui .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
+
+/* with multiple calendars */
+.player-ui .ui-datepicker.ui-datepicker-multi { width:auto; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group { float:left; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
+.player-ui .ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
+.player-ui .ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
+.player-ui .ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
+.player-ui .ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
+.player-ui .ui-datepicker-row-break { clear:both; width:100%; font-size:0em; }
+
+/* RTL support */
+.player-ui .ui-datepicker-rtl { direction: rtl; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-group { float:right; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+
+/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
+.player-ui .ui-datepicker-cover {
+    display: none; /*sorry for IE5*/
+    display/**/: block; /*sorry for IE5*/
+    position: absolute; /*must have*/
+    z-index: -1; /*must have*/
+    filter: mask(); /*must have*/
+    top: -4px; /*must have*/
+    left: -4px; /*must have*/
+    width: 200px; /*must have*/
+    height: 200px; /*must have*/
+}/*
+ * jQuery UI Progressbar 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Progressbar#theming
+ */
+.player-ui .ui-progressbar { height:2em; text-align: left; overflow: hidden; }
+.player-ui .ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/jquery-ui/vader/images/ui-bg_flat_0_aaaaaa_40x100.png b/public/admin/js/osmplayer/jquery-ui/vader/images/ui-bg_flat_0_aaaaaa_40x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..5b5dab2ab7b1c50dea9cfe73dc5a269a92d2d4b4
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/vader/images/ui-bg_flat_0_aaaaaa_40x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/vader/images/ui-bg_glass_95_fef1ec_1x400.png b/public/admin/js/osmplayer/jquery-ui/vader/images/ui-bg_glass_95_fef1ec_1x400.png
new file mode 100644
index 0000000000000000000000000000000000000000..4443fdc1a156babad4336f004eaf5ca5dfa0f9ab
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/vader/images/ui-bg_glass_95_fef1ec_1x400.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/vader/images/ui-bg_gloss-wave_16_121212_500x100.png b/public/admin/js/osmplayer/jquery-ui/vader/images/ui-bg_gloss-wave_16_121212_500x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..c7a2ee1b7389fd947c358c79c41ffcb51e9daace
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/vader/images/ui-bg_gloss-wave_16_121212_500x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/vader/images/ui-bg_highlight-hard_15_888888_1x100.png b/public/admin/js/osmplayer/jquery-ui/vader/images/ui-bg_highlight-hard_15_888888_1x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..66e53e16c5eb8a113fd0fabc472de38e4765bccc
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/vader/images/ui-bg_highlight-hard_15_888888_1x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/vader/images/ui-bg_highlight-hard_55_555555_1x100.png b/public/admin/js/osmplayer/jquery-ui/vader/images/ui-bg_highlight-hard_55_555555_1x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..1453bc188431e21db26ecb9355fe9730473988ab
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/vader/images/ui-bg_highlight-hard_55_555555_1x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/vader/images/ui-bg_highlight-soft_35_adadad_1x100.png b/public/admin/js/osmplayer/jquery-ui/vader/images/ui-bg_highlight-soft_35_adadad_1x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..fbbdf8a6615a895210bc2bd5145f731bf980bd3e
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/vader/images/ui-bg_highlight-soft_35_adadad_1x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/vader/images/ui-bg_highlight-soft_60_dddddd_1x100.png b/public/admin/js/osmplayer/jquery-ui/vader/images/ui-bg_highlight-soft_60_dddddd_1x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..747e1fa63052ac5b24d82af4c22d7d2f1f4aae27
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/vader/images/ui-bg_highlight-soft_60_dddddd_1x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/vader/images/ui-bg_inset-soft_15_121212_1x100.png b/public/admin/js/osmplayer/jquery-ui/vader/images/ui-bg_inset-soft_15_121212_1x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..e7692acdf89d7ee44c69148ae54e69ad92c716d4
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/vader/images/ui-bg_inset-soft_15_121212_1x100.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/vader/images/ui-icons_666666_256x240.png b/public/admin/js/osmplayer/jquery-ui/vader/images/ui-icons_666666_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..f87de1ca1dc2eeefd7c2a4bed06c3f8bbfe2d483
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/vader/images/ui-icons_666666_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/vader/images/ui-icons_aaaaaa_256x240.png b/public/admin/js/osmplayer/jquery-ui/vader/images/ui-icons_aaaaaa_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..64af7f11cfef61daf0fdbd80f6f0b7b5448e795a
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/vader/images/ui-icons_aaaaaa_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/vader/images/ui-icons_bbbbbb_256x240.png b/public/admin/js/osmplayer/jquery-ui/vader/images/ui-icons_bbbbbb_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..146dbd10b99cc7529a1f055e4ac7d4b2284247e2
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/vader/images/ui-icons_bbbbbb_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/vader/images/ui-icons_c98000_256x240.png b/public/admin/js/osmplayer/jquery-ui/vader/images/ui-icons_c98000_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..ba8dafc04c3a7130f91fc03b5d82a427fa30c36a
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/vader/images/ui-icons_c98000_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/vader/images/ui-icons_cccccc_256x240.png b/public/admin/js/osmplayer/jquery-ui/vader/images/ui-icons_cccccc_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..9254e05cfb964be56241b5bb4d0a0eb51c02df80
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/vader/images/ui-icons_cccccc_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/vader/images/ui-icons_cd0a0a_256x240.png b/public/admin/js/osmplayer/jquery-ui/vader/images/ui-icons_cd0a0a_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..2ab019b73ec11a485fa09378f3a0e155194f6a5d
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/vader/images/ui-icons_cd0a0a_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/vader/images/ui-icons_f29a00_256x240.png b/public/admin/js/osmplayer/jquery-ui/vader/images/ui-icons_f29a00_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..1d27bd9473047e7a881fe5e2b3301cb2f957d2b3
Binary files /dev/null and b/public/admin/js/osmplayer/jquery-ui/vader/images/ui-icons_f29a00_256x240.png differ
diff --git a/public/admin/js/osmplayer/jquery-ui/vader/jquery-ui-1.8.18.custom.css b/public/admin/js/osmplayer/jquery-ui/vader/jquery-ui-1.8.18.custom.css
new file mode 100644
index 0000000000000000000000000000000000000000..a1b34b57437162c9ac648f8fc9b17700f871dd2f
--- /dev/null
+++ b/public/admin/js/osmplayer/jquery-ui/vader/jquery-ui-1.8.18.custom.css
@@ -0,0 +1,565 @@
+/*
+ * jQuery UI CSS Framework 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ */
+
+/* Layout helpers
+----------------------------------*/
+.player-ui .ui-helper-hidden { display: none; }
+.player-ui .ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
+.player-ui .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
+.player-ui .ui-helper-clearfix:before, .player-ui .ui-helper-clearfix:after { content: ""; display: table; }
+.player-ui .ui-helper-clearfix:after { clear: both; }
+.player-ui .ui-helper-clearfix { zoom: 1; }
+.player-ui .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
+
+
+/* Interaction Cues
+----------------------------------*/
+.player-ui .ui-state-disabled { cursor: default !important; }
+
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.player-ui .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+.player-ui .ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
+
+
+/*
+ * jQuery UI CSS Framework 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ *
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?tr&ffDefault=Helvetica,%20Arial,%20sans-serif&fwDefault=normal&fsDefault=1.1&fsDefaultUnit=em&cornerRadius=5&cornerRadiusUnit=px&bgColorHeader=888888&bgTextureHeader=04_highlight_hard.png&bgImgOpacityHeader=15&borderColorHeader=404040&fcHeader=ffffff&iconColorHeader=cccccc&bgColorContent=121212&bgTextureContent=12_gloss_wave.png&bgImgOpacityContent=16&borderColorContent=404040&fcContent=eeeeee&iconColorContent=bbbbbb&bgColorDefault=adadad&bgTextureDefault=03_highlight_soft.png&bgImgOpacityDefault=35&borderColorDefault=cccccc&fcDefault=333333&iconColorDefault=666666&bgColorHover=dddddd&bgTextureHover=03_highlight_soft.png&bgImgOpacityHover=60&borderColorHover=dddddd&fcHover=000000&iconColorHover=c98000&bgColorActive=121212&bgTextureActive=05_inset_soft.png&bgImgOpacityActive=15&borderColorActive=000000&fcActive=ffffff&iconColorActive=f29a00&bgColorHighlight=555555&bgTextureHighlight=04_highlight_hard.png&bgImgOpacityHighlight=55&borderColorHighlight=404040&fcHighlight=cccccc&iconColorHighlight=aaaaaa&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a
+ */
+
+
+/* Component containers
+----------------------------------*/
+.player-ui .ui-widget { font-family: Helvetica, Arial, sans-serif; font-size: 1.1em; }
+.player-ui .ui-widget .ui-widget { font-size: 1em; }
+.player-ui .ui-widget input, .player-ui .ui-widget select, .player-ui .ui-widget textarea, .player-ui .ui-widget button { font-family: Helvetica, Arial, sans-serif; font-size: 1em; }
+.player-ui .ui-widget-content { border: 1px solid #404040; background: #121212 url(images/ui-bg_gloss-wave_16_121212_500x100.png) 50% top repeat-x; color: #eeeeee; }
+.player-ui .ui-widget-content a { color: #eeeeee; }
+.player-ui .ui-widget-header { border: 1px solid #404040; background: #888888 url(images/ui-bg_highlight-hard_15_888888_1x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; }
+.player-ui .ui-widget-header a { color: #ffffff; }
+
+/* Interaction states
+----------------------------------*/
+.player-ui .ui-state-default, .player-ui .ui-widget-content .ui-state-default, .player-ui .ui-widget-header .ui-state-default { border: 1px solid #cccccc; background: #adadad url(images/ui-bg_highlight-soft_35_adadad_1x100.png) 50% 50% repeat-x; font-weight: normal; color: #333333; }
+.player-ui .ui-state-default a, .player-ui .ui-state-default a:link, .player-ui .ui-state-default a:visited { color: #333333; text-decoration: none; }
+.player-ui .ui-state-hover, .player-ui .ui-widget-content .ui-state-hover, .player-ui .ui-widget-header .ui-state-hover, .player-ui .ui-state-focus, .player-ui .ui-widget-content .ui-state-focus, .player-ui .ui-widget-header .ui-state-focus { border: 1px solid #dddddd; background: #dddddd url(images/ui-bg_highlight-soft_60_dddddd_1x100.png) 50% 50% repeat-x; font-weight: normal; color: #000000; }
+.player-ui .ui-state-hover a, .player-ui .ui-state-hover a:hover { color: #000000; text-decoration: none; }
+.player-ui .ui-state-active, .player-ui .ui-widget-content .ui-state-active, .player-ui .ui-widget-header .ui-state-active { border: 1px solid #000000; background: #121212 url(images/ui-bg_inset-soft_15_121212_1x100.png) 50% 50% repeat-x; font-weight: normal; color: #ffffff; }
+.player-ui .ui-state-active a, .player-ui .ui-state-active a:link, .player-ui .ui-state-active a:visited { color: #ffffff; text-decoration: none; }
+.player-ui .ui-widget :active { outline: none; }
+
+/* Interaction Cues
+----------------------------------*/
+.player-ui .ui-state-highlight, .player-ui .ui-widget-content .ui-state-highlight, .player-ui .ui-widget-header .ui-state-highlight  {border: 1px solid #404040; background: #555555 url(images/ui-bg_highlight-hard_55_555555_1x100.png) 50% top repeat-x; color: #cccccc; }
+.player-ui .ui-state-highlight a, .player-ui .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #cccccc; }
+.player-ui .ui-state-error, .player-ui .ui-widget-content .ui-state-error, .player-ui .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; color: #cd0a0a; }
+.player-ui .ui-state-error a, .player-ui .ui-widget-content .ui-state-error a, .player-ui .ui-widget-header .ui-state-error a { color: #cd0a0a; }
+.player-ui .ui-state-error-text, .player-ui .ui-widget-content .ui-state-error-text, .player-ui .ui-widget-header .ui-state-error-text { color: #cd0a0a; }
+.player-ui .ui-priority-primary, .player-ui .ui-widget-content .ui-priority-primary, .player-ui .ui-widget-header .ui-priority-primary { font-weight: bold; }
+.player-ui .ui-priority-secondary, .player-ui .ui-widget-content .ui-priority-secondary,  .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
+.player-ui .ui-state-disabled, .player-ui .ui-widget-content .ui-state-disabled, .player-ui .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.player-ui .ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_bbbbbb_256x240.png); }
+.player-ui .ui-widget-content .ui-icon {background-image: url(images/ui-icons_bbbbbb_256x240.png); }
+.player-ui .ui-widget-header .ui-icon {background-image: url(images/ui-icons_cccccc_256x240.png); }
+.player-ui .ui-state-default .ui-icon { background-image: url(images/ui-icons_666666_256x240.png); }
+.player-ui .ui-state-hover .ui-icon, .player-ui .ui-state-focus .ui-icon {background-image: url(images/ui-icons_c98000_256x240.png); }
+.player-ui .ui-state-active .ui-icon {background-image: url(images/ui-icons_f29a00_256x240.png); }
+.player-ui .ui-state-highlight .ui-icon {background-image: url(images/ui-icons_aaaaaa_256x240.png); }
+.player-ui .ui-state-error .ui-icon, .player-ui .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png); }
+
+/* positioning */
+.player-ui .ui-icon-carat-1-n { background-position: 0 0; }
+.player-ui .ui-icon-carat-1-ne { background-position: -16px 0; }
+.player-ui .ui-icon-carat-1-e { background-position: -32px 0; }
+.player-ui .ui-icon-carat-1-se { background-position: -48px 0; }
+.player-ui .ui-icon-carat-1-s { background-position: -64px 0; }
+.player-ui .ui-icon-carat-1-sw { background-position: -80px 0; }
+.player-ui .ui-icon-carat-1-w { background-position: -96px 0; }
+.player-ui .ui-icon-carat-1-nw { background-position: -112px 0; }
+.player-ui .ui-icon-carat-2-n-s { background-position: -128px 0; }
+.player-ui .ui-icon-carat-2-e-w { background-position: -144px 0; }
+.player-ui .ui-icon-triangle-1-n { background-position: 0 -16px; }
+.player-ui .ui-icon-triangle-1-ne { background-position: -16px -16px; }
+.player-ui .ui-icon-triangle-1-e { background-position: -32px -16px; }
+.player-ui .ui-icon-triangle-1-se { background-position: -48px -16px; }
+.player-ui .ui-icon-triangle-1-s { background-position: -64px -16px; }
+.player-ui .ui-icon-triangle-1-sw { background-position: -80px -16px; }
+.player-ui .ui-icon-triangle-1-w { background-position: -96px -16px; }
+.player-ui .ui-icon-triangle-1-nw { background-position: -112px -16px; }
+.player-ui .ui-icon-triangle-2-n-s { background-position: -128px -16px; }
+.player-ui .ui-icon-triangle-2-e-w { background-position: -144px -16px; }
+.player-ui .ui-icon-arrow-1-n { background-position: 0 -32px; }
+.player-ui .ui-icon-arrow-1-ne { background-position: -16px -32px; }
+.player-ui .ui-icon-arrow-1-e { background-position: -32px -32px; }
+.player-ui .ui-icon-arrow-1-se { background-position: -48px -32px; }
+.player-ui .ui-icon-arrow-1-s { background-position: -64px -32px; }
+.player-ui .ui-icon-arrow-1-sw { background-position: -80px -32px; }
+.player-ui .ui-icon-arrow-1-w { background-position: -96px -32px; }
+.player-ui .ui-icon-arrow-1-nw { background-position: -112px -32px; }
+.player-ui .ui-icon-arrow-2-n-s { background-position: -128px -32px; }
+.player-ui .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
+.player-ui .ui-icon-arrow-2-e-w { background-position: -160px -32px; }
+.player-ui .ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
+.player-ui .ui-icon-arrowstop-1-n { background-position: -192px -32px; }
+.player-ui .ui-icon-arrowstop-1-e { background-position: -208px -32px; }
+.player-ui .ui-icon-arrowstop-1-s { background-position: -224px -32px; }
+.player-ui .ui-icon-arrowstop-1-w { background-position: -240px -32px; }
+.player-ui .ui-icon-arrowthick-1-n { background-position: 0 -48px; }
+.player-ui .ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
+.player-ui .ui-icon-arrowthick-1-e { background-position: -32px -48px; }
+.player-ui .ui-icon-arrowthick-1-se { background-position: -48px -48px; }
+.player-ui .ui-icon-arrowthick-1-s { background-position: -64px -48px; }
+.player-ui .ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
+.player-ui .ui-icon-arrowthick-1-w { background-position: -96px -48px; }
+.player-ui .ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
+.player-ui .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
+.player-ui .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
+.player-ui .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
+.player-ui .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
+.player-ui .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
+.player-ui .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
+.player-ui .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
+.player-ui .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
+.player-ui .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
+.player-ui .ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
+.player-ui .ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
+.player-ui .ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
+.player-ui .ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
+.player-ui .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
+.player-ui .ui-icon-arrow-4 { background-position: 0 -80px; }
+.player-ui .ui-icon-arrow-4-diag { background-position: -16px -80px; }
+.player-ui .ui-icon-extlink { background-position: -32px -80px; }
+.player-ui .ui-icon-newwin { background-position: -48px -80px; }
+.player-ui .ui-icon-refresh { background-position: -64px -80px; }
+.player-ui .ui-icon-shuffle { background-position: -80px -80px; }
+.player-ui .ui-icon-transfer-e-w { background-position: -96px -80px; }
+.player-ui .ui-icon-transferthick-e-w { background-position: -112px -80px; }
+.player-ui .ui-icon-folder-collapsed { background-position: 0 -96px; }
+.player-ui .ui-icon-folder-open { background-position: -16px -96px; }
+.player-ui .ui-icon-document { background-position: -32px -96px; }
+.player-ui .ui-icon-document-b { background-position: -48px -96px; }
+.player-ui .ui-icon-note { background-position: -64px -96px; }
+.player-ui .ui-icon-mail-closed { background-position: -80px -96px; }
+.player-ui .ui-icon-mail-open { background-position: -96px -96px; }
+.player-ui .ui-icon-suitcase { background-position: -112px -96px; }
+.player-ui .ui-icon-comment { background-position: -128px -96px; }
+.player-ui .ui-icon-person { background-position: -144px -96px; }
+.player-ui .ui-icon-print { background-position: -160px -96px; }
+.player-ui .ui-icon-trash { background-position: -176px -96px; }
+.player-ui .ui-icon-locked { background-position: -192px -96px; }
+.player-ui .ui-icon-unlocked { background-position: -208px -96px; }
+.player-ui .ui-icon-bookmark { background-position: -224px -96px; }
+.player-ui .ui-icon-tag { background-position: -240px -96px; }
+.player-ui .ui-icon-home { background-position: 0 -112px; }
+.player-ui .ui-icon-flag { background-position: -16px -112px; }
+.player-ui .ui-icon-calendar { background-position: -32px -112px; }
+.player-ui .ui-icon-cart { background-position: -48px -112px; }
+.player-ui .ui-icon-pencil { background-position: -64px -112px; }
+.player-ui .ui-icon-clock { background-position: -80px -112px; }
+.player-ui .ui-icon-disk { background-position: -96px -112px; }
+.player-ui .ui-icon-calculator { background-position: -112px -112px; }
+.player-ui .ui-icon-zoomin { background-position: -128px -112px; }
+.player-ui .ui-icon-zoomout { background-position: -144px -112px; }
+.player-ui .ui-icon-search { background-position: -160px -112px; }
+.player-ui .ui-icon-wrench { background-position: -176px -112px; }
+.player-ui .ui-icon-gear { background-position: -192px -112px; }
+.player-ui .ui-icon-heart { background-position: -208px -112px; }
+.player-ui .ui-icon-star { background-position: -224px -112px; }
+.player-ui .ui-icon-link { background-position: -240px -112px; }
+.player-ui .ui-icon-cancel { background-position: 0 -128px; }
+.player-ui .ui-icon-plus { background-position: -16px -128px; }
+.player-ui .ui-icon-plusthick { background-position: -32px -128px; }
+.player-ui .ui-icon-minus { background-position: -48px -128px; }
+.player-ui .ui-icon-minusthick { background-position: -64px -128px; }
+.player-ui .ui-icon-close { background-position: -80px -128px; }
+.player-ui .ui-icon-closethick { background-position: -96px -128px; }
+.player-ui .ui-icon-key { background-position: -112px -128px; }
+.player-ui .ui-icon-lightbulb { background-position: -128px -128px; }
+.player-ui .ui-icon-scissors { background-position: -144px -128px; }
+.player-ui .ui-icon-clipboard { background-position: -160px -128px; }
+.player-ui .ui-icon-copy { background-position: -176px -128px; }
+.player-ui .ui-icon-contact { background-position: -192px -128px; }
+.player-ui .ui-icon-image { background-position: -208px -128px; }
+.player-ui .ui-icon-video { background-position: -224px -128px; }
+.player-ui .ui-icon-script { background-position: -240px -128px; }
+.player-ui .ui-icon-alert { background-position: 0 -144px; }
+.player-ui .ui-icon-info { background-position: -16px -144px; }
+.player-ui .ui-icon-notice { background-position: -32px -144px; }
+.player-ui .ui-icon-help { background-position: -48px -144px; }
+.player-ui .ui-icon-check { background-position: -64px -144px; }
+.player-ui .ui-icon-bullet { background-position: -80px -144px; }
+.player-ui .ui-icon-radio-off { background-position: -96px -144px; }
+.player-ui .ui-icon-radio-on { background-position: -112px -144px; }
+.player-ui .ui-icon-pin-w { background-position: -128px -144px; }
+.player-ui .ui-icon-pin-s { background-position: -144px -144px; }
+.player-ui .ui-icon-play { background-position: 0 -160px; }
+.player-ui .ui-icon-pause { background-position: -16px -160px; }
+.player-ui .ui-icon-seek-next { background-position: -32px -160px; }
+.player-ui .ui-icon-seek-prev { background-position: -48px -160px; }
+.player-ui .ui-icon-seek-end { background-position: -64px -160px; }
+.player-ui .ui-icon-seek-start { background-position: -80px -160px; }
+/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
+.player-ui .ui-icon-seek-first { background-position: -80px -160px; }
+.player-ui .ui-icon-stop { background-position: -96px -160px; }
+.player-ui .ui-icon-eject { background-position: -112px -160px; }
+.player-ui .ui-icon-volume-off { background-position: -128px -160px; }
+.player-ui .ui-icon-volume-on { background-position: -144px -160px; }
+.player-ui .ui-icon-power { background-position: 0 -176px; }
+.player-ui .ui-icon-signal-diag { background-position: -16px -176px; }
+.player-ui .ui-icon-signal { background-position: -32px -176px; }
+.player-ui .ui-icon-battery-0 { background-position: -48px -176px; }
+.player-ui .ui-icon-battery-1 { background-position: -64px -176px; }
+.player-ui .ui-icon-battery-2 { background-position: -80px -176px; }
+.player-ui .ui-icon-battery-3 { background-position: -96px -176px; }
+.player-ui .ui-icon-circle-plus { background-position: 0 -192px; }
+.player-ui .ui-icon-circle-minus { background-position: -16px -192px; }
+.player-ui .ui-icon-circle-close { background-position: -32px -192px; }
+.player-ui .ui-icon-circle-triangle-e { background-position: -48px -192px; }
+.player-ui .ui-icon-circle-triangle-s { background-position: -64px -192px; }
+.player-ui .ui-icon-circle-triangle-w { background-position: -80px -192px; }
+.player-ui .ui-icon-circle-triangle-n { background-position: -96px -192px; }
+.player-ui .ui-icon-circle-arrow-e { background-position: -112px -192px; }
+.player-ui .ui-icon-circle-arrow-s { background-position: -128px -192px; }
+.player-ui .ui-icon-circle-arrow-w { background-position: -144px -192px; }
+.player-ui .ui-icon-circle-arrow-n { background-position: -160px -192px; }
+.player-ui .ui-icon-circle-zoomin { background-position: -176px -192px; }
+.player-ui .ui-icon-circle-zoomout { background-position: -192px -192px; }
+.player-ui .ui-icon-circle-check { background-position: -208px -192px; }
+.player-ui .ui-icon-circlesmall-plus { background-position: 0 -208px; }
+.player-ui .ui-icon-circlesmall-minus { background-position: -16px -208px; }
+.player-ui .ui-icon-circlesmall-close { background-position: -32px -208px; }
+.player-ui .ui-icon-squaresmall-plus { background-position: -48px -208px; }
+.player-ui .ui-icon-squaresmall-minus { background-position: -64px -208px; }
+.player-ui .ui-icon-squaresmall-close { background-position: -80px -208px; }
+.player-ui .ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
+.player-ui .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
+.player-ui .ui-icon-grip-solid-vertical { background-position: -32px -224px; }
+.player-ui .ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
+.player-ui .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
+.player-ui .ui-icon-grip-diagonal-se { background-position: -80px -224px; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Corner radius */
+.player-ui .ui-corner-all, .player-ui .ui-corner-top, .player-ui .ui-corner-left, .player-ui .ui-corner-tl { -moz-border-radius-topleft: 5px; -webkit-border-top-left-radius: 5px; -khtml-border-top-left-radius: 5px; border-top-left-radius: 5px; }
+.player-ui .ui-corner-all, .player-ui .ui-corner-top, .player-ui .ui-corner-right, .player-ui .ui-corner-tr { -moz-border-radius-topright: 5px; -webkit-border-top-right-radius: 5px; -khtml-border-top-right-radius: 5px; border-top-right-radius: 5px; }
+.player-ui .ui-corner-all, .player-ui .ui-corner-bottom, .player-ui .ui-corner-left, .player-ui .ui-corner-bl { -moz-border-radius-bottomleft: 5px; -webkit-border-bottom-left-radius: 5px; -khtml-border-bottom-left-radius: 5px; border-bottom-left-radius: 5px; }
+.player-ui .ui-corner-all, .player-ui .ui-corner-bottom, .player-ui .ui-corner-right, .player-ui .ui-corner-br { -moz-border-radius-bottomright: 5px; -webkit-border-bottom-right-radius: 5px; -khtml-border-bottom-right-radius: 5px; border-bottom-right-radius: 5px; }
+
+/* Overlays */
+.player-ui .ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); }
+.player-ui .ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -khtml-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/*
+ * jQuery UI Resizable 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Resizable#theming
+ */
+.player-ui .ui-resizable { position: relative;}
+.player-ui .ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block; }
+.player-ui .ui-resizable-disabled .ui-resizable-handle, .player-ui .ui-resizable-autohide .ui-resizable-handle { display: none; }
+.player-ui .ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
+.player-ui .ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
+.player-ui .ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
+.player-ui .ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
+.player-ui .ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
+.player-ui .ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
+.player-ui .ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
+.player-ui .ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/*
+ * jQuery UI Selectable 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Selectable#theming
+ */
+.player-ui .ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }
+/*
+ * jQuery UI Accordion 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Accordion#theming
+ */
+/* IE/Win - Fix animation bug - #4615 */
+.player-ui .ui-accordion { width: 100%; }
+.player-ui .ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
+.player-ui .ui-accordion .ui-accordion-li-fix { display: inline; }
+.player-ui .ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
+.player-ui .ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; }
+.player-ui .ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; }
+.player-ui .ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
+.player-ui .ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; }
+.player-ui .ui-accordion .ui-accordion-content-active { display: block; }
+/*
+ * jQuery UI Autocomplete 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Autocomplete#theming
+ */
+.player-ui .ui-autocomplete { position: absolute; cursor: default; }	
+
+/* workarounds */
+* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
+
+/*
+ * jQuery UI Menu 1.8.18
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Menu#theming
+ */
+.player-ui .ui-menu {
+	list-style:none;
+	padding: 2px;
+	margin: 0;
+	display:block;
+	float: left;
+}
+.player-ui .ui-menu .ui-menu {
+	margin-top: -3px;
+}
+.player-ui .ui-menu .ui-menu-item {
+	margin:0;
+	padding: 0;
+	zoom: 1;
+	float: left;
+	clear: left;
+	width: 100%;
+}
+.player-ui .ui-menu .ui-menu-item a {
+	text-decoration:none;
+	display:block;
+	padding:.2em .4em;
+	line-height:1.5;
+	zoom:1;
+}
+.player-ui .ui-menu .ui-menu-item a.ui-state-hover,
+.player-ui .ui-menu .ui-menu-item a.ui-state-active {
+	font-weight: normal;
+	margin: -1px;
+}
+/*
+ * jQuery UI Button 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Button#theming
+ */
+.player-ui .ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: hidden; *overflow: visible; } /* the overflow property removes extra width in IE */
+.player-ui .ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
+button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
+.player-ui .ui-button-icons-only { width: 3.4em; } 
+button.ui-button-icons-only { width: 3.7em; } 
+
+/*button text element */
+.player-ui .ui-button .ui-button-text { display: block; line-height: 1.4;  }
+.player-ui .ui-button-text-only .ui-button-text { padding: .4em 1em; }
+.player-ui .ui-button-icon-only .ui-button-text, .player-ui .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
+.player-ui .ui-button-text-icon-primary .ui-button-text, .player-ui .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
+.player-ui .ui-button-text-icon-secondary .ui-button-text, .player-ui .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }
+.player-ui .ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }
+/* no icon support for input elements, provide padding by default */
+input.ui-button { padding: .4em 1em; }
+
+/*button icon element(s) */
+.player-ui .ui-button-icon-only .ui-icon, .player-ui .ui-button-text-icon-primary .ui-icon, .player-ui .ui-button-text-icon-secondary .ui-icon, .player-ui .ui-button-text-icons .ui-icon, .player-ui .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
+.player-ui .ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
+.player-ui .ui-button-text-icon-primary .ui-button-icon-primary, .player-ui .ui-button-text-icons .ui-button-icon-primary, .player-ui .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
+.player-ui .ui-button-text-icon-secondary .ui-button-icon-secondary, .player-ui .ui-button-text-icons .ui-button-icon-secondary, .player-ui .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
+.player-ui .ui-button-text-icons .ui-button-icon-secondary, .player-ui .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
+
+/*button sets*/
+.player-ui .ui-buttonset { margin-right: 7px; }
+.player-ui .ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }
+
+/* workarounds */
+button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
+/*
+ * jQuery UI Dialog 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Dialog#theming
+ */
+.player-ui .ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; }
+.player-ui .ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative;  }
+.player-ui .ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; } 
+.player-ui .ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
+.player-ui .ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
+.player-ui .ui-dialog .ui-dialog-titlebar-close:hover, .player-ui .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
+.player-ui .ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
+.player-ui .ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
+.player-ui .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
+.player-ui .ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
+.player-ui .ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
+.player-ui .ui-draggable .ui-dialog-titlebar { cursor: move; }
+/*
+ * jQuery UI Slider 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Slider#theming
+ */
+.player-ui .ui-slider { position: relative; text-align: left; }
+.player-ui .ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
+.player-ui .ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
+
+.player-ui .ui-slider-horizontal { height: .8em; }
+.player-ui .ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
+.player-ui .ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
+.player-ui .ui-slider-horizontal .ui-slider-range-min { left: 0; }
+.player-ui .ui-slider-horizontal .ui-slider-range-max { right: 0; }
+
+.player-ui .ui-slider-vertical { width: .8em; height: 100px; }
+.player-ui .ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
+.player-ui .ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
+.player-ui .ui-slider-vertical .ui-slider-range-min { bottom: 0; }
+.player-ui .ui-slider-vertical .ui-slider-range-max { top: 0; }/*
+ * jQuery UI Tabs 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Tabs#theming
+ */
+.player-ui .ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
+.player-ui .ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
+.player-ui .ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
+.player-ui .ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }
+.player-ui .ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; }
+.player-ui .ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .player-ui .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .player-ui .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
+.player-ui .ui-tabs .ui-tabs-nav li a, .player-ui .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
+.player-ui .ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }
+.player-ui .ui-tabs .ui-tabs-hide { display: none !important; }
+/*
+ * jQuery UI Datepicker 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Datepicker#theming
+ */
+.player-ui .ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }
+.player-ui .ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
+.player-ui .ui-datepicker .ui-datepicker-prev, .player-ui .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
+.player-ui .ui-datepicker .ui-datepicker-prev-hover, .player-ui .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
+.player-ui .ui-datepicker .ui-datepicker-prev { left:2px; }
+.player-ui .ui-datepicker .ui-datepicker-next { right:2px; }
+.player-ui .ui-datepicker .ui-datepicker-prev-hover { left:1px; }
+.player-ui .ui-datepicker .ui-datepicker-next-hover { right:1px; }
+.player-ui .ui-datepicker .ui-datepicker-prev span, .player-ui .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px;  }
+.player-ui .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
+.player-ui .ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
+.player-ui .ui-datepicker select.ui-datepicker-month-year {width: 100%;}
+.player-ui .ui-datepicker select.ui-datepicker-month, 
+.player-ui .ui-datepicker select.ui-datepicker-year { width: 49%;}
+.player-ui .ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
+.player-ui .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0;  }
+.player-ui .ui-datepicker td { border: 0; padding: 1px; }
+.player-ui .ui-datepicker td span, .player-ui .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
+.player-ui .ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
+.player-ui .ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
+.player-ui .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
+
+/* with multiple calendars */
+.player-ui .ui-datepicker.ui-datepicker-multi { width:auto; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group { float:left; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
+.player-ui .ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
+.player-ui .ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
+.player-ui .ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
+.player-ui .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
+.player-ui .ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
+.player-ui .ui-datepicker-row-break { clear:both; width:100%; font-size:0em; }
+
+/* RTL support */
+.player-ui .ui-datepicker-rtl { direction: rtl; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-group { float:right; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+.player-ui .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+
+/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
+.player-ui .ui-datepicker-cover {
+    display: none; /*sorry for IE5*/
+    display/**/: block; /*sorry for IE5*/
+    position: absolute; /*must have*/
+    z-index: -1; /*must have*/
+    filter: mask(); /*must have*/
+    top: -4px; /*must have*/
+    left: -4px; /*must have*/
+    width: 200px; /*must have*/
+    height: 200px; /*must have*/
+}/*
+ * jQuery UI Progressbar 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Progressbar#theming
+ */
+.player-ui .ui-progressbar { height:2em; text-align: left; overflow: hidden; }
+.player-ui .ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/logo.png b/public/admin/js/osmplayer/logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..6ff38b24f5bc9acd178778e3c2a4e7bb5b1e4e44
Binary files /dev/null and b/public/admin/js/osmplayer/logo.png differ
diff --git a/public/admin/js/osmplayer/makefile b/public/admin/js/osmplayer/makefile
new file mode 100644
index 0000000000000000000000000000000000000000..d4ce121f0f0a8731b003eb5f5d1f149f3788ef81
--- /dev/null
+++ b/public/admin/js/osmplayer/makefile
@@ -0,0 +1,95 @@
+# To run this makefile, you must do the following.
+#
+# 1.)  Download http://closure-compiler.googlecode.com/files/compiler-latest.zip
+#      and place compiler.jar within the tools directory.
+#
+# 2.)  Install closure-linter tool at by following
+#      http://code.google.com/closure/utilities/docs/linter_howto.html
+#
+# 3.)  Download the JSDoc toolkit found at
+#      http://code.google.com/p/jsdoc-toolkit and place the jsdoc-toolkit
+#      directory within the tools directory.
+
+# Create the list of files
+files =   minplayer/src/minplayer.compatibility.js\
+          minplayer/src/minplayer.async.js\
+          minplayer/src/minplayer.flags.js\
+          minplayer/src/minplayer.plugin.js\
+          minplayer/src/minplayer.display.js\
+          minplayer/src/minplayer.js\
+          minplayer/src/minplayer.image.js\
+          minplayer/src/minplayer.file.js\
+          minplayer/src/minplayer.playLoader.js\
+          minplayer/src/minplayer.players.base.js\
+          minplayer/src/minplayer.players.html5.js\
+          minplayer/src/minplayer.players.flash.js\
+          minplayer/src/minplayer.players.minplayer.js\
+          minplayer/src/minplayer.players.youtube.js\
+          minplayer/src/minplayer.players.vimeo.js\
+          minplayer/src/minplayer.controller.js\
+          src/osmplayer.js\
+          src/osmplayer.parser.default.js\
+          src/osmplayer.parser.youtube.js\
+          src/osmplayer.parser.rss.js\
+          src/osmplayer.parser.asx.js\
+          src/osmplayer.parser.xspf.js\
+          src/osmplayer.playlist.js\
+          src/osmplayer.pager.js\
+          src/osmplayer.teaser.js
+
+default_template =   templates/default/js/osmplayer.playLoader.default.js\
+          templates/default/js/osmplayer.controller.default.js\
+          templates/default/js/osmplayer.playlist.default.js\
+          templates/default/js/osmplayer.teaser.default.js\
+          templates/default/js/osmplayer.pager.default.js\
+          templates/default/js/osmplayer.default.js
+
+.DEFAULT_GOAL := all
+
+all: jslint js jsdoc
+
+# Perform a jsLint on all the files.
+jslint: ${files}
+	gjslint $^
+
+# Create an aggregated js file and a compressed js file.
+js: ${files}
+	@echo "Generating aggregated bin/osmplayer.js file"
+	@cat > bin/osmplayer.js src/iscroll/src/iscroll.js $^
+	@echo "Generating compressed bin/osmplayer.compressed file"
+	curl -s \
+	  -d compilation_level=SIMPLE_OPTIMIZATIONS \
+	  -d output_format=text \
+	  -d output_info=compiled_code \
+	  --data-urlencode "js_code@bin/osmplayer.js" \
+	  http://closure-compiler.appspot.com/compile \
+	  > bin/osmplayer.compressed.js
+	@cat > templates/default/osmplayer.default.tmp ${default_template}
+	curl -s \
+	  -d compilation_level=SIMPLE_OPTIMIZATIONS \
+	  -d output_format=text \
+	  -d output_info=compiled_code \
+	  --data-urlencode "js_code@templates/default/osmplayer.default.tmp" \
+	  http://closure-compiler.appspot.com/compile \
+	  > templates/default/osmplayer.default.js
+	@rm templates/default/osmplayer.default.tmp
+
+# Create the documentation from source code.
+jsdoc: ${files}
+	@echo "Generating documetation."
+	@java -jar tools/jsdoc-toolkit/jsrun.jar tools/jsdoc-toolkit/app/run.js -a -t=tools/jsdoc-toolkit/templates/jsdoc -d=doc $^
+
+# Fix the js style on all the files.
+fixjsstyle: ${files}
+	fixjsstyle $^
+
+# Install the necessary tools.
+tools:
+	apt-get install python-setuptools
+	apt-get install unzip
+	easy_install http://closure-linter.googlecode.com/files/closure_linter-latest.tar.gz
+	wget http://jsdoc-toolkit.googlecode.com/files/jsdoc_toolkit-2.4.0.zip -P tools
+	unzip tools/jsdoc_toolkit-2.4.0.zip -d tools
+	mv tools/jsdoc_toolkit-2.4.0/jsdoc-toolkit tools/jsdoc-toolkit
+	rm -rd tools/jsdoc_toolkit-2.4.0
+	rm tools/jsdoc_toolkit-2.4.0.zip
diff --git a/public/admin/js/osmplayer/minplayer/README.md b/public/admin/js/osmplayer/minplayer/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..63034555b62fbae8e252698d3e1e138fd89d40f7
--- /dev/null
+++ b/public/admin/js/osmplayer/minplayer/README.md
@@ -0,0 +1,122 @@
+minPlayer - Because less IS more.
+===================================
+
+The goal of this project is to provide a slim, well documented, object oriented,
+plugin-based "core" media player in which other players and libraries can build
+on top of.  It is written using object oriented JavaScript and is continuously
+integrated using JSLint, JSDoc, and Google Closure.
+
+Multiple players - One single API.
+-----------------------------------
+It also allows for hot-swappable 3rd party API players by providing a common
+API for all of these players so that they can be utilized in the same manner.
+This means that once you develop for the minPlayer, one can easily bring in a
+different player an your code will still function as it would for all the
+others.  Out of the box, this player provides a common API for YouTube, Vimeo,
+HTML5, and Flash with more on the way.
+
+Everything is a plugin
+-----------------------------------
+Since this is a plugin-based media player, every displayable class must derive
+from the plugin class, thereby, making it a plugin.  This includes the media
+player itself.  This plugin system is highly flexible to be able to handle
+just about any type of plugin imaginable, and allows for every plugin to have
+direct dependeny-injected control over any other plugin within the media player.
+
+Complete User Interface & Business Logic separation
+-----------------------------------
+One common complaint for many media solutions out there is that they hijack the
+DOM and build out their own controls to provide consistency amongst different
+browsers.  They do this, however, within the core player which completely binds
+the user interface to the business logic of the media player.  The minPlayer
+takes a different approach by keeping ALL user interface functionality within
+the "templates" directory, where each template essentially derives from the base
+Business logic classes only to provide the user interface aspects of that control.
+This allows for easy templating of the media player besides just overriding the
+CSS like current media solutions do today.
+
+No "Features"!
+-----------------------------------
+I am pleased to say that this media player does NOT have many features, and this
+is on purpose.  Since this is a "core" player, it does not have any features
+other than what is critical in presenting your media.  Any additional "bling"
+will be added to this player from different repositories and from different
+players that extend this "core" functionality.  This methodology will keep this
+"core" media solution lean & highly functional.
+
+API
+-----------------------------------
+The API for minPlayer is very simple.  It revolves around a single API that is
+able to retrieve any plugin even before that plugin is created.  By doing this,
+you can have complete control over any plugin within the minPlayer.  This API
+is simply called
+
+```
+minplayer.get();
+```
+
+This API can take up to three different argument with each argument providing
+different usage.  The code docs for this function are as follows...
+
+```
+/**
+ * The main API for minPlayer.
+ *
+ * Provided that this function takes three parameters, there are 8 different
+ * ways to use this api.
+ *
+ *   id (0x100) - You want a specific player.
+ *   plugin (0x010) - You want a specific plugin.
+ *   callback (0x001) - You only want it when it is ready.
+ *
+ *   000 - You want all plugins from all players, ready or not.
+ *
+ *          var instances = minplayer.get();
+ *
+ *   001 - You want all plugins from all players, but only when ready.
+ *
+ *          minplayer.get(function(plugin) {
+ *            // Code goes here.
+ *          });
+ *
+ *   010 - You want a specific plugin from all players, ready or not...
+ *
+ *          var medias = minplayer.get(null, 'media');
+ *
+ *   011 - You want a specific plugin from all players, but only when ready.
+ *
+ *          minplayer.get('player', function(player) {
+ *            // Code goes here.
+ *          });
+ *
+ *   100 - You want all plugins from a specific player, ready or not.
+ *
+ *          var plugins = minplayer.get('player_id');
+ *
+ *   101 - You want all plugins from a specific player, but only when ready.
+ *
+ *          minplayer.get('player_id', null, function(plugin) {
+ *            // Code goes here.
+ *          });
+ *
+ *   110 - You want a specific plugin from a specific player, ready or not.
+ *
+ *          var plugin = minplayer.get('player_id', 'media');
+ *
+ *   111 - You want a specific plugin from a specific player, only when ready.
+ *
+ *          minplayer.get('player_id', 'media', function(media) {
+ *            // Code goes here.
+ *          });
+ *
+ * @this The context in which this function was called.
+ * @param {string} id The ID of the widget to get the plugins from.
+ * @param {string} plugin The name of the plugin.
+ * @param {function} callback Called when the plugin is ready.
+ * @return {object} The plugin object if it is immediately available.
+ */
+minplayer.get = function(id, plugin, callback) {
+};
+```
+
+Thanks and enjoy minPlayer.
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/minplayer/bin/minplayer.compressed.js b/public/admin/js/osmplayer/minplayer/bin/minplayer.compressed.js
new file mode 100644
index 0000000000000000000000000000000000000000..58431bb3fc770aa99ed206723269ff23764b4d5c
--- /dev/null
+++ b/public/admin/js/osmplayer/minplayer/bin/minplayer.compressed.js
@@ -0,0 +1,115 @@
+var minplayer=minplayer||{};function checkPlayType(a,b){if("function"===typeof a.canPlayType){if("object"===typeof b){for(var c=b.length,d="";c--&&!(d=checkPlayType(a,b[c])););return d}c=a.canPlayType(b);if("no"!==c&&""!==c)return b}return""}
+minplayer.compatibility=function(){var a=null,a=document.createElement("video");this.videoOGG=checkPlayType(a,"video/ogg");this.videoH264=checkPlayType(a,["video/mp4","video/h264"]);this.videoWEBM=checkPlayType(a,["video/x-webm","video/webm","application/octet-stream"]);a=document.createElement("audio");this.audioOGG=checkPlayType(a,"audio/ogg");this.audioMP3=checkPlayType(a,"audio/mpeg");this.audioMP4=checkPlayType(a,"audio/mp4")};
+minplayer.playTypes||(minplayer.playTypes=new minplayer.compatibility,minplayer.isAndroid=/android/gi.test(navigator.appVersion),minplayer.isIDevice=/iphone|ipad/gi.test(navigator.appVersion),minplayer.isPlaybook=/playbook/gi.test(navigator.appVersion),minplayer.isTouchPad=/hp-tablet/gi.test(navigator.appVersion),minplayer.hasTouch="ontouchstart"in window&&!minplayer.isTouchPad);minplayer=minplayer||{};minplayer.async=function(){this.value=null;this.queue=[]};
+minplayer.async.prototype.get=function(a){this.value!==null?a(this.value):this.queue.push(a)};minplayer.async.prototype.set=function(a){this.value=a;var b=this.queue.length;if(b){for(;b--;)this.queue[b](a);this.queue=[]}};minplayer=minplayer||{};minplayer.flags=function(){this.flag=0;this.ids={};this.numFlags=0};minplayer.flags.prototype.setFlag=function(a,b){if(!this.ids.hasOwnProperty(a)){this.ids[a]=this.numFlags;this.numFlags++}this.flag=b?this.flag|1<<this.ids[a]:this.flag&~(1<<this.ids[a])};
+minplayer=minplayer||{};minplayer.plugins=minplayer.plugins||{};minplayer.queue=minplayer.queue||[];minplayer.lock=!1;minplayer.plugin=function(a,b,c,d){this.name=a;this.pluginReady=false;this.options=c||{};this.queue=d||{};this.triggered={};this.lock=false;if(b){this.active=true;this.context=jQuery(b);this.construct()}};minplayer.plugin.prototype.construct=function(){this.addPlugin()};minplayer.plugin.prototype.destroy=function(){this.active=false;this.unbind()};
+minplayer.plugin.prototype.create=function(a,b,c){var d=null,b=b||"minplayer";window[b][a]||(b="minplayer");c=c||this.display;if(window[b][a]){d=window[b][a];d[this.options.template]&&(d=d[this.options.template]);typeof d!=="function"&&(d=window.minplayer[a]);if(typeof d==="function")return new d(c,this.options)}return null};minplayer.plugin.prototype.ready=function(){if(!this.pluginReady){this.pluginReady=true;this.trigger("ready");this.checkQueue()}};
+minplayer.plugin.prototype.isValid=function(){return!!this.options.id&&this.active};minplayer.plugin.prototype.addPlugin=function(a,b){a=a||this.name;b=b||this;if(b.isValid()){minplayer.plugins[this.options.id]||(minplayer.plugins[this.options.id]={});minplayer.plugins[this.options.id][a]||(minplayer.plugins[this.options.id][a]=[]);minplayer.plugins[this.options.id][a].push(b);this.checkQueue(b)}};
+minplayer.plugin.prototype.poll=function(a,b){var c=this;setTimeout(function e(){a.call(c)&&setTimeout(e,b)},b)};minplayer.plugin.prototype.get=function(a,b){if(typeof a==="function"){b=a;a=null}return minplayer.get.call(this,this.options.id,a,b)};
+minplayer.plugin.prototype.checkQueue=function(a){var b=null,c=0,d=false,e=[],a=a||this;minplayer.lock=true;for(var f=minplayer.queue.length,c=0;c<f;c++)if(minplayer.queue.hasOwnProperty(c)){b=minplayer.queue[c];d=!b.id&&!b.plugin;d=d|b.plugin==a.name;(d=d&(!b.id||b.id==this.options.id))&&(d=minplayer.bind.call(b.context,b.event,this.options.id,a.name,b.callback));d||e.push(b)}minplayer.queue=e;minplayer.lock=false};
+minplayer.plugin.prototype.trigger=function(a,b){if(!this.active)return this;this.triggered[a]=b;if(this.queue.hasOwnProperty(a)){var c=0,d={},e=this.queue[a];for(c in e)if(e.hasOwnProperty(c)){d=e[c];d.callback({target:this,data:d.data},b)}}return this};
+minplayer.plugin.prototype.bind=function(a,b,c){if(!this.active)return this;if(typeof b==="function"){c=b;b=null}if(a&&c){this.queue[a]=this.queue[a]||[];this.unbind(a,c);this.queue[a].push({callback:c,data:b});this.triggered.hasOwnProperty(a)&&c({target:this,data:b},this.triggered[a]);return this}};
+minplayer.plugin.prototype.unbind=function(a,b){if(this.lock){var c=this;setTimeout(function(){c.unbind(a,b)},10)}this.lock=true;var d=this.queue.hasOwnProperty(a)?this.queue[a]:null;if(a)if(b){if(d){var e=0,f={};for(e in d)if(d.hasOwnProperty(e)&&d[e].callback===b){f=this.queue[a].splice(e,1);delete f}}}else this.queue[a]=[];else this.queue={};this.lock=false;return this};
+minplayer.addQueue=function(a,b,c,d,e){minplayer.lock?setTimeout(function(){minplayer.addQueue(a,c,b,d,e)},10):minplayer.queue.push({context:a,id:c,event:b,plugin:d,callback:e})};
+minplayer.bind=function(a,b,c,d){if(!d)return false;var e=minplayer.plugins,f=[],g=function(a,b){if(e.hasOwnProperty(a)&&e[a].hasOwnProperty(b))for(var c=e[a][b].length;c--;)f.push(e[a][b][c])};if(b&&c)g(b,c);else if(!b&&c)for(b in e)g(b,c);else if(b&&!c&&e[b])for(c in e[b])g(b,c);else if(!b&&!c)for(b in e)for(c in e[b])g(b,c);for(g=f.length;g--;)f[g].bind(a,function(a){return function(b){d.call(a,b.target)}}(this));minplayer.addQueue(this,a,b,c,d);return f.length>0};
+minplayer.get=function(a,b,c){if(typeof a==="function"){c=a;b=a=null}if(typeof b==="function"){c=b;b=a;a=null}if(c=typeof c==="function"?c:null)minplayer.bind.call(this,"ready",a,b,c);else{var d=minplayer.plugins;if(!a&&!b&&!c)return d;if(a&&!b&&!c)return d[a];if(a&&b&&!c)return d[a][b];if(!a&&b&&!c){c=[];for(a in d)if(d.hasOwnProperty(a)&&d[a].hasOwnProperty(b))for(var e=d[a][b].length;e--;)c.push(d[a][b][e]);return c}}};minplayer=minplayer||{};
+minplayer.display=function(a,b,c,d){minplayer.plugin.call(this,a,b,c,d)};minplayer.display.prototype=new minplayer.plugin;minplayer.display.prototype.constructor=minplayer.display;minplayer.display.prototype.getDisplay=function(){return this.context};
+minplayer.display.prototype.construct=function(){this.display=this.getDisplay(this.context,this.options);minplayer.plugin.prototype.construct.call(this);this.options.pluginName="display";this.elements=this.getElements();if(this.onResize){var a=0;jQuery(window).resize(function(b){return function(){clearTimeout(a);a=setTimeout(function(){b.onResize()},200)}}(this))}};minplayer.display.prototype.onResize=!1;minplayer.display.prototype.hide=function(a){if(a=a||this.display){a.forceHide=true;a.unbind().hide()}};
+minplayer.display.prototype.fullScreenElement=function(){return this.display};minplayer.click=function(a,b){var c=false,a=jQuery(a);a.bind("touchstart click",function(a){if(!c){c=true;setTimeout(function(){c=false},100);b.call(this,a)}});return a};minplayer.display.prototype.onFocus=function(a){this.hasFocus=this.focus=a};minplayer.showHideElements=[];
+minplayer.showAll=function(){for(var a=minplayer.showHideElements.length,b=null;a--;){b=minplayer.showHideElements[a];minplayer.showThenHide(b.element,b.timeout,b.callback)}};minplayer.stopShowThenHide=function(a){a=jQuery(a);a.showTimer&&clearTimeout(a.showTimer);a.stopShowThenHide=true;a.shown=true;a.show()};
+minplayer.showThenHide=function(a,b,c){if(a){b=b||5E3;if(!a.showTimer){a.shown=true;a.stopShowThenHide=false;minplayer.showHideElements.push({element:a,timeout:b,callback:c});minplayer.click(document,function(){a.stopShowThenHide||minplayer.showThenHide(a,b,c)});jQuery(document).bind("mousemove",function(){a.stopShowThenHide||minplayer.showThenHide(a,b,c)})}clearTimeout(a.showTimer);if(!a.shown&&!a.forceHide){a.shown=true;a.show();c&&c(true)}a.showTimer=setTimeout(function(){a.hide("slow",function(){a.shown=
+false;c&&c(false)})},b)}};minplayer.display.prototype.fullscreen=function(a){var b=this.isFullScreen(),c=this.fullScreenElement();if(b&&!a){c.removeClass("fullscreen");screenfull&&screenfull.exit();this.trigger("fullscreen",false)}else if(!b&&a){c.addClass("fullscreen");if(screenfull){screenfull.request(c[0]);var d=this;screenfull.onchange=function(){screenfull.isFullscreen||d.fullscreen(false)}}this.trigger("fullscreen",true)}};minplayer.display.prototype.toggleFullScreen=function(){this.fullscreen(!this.isFullScreen())};
+minplayer.display.prototype.isFullScreen=function(){return this.fullScreenElement().hasClass("fullscreen")};minplayer.display.prototype.getScaledRect=function(a,b){var c={};c.x=b.x?b.x:0;c.y=b.y?b.y:0;c.width=b.width?b.width:0;c.height=b.height?b.height:0;if(a){if(b.width/b.height>a){c.height=b.height;c.width=Math.floor(b.height*a)}else{c.height=Math.floor(b.width/a);c.width=b.width}c.x=Math.floor((b.width-c.width)/2);c.y=Math.floor((b.height-c.height)/2)}return c};
+minplayer.display.prototype.getElements=function(){return{}};
+(function(a,b){var c;a:{for(var d=[["requestFullscreen","exitFullscreen","fullscreenchange","fullscreen","fullscreenElement"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitfullscreenchange","webkitIsFullScreen","webkitCurrentFullScreenElement"],["mozRequestFullScreen","mozCancelFullScreen","mozfullscreenchange","mozFullScreen","mozFullScreenElement"]],e=0,f=d.length;e<f;e++)if(d.hasOwnProperty(e)){var g=d[e];if(g[1]in b){c=g;break a}}c=void 0}if(!c)return a.screenfull=false;var i="ALLOW_KEYBOARD_INPUT"in
+Element,h={init:function(){b.addEventListener(c[2],function(a){h.isFullscreen=b[c[3]];h.element=b[c[4]];h.onchange(a)});return this},isFullscreen:b[c[3]],element:b[c[4]],request:function(a){a=a||b.documentElement;a[c[0]](i&&Element.ALLOW_KEYBOARD_INPUT);if(!b.isFullscreen)a[c[0]]()},exit:function(){b[c[1]]()},toggle:function(a){this.isFullscreen?this.exit():this.request(a)},onchange:function(){}};a.screenfull=h.init()})(window,document);
+jQuery.fn.minplayer||(jQuery.fn.minplayer=function(a){return jQuery(this).each(function(){a=a||{};a.id=a.id||jQuery(this).attr("id")||Math.random();if(!minplayer.plugins[a.id]){a.template=a.template||"default";minplayer[a.template]?new minplayer[a.template](jQuery(this),a):new minplayer(jQuery(this),a)}})});minplayer=jQuery.extend(function(a,b){minplayer.display.call(this,"player",a,b)},minplayer);minplayer.prototype=new minplayer.display;minplayer.prototype.constructor=minplayer;
+minplayer.prototype.construct=function(){jQuery.each(this.context[0].attributes,function(a){return function(c,d){a.options[d.name]=a.options[d.name]||d.value}}(this));this.options=jQuery.extend({id:"player",build:false,wmode:"transparent",preload:true,autoplay:false,autoload:true,loop:false,width:"100%",height:"350px",debug:false,volume:80,files:null,file:"",preview:"",attributes:{},logo:"",link:"",width:"100%",height:"100%"},this.options);minplayer.display.prototype.construct.call(this);this.options.pluginName=
+"player";this.controller=this.create("controller");this.playLoader=this.create("playLoader");minplayer.click(document,function(a){return function(c){var d=jQuery(c.target).closest("#"+a.options.id).length!=0;minplayer.get.call(this,a.options.id,null,function(a){a.onFocus(d)})}}(this));if(this.options.logo&&this.elements.logo){var a="";this.options.link&&(a=a+('<a target="_blank" href="'+this.options.link+'">'));a=a+('<img src="'+this.options.logo+'" >');this.options.link&&(a=a+"</a>");this.logo=this.elements.logo.append(a)}this.currentPlayer=
+"html5";this.addKeyEvents();this.addEvents();this.load(this.getFiles());this.ready()};minplayer.prototype.bindTo=function(a){a.bind("error",function(a){return function(c,d){if(a.currentPlayer=="html5"){minplayer.player="minplayer";a.options.file.player="minplayer";a.loadPlayer()}else a.showError(d)}}(this));a.bind("fullscreen",function(a){return function(){a.resize()}}(this))};minplayer.prototype.addEvents=function(){minplayer.get.call(this,this.options.id,null,function(a){return function(b){a.bindTo(b)}}(this))};
+minplayer.prototype.showError=function(a){if(typeof a!=="object"){a=a||"";if(this.elements.error){this.elements.error.text(a);if(a){this.elements.error.show();var b=this;setTimeout(function(){b.elements.error.hide("slow")},5E3)}else this.elements.error.hide()}}};minplayer.prototype.addKeyEvents=function(){jQuery(document).bind("keydown",function(a){return function(b){switch(b.keyCode){case 113:case 27:a.isFullScreen()&&a.fullscreen(false)}}}(this))};
+minplayer.prototype.getFiles=function(){if(this.options.files)return this.options.files;if(this.options.file)return this.options.file;var a=[],b=null;if(this.elements.media){(b=this.elements.media.attr("src"))&&a.push({path:b});jQuery("source",this.elements.media).each(function(){a.push({path:jQuery(this).attr("src"),mimetype:jQuery(this).attr("type"),codecs:jQuery(this).attr("codecs")})})}return a};
+minplayer.getMediaFile=function(a){if(!a)return null;if(typeof a==="string"||a.path||a.id)return new minplayer.file(a);var b=null,c=null,d;for(d in a)if(a.hasOwnProperty(d)){c=new minplayer.file(a[d]);c.player&&c.priority>0&&(b=c)}return b};
+minplayer.prototype.loadPlayer=function(){if(!this.options.file||this.elements.display.length==0||!this.options.file.player)return false;this.showError();var a=this.options.file.player.toString();if(!this.media||a!==this.currentPlayer){this.currentPlayer=a;if(this.elements.display){a={};if(this.media){a=this.media.queue;this.media.destroy()}pClass=minplayer.players[this.options.file.player];this.options.mediaelement=this.elements.media;this.media=new pClass(this.elements.display,this.options,a);this.get("media",
+function(a){return function(c){c.load(a.options.file);a.display.addClass("minplayer-player-"+c.mediaFile.player)}}(this));return true}this.showError("No media display found.")}else if(this.media){this.media.options=this.options;this.display.removeClass("minplayer-player-"+this.media.mediaFile.player);this.media.load(this.options.file);this.display.addClass("minplayer-player-"+this.media.mediaFile.player);return false}};
+minplayer.prototype.load=function(a){this.options.files=a||this.options.files;this.options.file=minplayer.getMediaFile(this.options.files);if(this.loadPlayer()){this.bindTo(this.media);this.options.file.mimetype&&!this.options.file.player&&this.showError("Cannot play media: "+this.options.file.mimetype)}};minplayer.prototype.resize=function(){this.get(function(a){if(a.onResize)a.onResize()})};minplayer=minplayer||{};
+minplayer.image=function(a,b){this.loaded=false;this.loader=null;this.ratio=0;this.img=null;minplayer.display.call(this,"image",a,b)};minplayer.image.prototype=new minplayer.display;minplayer.image.prototype.constructor=minplayer.image;
+minplayer.image.prototype.construct=function(){minplayer.display.prototype.construct.call(this);this.options.pluginName="image";this.display.css("overflow","hidden");this.loader=new Image;var a=this;this.loader.onload=function(){a.loaded=true;a.ratio=a.loader.width/a.loader.height;a.resize();a.trigger("loaded")};this.ready()};
+minplayer.image.prototype.load=function(a){this.clear(function(){this.display.empty();this.img=jQuery(document.createElement("img")).attr({src:""}).hide();this.display.append(this.img);this.loader.src=a;this.img.attr("src",a)})};minplayer.image.prototype.clear=function(a){this.loaded=false;this.img?this.img.fadeOut(function(b){return function(){b.img.attr("src","");b.loader.src="";jQuery(this).remove();a.call(b)}}(this)):a.call(this)};
+minplayer.image.prototype.resize=function(a,b){a=a||this.display.parent().width();b=b||this.display.parent().height();if(a&&b&&this.loaded){var c=this.getScaledRect(this.ratio,{width:a,height:b});this.img&&this.img.attr("src",this.loader.src).css({marginLeft:c.x,marginTop:c.y,width:c.width,height:c.height});this.img.fadeIn()}};minplayer.image.prototype.onResize=function(){this.resize()};minplayer=minplayer||{};
+minplayer.file=function(a){if(!a)return null;a=typeof a==="string"?{path:a}:a;if(a.hasOwnProperty("isMinPlayerFile"))return a;this.isMinPlayerFile=true;this.duration=a.duration||0;this.bytesTotal=a.bytesTotal||0;this.quality=a.quality||0;this.stream=a.stream||"";this.path=a.path||"";this.codecs=a.codecs||"";this.extension=a.extension||this.getFileExtension();this.mimetype=a.mimetype||a.filemime||this.getMimeType();this.type=a.type||this.getType();if(!this.type){this.mimetype=this.getMimeType();this.type=
+this.getType()}this.player=minplayer.player||a.player||this.getBestPlayer();this.priority=a.priority||this.getPriority();this.id=a.id||this.getId();if(!this.path)this.path=this.id};minplayer.player="";minplayer.file.prototype.getBestPlayer=function(){var a=null,b=0;jQuery.each(minplayer.players,function(c){return function(d,e){var f=e.getPriority();if(e.canPlay(c)&&f>b){a=d;b=f}}}(this));return a};
+minplayer.file.prototype.getPriority=function(){var a=1;this.player&&(a=minplayer.players[this.player].getPriority());switch(this.mimetype){case "video/x-webm":case "video/webm":case "application/octet-stream":return a*10;case "video/mp4":case "audio/mp4":case "audio/mpeg":return a*9;case "video/ogg":case "audio/ogg":case "video/quicktime":return a*8;default:return a*5}};minplayer.file.prototype.getFileExtension=function(){return this.path.substring(this.path.lastIndexOf(".")+1).toLowerCase()};
+minplayer.file.prototype.getMimeType=function(){switch(this.extension){case "mp4":case "m4v":case "flv":case "f4v":return"video/mp4";case "webm":return"video/webm";case "ogg":case "ogv":return"video/ogg";case "3g2":return"video/3gpp2";case "3gpp":case "3gp":return"video/3gpp";case "mov":return"video/quicktime";case "swf":return"application/x-shockwave-flash";case "oga":return"audio/ogg";case "mp3":return"audio/mpeg";case "m4a":case "f4a":return"audio/mp4";case "aac":return"audio/aac";case "wav":return"audio/vnd.wave";
+case "wma":return"audio/x-ms-wma";default:return"unknown"}};minplayer.file.prototype.getType=function(){var a=this.mimetype.match(/([^\/]+)(\/)/),a=a&&a.length>1?a[1]:"";return a=="video"||this.mimetype=="application/octet-stream"?"video":a=="audio"?"audio":""};minplayer.file.prototype.getId=function(){var a=minplayer.players[this.player];return a&&a.getMediaId?a.getMediaId(this):""};minplayer=minplayer||{};
+minplayer.playLoader=function(a,b){this.busy=new minplayer.flags;this.bigPlay=new minplayer.flags;this.previewFlag=new minplayer.flags;this.preview=null;this.enabled=true;minplayer.display.call(this,"playLoader",a,b)};minplayer.playLoader.prototype=new minplayer.display;minplayer.playLoader.prototype.constructor=minplayer.playLoader;minplayer.playLoader.prototype.construct=function(){minplayer.display.prototype.construct.call(this);this.options.pluginName="playLoader";this.initialize();this.ready()};
+minplayer.playLoader.prototype.initialize=function(){this.get("media",function(a){if(a.hasPlayLoader(this.options.preview)){this.enabled=false;this.hide(this.elements.busy);this.hide(this.elements.bigPlay);this.hide(this.elements.preview);this.hide()}else{this.enabled=true;if(!this.options.preview)this.options.preview=a.elements.media.attr("poster");a.elements.media.attr("poster","");this.loadPreview();this.elements.bigPlay&&minplayer.click(this.elements.bigPlay.unbind(),function(b){b.preventDefault();
+minplayer.showAll();jQuery(this).hide();a.play()});a.unbind("loadstart").bind("loadstart",function(a){return function(){a.busy.setFlag("media",true);a.bigPlay.setFlag("media",true);a.previewFlag.setFlag("media",true);a.checkVisibility()}}(this));a.bind("waiting",function(a){return function(){a.busy.setFlag("media",true);a.checkVisibility()}}(this));a.bind("loadeddata",function(a){return function(){a.busy.setFlag("media",false);a.checkVisibility()}}(this));a.bind("playing",function(b){return function(){b.busy.setFlag("media",
+false);b.bigPlay.setFlag("media",false);a.mediaFile.type!=="audio"&&b.previewFlag.setFlag("media",false);b.checkVisibility()}}(this));a.bind("pause",function(a){return function(){a.bigPlay.setFlag("media",true);a.checkVisibility()}}(this))}})};minplayer.playLoader.prototype.loadPreview=function(){if(this.enabled&&this.elements.preview)if(this.options.preview){this.elements.preview.addClass("has-preview").show();this.preview=new minplayer.image(this.elements.preview,this.options);this.preview.load(this.options.preview)}else this.elements.preview.hide()};
+minplayer.playLoader.prototype.checkVisibility=function(){if(this.enabled){this.busy.flag?this.elements.busy.show():this.elements.busy.hide();this.bigPlay.flag?this.elements.bigPlay.show():this.elements.bigPlay.hide();this.previewFlag.flag?this.elements.preview.show():this.elements.preview.hide();(this.bigPlay.flag||this.busy.flag||this.previewFlag.flag)&&this.display.show();!this.bigPlay.flag&&(!this.busy.flag&&!this.previewFlag.flag)&&this.display.hide()}};minplayer=minplayer||{};
+minplayer.players=minplayer.players||{};minplayer.players.base=function(a,b,c){minplayer.display.call(this,"media",a,b,c)};minplayer.players.base.prototype=new minplayer.display;minplayer.players.base.prototype.constructor=minplayer.players.base;minplayer.players.base.prototype.getElements=function(){var a=minplayer.display.prototype.getElements.call(this);return jQuery.extend(a,{media:this.options.mediaelement})};minplayer.players.base.getPriority=function(){return 0};
+minplayer.players.base.getMediaId=function(){return""};minplayer.players.base.canPlay=function(){return false};
+minplayer.players.base.prototype.construct=function(){minplayer.display.prototype.construct.call(this);this.options.pluginName="basePlayer";this.mediaFile=this.options.file;this.clear();this.playerFound()||this.addPlayer();this.player=this.getPlayer();minplayer.click(this.display,function(a){return function(){minplayer.showAll();a.playing?a.pause():a.play()}}(this));jQuery(document).bind("keydown",function(a){return function(b){if(a.hasFocus){b.preventDefault();switch(b.keyCode){case 32:case 179:a.playing?
+a.pause():a.play();break;case 38:a.setVolumeRelative(0.1);break;case 40:a.setVolumeRelative(-0.1);break;case 37:case 227:a.seekRelative(-0.05);break;case 39:case 228:a.seekRelative(0.05)}}}}(this))};minplayer.players.base.prototype.addPlayer=function(){this.elements.media&&this.elements.media.remove();this.elements.media=jQuery(this.create());this.display.html(this.elements.media)};minplayer.players.base.prototype.destroy=function(){minplayer.plugin.prototype.destroy.call(this);this.clear()};
+minplayer.players.base.prototype.clear=function(){this.playerReady=false;this.reset();this.player&&jQuery(this.player).unbind()};
+minplayer.players.base.prototype.reset=function(){this.duration=new minplayer.async;this.currentTime=new minplayer.async;this.bytesLoaded=new minplayer.async;this.bytesTotal=new minplayer.async;this.bytesStart=new minplayer.async;this.volume=new minplayer.async;this.loading=this.playing=this.hasFocus=false;this.trigger("pause");this.trigger("waiting");this.trigger("progress",{loaded:0,total:0,start:0});this.trigger("timeupdate",{currentTime:0,duration:0})};
+minplayer.players.base.prototype.onReady=function(){if(!this.playerReady){this.playerReady=true;this.setVolume(this.options.volume/100);this.loading=true;this.poll(function(a){return function(){a.loading&&a.getBytesLoaded(function(b){a.getBytesTotal(function(c){if(b||c){var d=0;a.getBytesStart(function(a){d=a});a.trigger("progress",{loaded:b,total:c,start:d});if(b>=c)a.loading=false}})});return a.loading}}(this),1E3);this.ready();this.trigger("loadstart")}};
+minplayer.players.base.prototype.onPlaying=function(){this.trigger("playing");this.playing=this.hasFocus=true;this.poll(function(a){return function(){a.playing&&a.getCurrentTime(function(b){a.getDuration(function(c){b=parseFloat(b);c=parseFloat(c);(b||c)&&a.trigger("timeupdate",{currentTime:b,duration:c})})});return a.playing}}(this),1E3)};minplayer.players.base.prototype.onPaused=function(){this.trigger("pause");this.playing=this.hasFocus=false};
+minplayer.players.base.prototype.onComplete=function(){if(this.playing)this.onPaused();this.hasFocus=this.loading=this.playing=false;this.trigger("ended")};minplayer.players.base.prototype.onLoaded=function(){this.options.autoplay&&this.play();this.trigger("loadeddata")};minplayer.players.base.prototype.onWaiting=function(){this.trigger("waiting")};minplayer.players.base.prototype.onError=function(a){this.hasFocus=false;this.trigger("error",a)};
+minplayer.players.base.prototype.isReady=function(){return this.player&&this.playerReady};minplayer.players.base.prototype.hasPlayLoader=function(){return false};minplayer.players.base.prototype.hasController=function(){return false};minplayer.players.base.prototype.playerFound=function(){return false};minplayer.players.base.prototype.create=function(){this.reset();return null};minplayer.players.base.prototype.getPlayer=function(){return this.player};
+minplayer.players.base.prototype.load=function(a){var b=typeof this.mediaFile=="string"?this.mediaFile:this.mediaFile.path;if(a&&this.isReady()&&a.path!=b){this.reset();this.mediaFile=a;return true}return false};minplayer.players.base.prototype.play=function(){return this.isReady()};minplayer.players.base.prototype.pause=function(){return this.isReady()};minplayer.players.base.prototype.stop=function(){this.hasFocus=this.loading=this.playing=false;return this.isReady()};
+minplayer.players.base.prototype.seekRelative=function(a){this.getCurrentTime(function(b){return function(c){b.getDuration(function(d){if(d){var e=0,e=a>-1&&a<1?(c/d+parseFloat(a))*d:c+parseFloat(a);b.seek(e)}})}}(this))};minplayer.players.base.prototype.seek=function(){return this.isReady()};minplayer.players.base.prototype.getValue=function(a,b){if(this.isReady()){var c=this.player[a]();c!==void 0&&c!==null&&b(c)}};
+minplayer.players.base.prototype.setVolumeRelative=function(a){this.getVolume(function(b){return function(c){c=c+parseFloat(a);c=c<0?0:c;b.setVolume(c>1?1:c)}}(this))};minplayer.players.base.prototype.setVolume=function(a){this.trigger("volumeupdate",a);return this.isReady()};minplayer.players.base.prototype.getVolume=function(a){return this.volume.get(a)};minplayer.players.base.prototype.getCurrentTime=function(a){return this.currentTime.get(a)};minplayer.players.base.prototype.getDuration=function(a){return this.duration.get(a)};
+minplayer.players.base.prototype.getBytesStart=function(a){return this.bytesStart.get(a)};minplayer.players.base.prototype.getBytesLoaded=function(a){return this.bytesLoaded.get(a)};minplayer.players.base.prototype.getBytesTotal=function(a){return this.bytesTotal.get(a)};minplayer=minplayer||{};minplayer.players=minplayer.players||{};minplayer.players.html5=function(a,b,c){minplayer.players.base.call(this,a,b,c)};minplayer.players.html5.prototype=new minplayer.players.base;
+minplayer.players.html5.prototype.constructor=minplayer.players.html5;minplayer.players.html5.getPriority=function(){return 10};
+minplayer.players.html5.canPlay=function(a){switch(a.mimetype){case "video/ogg":return!!minplayer.playTypes.videoOGG;case "video/mp4":case "video/x-mp4":case "video/m4v":case "video/x-m4v":return!!minplayer.playTypes.videoH264;case "video/x-webm":case "video/webm":case "application/octet-stream":return!!minplayer.playTypes.videoWEBM;case "audio/ogg":return!!minplayer.playTypes.audioOGG;case "audio/mpeg":return!!minplayer.playTypes.audioMP3;case "audio/mp4":return!!minplayer.playTypes.audioMP4;default:return false}};
+minplayer.players.html5.prototype.construct=function(){minplayer.players.base.prototype.construct.call(this);this.options.pluginName="html5";this.addPlayerEvents()};minplayer.players.html5.prototype.addPlayerEvent=function(a,b){this.player&&this.player.addEventListener(a,function(c){var d=a+"Event";c[d]&&c.player.removeEventListener(a,c[d],false);c[d]=function(a){b.call(c,a)};return c[d]}(this),false)};
+minplayer.players.html5.prototype.addPlayerEvents=function(){if(this.player){this.addPlayerEvent("abort",function(){this.trigger("abort")});this.addPlayerEvent("loadstart",function(){this.onReady()});this.addPlayerEvent("loadeddata",function(){this.onLoaded()});this.addPlayerEvent("loadedmetadata",function(){this.onLoaded()});this.addPlayerEvent("canplaythrough",function(){this.onLoaded()});this.addPlayerEvent("ended",function(){this.onComplete()});this.addPlayerEvent("pause",function(){this.onPaused()});
+this.addPlayerEvent("play",function(){this.onPlaying()});this.addPlayerEvent("playing",function(){this.onPlaying()});var a=false;this.addPlayerEvent("error",function(){if(!a){a=true;this.trigger("error","An error occured - "+this.player.error.code)}});this.addPlayerEvent("waiting",function(){this.onWaiting()});this.addPlayerEvent("durationchange",function(){this.duration.set(this.player.duration);this.trigger("durationchange",{duration:this.player.duration})});this.addPlayerEvent("progress",function(a){this.bytesTotal.set(a.total);
+this.bytesLoaded.set(a.loaded)});return true}return false};minplayer.players.html5.prototype.onReady=function(){minplayer.players.base.prototype.onReady.call(this);if(minplayer.isAndroid)this.onLoaded();if(minplayer.isIDevice){this.play();var a=this;setTimeout(function(){a.pause();a.onLoaded()},1)}};minplayer.players.html5.prototype.playerFound=function(){return this.display.find(this.mediaFile.type).length>0};
+minplayer.players.html5.prototype.create=function(){minplayer.players.base.prototype.create.call(this);var a=jQuery(document.createElement(this.mediaFile.type)).attr(this.options.attributes).append(jQuery(document.createElement("source")).attr({src:this.mediaFile.path}));a.eq(0)[0].setAttribute("width","100%");a.eq(0)[0].setAttribute("height","100%");a.eq(0)[0].setAttribute("autobuffer",true);var b=this.options.autoload?"auto":"metadata",b=minplayer.isIDevice?"metadata":b;a.eq(0)[0].setAttribute("preload",
+b);return a};minplayer.players.html5.prototype.getPlayer=function(){return this.elements.media.eq(0)[0]};minplayer.players.html5.prototype.load=function(a){if(minplayer.players.base.prototype.load.call(this,a)){var b=this.elements.media.attr("src");b||(b=jQuery("source",this.elements.media).eq(0).attr("src"));if(b!=a.path){this.addPlayer();this.player=this.getPlayer();this.addPlayerEvents();a='<source src="'+a.path+'"></source>';this.elements.media.removeAttr("src").empty().html(a);return true}}return false};
+minplayer.players.html5.prototype.play=function(){if(minplayer.players.base.prototype.play.call(this)){this.player.play();return true}return false};minplayer.players.html5.prototype.pause=function(){if(minplayer.players.base.prototype.pause.call(this)){this.player.pause();return true}return false};minplayer.players.html5.prototype.stop=function(){if(minplayer.players.base.prototype.stop.call(this)){this.player.pause();this.player.src="";return true}return false};
+minplayer.players.html5.prototype.seek=function(a){if(minplayer.players.base.prototype.seek.call(this,a)){this.player.currentTime=a;return true}return false};minplayer.players.html5.prototype.setVolume=function(a){if(minplayer.players.base.prototype.setVolume.call(this,a)){this.player.volume=a;return true}return false};minplayer.players.html5.prototype.getVolume=function(a){this.isReady()&&a(this.player.volume)};minplayer.players.html5.prototype.getDuration=function(a){this.isReady()&&a(this.player.duration)};
+minplayer.players.html5.prototype.getCurrentTime=function(a){this.isReady()&&a(this.player.currentTime)};
+minplayer.players.html5.prototype.getBytesLoaded=function(a){if(this.isReady()){var b=0;if(this.bytesLoaded.value)b=this.bytesLoaded.value;else if(this.player.buffered&&this.player.buffered.length>0&&this.player.buffered.end&&this.player.duration)b=this.player.buffered.end(0);else if(this.player.bytesTotal!=void 0&&this.player.bytesTotal>0&&this.player.bufferedBytes!=void 0)b=this.player.bufferedBytes;a(b)}};
+minplayer.players.html5.prototype.getBytesTotal=function(a){if(this.isReady()){var b=0;if(this.bytesTotal.value)b=this.bytesTotal.value;else if(this.player.buffered&&this.player.buffered.length>0&&this.player.buffered.end&&this.player.duration)b=this.player.duration;else if(this.player.bytesTotal!=void 0&&this.player.bytesTotal>0&&this.player.bufferedBytes!=void 0)b=this.player.bytesTotal;a(b)}};minplayer=minplayer||{};minplayer.players=minplayer.players||{};
+minplayer.players.flash=function(a,b,c){minplayer.players.base.call(this,a,b,c)};minplayer.players.flash.prototype=new minplayer.players.base;minplayer.players.flash.prototype.constructor=minplayer.players.flash;minplayer.players.flash.prototype.construct=function(){minplayer.players.base.prototype.construct.call(this);this.options.pluginName="flash"};minplayer.players.flash.getPriority=function(){return 0};minplayer.players.flash.canPlay=function(){return false};
+minplayer.players.flash.prototype.getFlash=function(a){var b=window.location.protocol;b.charAt(b.length-1)==":"&&(b=b.substring(0,b.length-1));var c=document.createElement("script");c.src=b+"://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js";b=document.getElementsByTagName("script")[0];b.parentNode.insertBefore(c,b);var d=this;setTimeout(function f(){typeof swfobject!=="undefined"?swfobject.embedSWF(a.swf,a.id,a.width,a.height,"9.0.0",false,a.flashvars,{allowscriptaccess:"always",allowfullscreen:"true",
+wmode:a.wmode,quality:"high"},{id:a.id,name:a.id,playerType:"flash"},function(a){d.player=a.ref}):setTimeout(f,200)},200);return'<div id="'+a.id+'"></div>'};minplayer.players.flash.prototype.playerFound=function(){return this.display.find('object[playerType="flash"]').length>0};minplayer=minplayer||{};minplayer.players=minplayer.players||{};minplayer.players.minplayer=function(a,b,c){minplayer.players.flash.call(this,a,b,c)};minplayer.players.minplayer.prototype=new minplayer.players.flash;
+minplayer.players.minplayer.prototype.constructor=minplayer.players.minplayer;minplayer.players.minplayer.prototype.construct=function(){minplayer.players.flash.prototype.construct.call(this);this.options.pluginName="minplayer"};window.onFlashPlayerReady=function(a){for(var a=minplayer.get(a,"media"),b=a.length;b--;)a[b].onReady()};window.onFlashPlayerUpdate=function(a,b){for(var c=minplayer.get(a,"media"),d=c.length;d--;)c[d].onMediaUpdate(b)};
+window.onFlashPlayerDebug=function(a){console&&console.log&&console.log(a)};minplayer.players.minplayer.getPriority=function(){return 1};minplayer.players.minplayer.canPlay=function(a){return!(jQuery.inArray(a.mimetype,["video/x-webm","video/webm","application/octet-stream"])>=0)&&(a.type=="video"||a.type=="audio")};
+minplayer.players.minplayer.prototype.create=function(){this.options=jQuery.extend({swfplayer:"flash/minplayer.swf"},this.options);minplayer.players.flash.prototype.create.call(this);return this.getFlash({swf:this.options.swfplayer,id:this.options.id+"_player",width:"100%",height:"100%",flashvars:{id:this.options.id,debug:this.options.debug,config:"nocontrols",file:this.mediaFile.path,autostart:this.options.autoplay,autoload:this.options.autoload},wmode:this.options.wmode})};
+minplayer.players.minplayer.prototype.onMediaUpdate=function(a){switch(a){case "mediaMeta":this.onLoaded();break;case "mediaPlaying":if(this.minplayerloaded)this.onPlaying();break;case "mediaPaused":this.minplayerloaded=true;this.onPaused();break;case "mediaComplete":this.onComplete()}};minplayer.players.minplayer.prototype.clear=function(){minplayer.players.flash.prototype.clear.call(this);this.minplayerloaded=this.options.autoplay};
+minplayer.players.minplayer.prototype.load=function(a){if(minplayer.players.flash.prototype.load.call(this,a)){this.player.loadMedia(a.path,a.stream);return true}return false};minplayer.players.minplayer.prototype.play=function(){if(minplayer.players.flash.prototype.play.call(this)){this.player.playMedia();return true}return false};minplayer.players.minplayer.prototype.pause=function(){if(minplayer.players.flash.prototype.pause.call(this)){this.player.pauseMedia();return true}return false};
+minplayer.players.minplayer.prototype.stop=function(){if(minplayer.players.flash.prototype.stop.call(this)){this.player.stopMedia();return true}return false};minplayer.players.minplayer.prototype.seek=function(a){if(minplayer.players.flash.prototype.seek.call(this,a)){this.player.seekMedia(a);return true}return false};minplayer.players.minplayer.prototype.setVolume=function(a){if(minplayer.players.flash.prototype.setVolume.call(this,a)){this.player.setVolume(a);return true}return false};
+minplayer.players.minplayer.prototype.getVolume=function(a){if(this.isReady()){var b=0,c=5,d=this;setTimeout(function f(){b=d.player.getVolume();!b&&c-- >0?setTimeout(f,200):a(b)},200)}};minplayer.players.minplayer.prototype.getDuration=function(a){if(this.isReady()){var b=this.player.getDuration();b?a(b):this.poll(function(c){return function(){(b=c.player.getDuration())&&a(b);return!b}}(this),1E3)}};minplayer.players.minplayer.prototype.getCurrentTime=function(a){this.isReady()&&a(this.player.getCurrentTime())};
+minplayer.players.minplayer.prototype.getBytesLoaded=function(a){this.isReady()&&a(this.player.getMediaBytesLoaded())};minplayer.players.minplayer.prototype.getBytesTotal=function(a){this.isReady()&&a(this.player.getMediaBytesTotal())};minplayer=minplayer||{};minplayer.players=minplayer.players||{};minplayer.players.youtube=function(a,b,c){this.quality="default";minplayer.players.base.call(this,a,b,c)};minplayer.players.youtube.prototype=new minplayer.players.base;
+minplayer.players.youtube.prototype.constructor=minplayer.players.youtube;minplayer.players.youtube.prototype.construct=function(){minplayer.players.base.prototype.construct.call(this);this.options.pluginName="youtube"};minplayer.players.youtube.getPriority=function(){return 10};minplayer.players.youtube.canPlay=function(a){return a.mimetype==="video/youtube"?true:a.path.search(/^http(s)?\:\/\/(www\.)?youtube\.com/i)===0};
+minplayer.players.youtube.getMediaId=function(a){var b=/^http[s]?\:\/\/(www\.)?youtube\.com\/watch\?v=([a-zA-Z0-9_\-]+)/i;return a.path.search(b)===0?a.path.match(b)[2]:a.path};minplayer.players.youtube.getImage=function(a,b,c){c("http://img.youtube.com/vi/"+a.id+"/"+(b=="thumbnail"?"1":"0")+".jpg")};
+minplayer.players.youtube.prototype.setPlayerState=function(a){switch(a){case YT.PlayerState.BUFFERING:this.onWaiting();break;case YT.PlayerState.PAUSED:this.onPaused();break;case YT.PlayerState.PLAYING:this.onPlaying();break;case YT.PlayerState.ENDED:this.onComplete()}};minplayer.players.youtube.prototype.onReady=function(){minplayer.players.base.prototype.onReady.call(this);this.options.autoplay||this.pause();this.onLoaded()};
+minplayer.players.youtube.prototype.playerFound=function(){return this.display.find("iframe#"+this.options.id+"-player.youtube-player").length>0};minplayer.players.youtube.prototype.onPlayerStateChange=function(a){this.setPlayerState(a.data)};minplayer.players.youtube.prototype.onQualityChange=function(a){this.quality=a.data};minplayer.players.youtube.prototype.hasPlayLoader=function(a){return minplayer.hasTouch||!a};minplayer.players.youtube.prototype.hasController=function(){return minplayer.isIDevice};
+minplayer.players.youtube.prototype.create=function(){minplayer.players.base.prototype.create.call(this);var a=document.createElement("script");a.src="https://www.youtube.com/player_api";var b=document.getElementsByTagName("script")[0];b.parentNode.insertBefore(a,b);this.playerId=this.options.id+"-player";this.poll(function(a){return function(){var b=jQuery("#"+a.playerId).length>0;if(b=(b=b&&"YT"in window)&&typeof YT.Player=="function"){jQuery("#"+a.playerId).addClass("youtube-player");var e=location.protocol,
+e=e+("//"+location.hostname),e=e+(location.port&&":"+location.port),f={};minplayer.isIDevice?f.origin=e:f={enablejsapi:minplayer.isIDevice?0:1,origin:e,wmode:"opaque",controls:minplayer.isAndroid?1:0};a.player=new YT.Player(a.playerId,{height:"100%",width:"100%",frameborder:0,videoId:a.mediaFile.id,playerVars:f,events:{onReady:function(b){a.onReady(b)},onStateChange:function(b){a.onPlayerStateChange(b)},onPlaybackQualityChange:function(b){a.onQualityChange(b)},onError:function(b){a.onError(b)}}})}return!b}}(this),
+200);return jQuery(document.createElement("div")).attr({id:this.playerId})};minplayer.players.youtube.prototype.load=function(a){if(minplayer.players.base.prototype.load.call(this,a)){this.player.loadVideoById(a.id,0,this.quality);return true}return false};minplayer.players.youtube.prototype.play=function(){if(minplayer.players.base.prototype.play.call(this)){this.onWaiting();this.player.playVideo();return true}return false};
+minplayer.players.youtube.prototype.pause=function(){if(minplayer.players.base.prototype.pause.call(this)){this.player.pauseVideo();return true}return false};minplayer.players.youtube.prototype.stop=function(){if(minplayer.players.base.prototype.stop.call(this)){this.player.stopVideo();return true}return false};minplayer.players.youtube.prototype.seek=function(a){if(minplayer.players.base.prototype.seek.call(this,a)){this.onWaiting();this.player.seekTo(a,true);return true}return false};
+minplayer.players.youtube.prototype.setVolume=function(a){if(minplayer.players.base.prototype.setVolume.call(this,a)){this.player.setVolume(a*100);return true}return false};minplayer.players.youtube.prototype.getVolume=function(a){this.getValue("getVolume",a)};minplayer.players.youtube.prototype.getDuration=function(a){this.getValue("getDuration",a)};minplayer.players.youtube.prototype.getCurrentTime=function(a){this.getValue("getCurrentTime",a)};
+minplayer.players.youtube.prototype.getBytesStart=function(a){this.getValue("getVideoStartBytes",a)};minplayer.players.youtube.prototype.getBytesLoaded=function(a){this.getValue("getVideoBytesLoaded",a)};minplayer.players.youtube.prototype.getBytesTotal=function(a){this.getValue("getVideoBytesTotal",a)};minplayer=minplayer||{};minplayer.players=minplayer.players||{};minplayer.players.vimeo=function(a,b,c){minplayer.players.base.call(this,a,b,c)};minplayer.players.vimeo.prototype=new minplayer.players.base;
+minplayer.players.vimeo.prototype.constructor=minplayer.players.vimeo;minplayer.players.vimeo.prototype.construct=function(){minplayer.players.base.prototype.construct.call(this);this.options.pluginName="vimeo"};minplayer.players.vimeo.getPriority=function(){return 10};minplayer.players.vimeo.canPlay=function(a){return a.mimetype==="video/vimeo"?true:a.path.search(/^http(s)?\:\/\/(www\.)?vimeo\.com/i)===0};minplayer.players.vimeo.prototype.hasPlayLoader=function(a){return minplayer.hasTouch||!a};
+minplayer.players.vimeo.prototype.hasController=function(){return minplayer.hasTouch};minplayer.players.vimeo.getMediaId=function(a){var b=/^http[s]?\:\/\/(www\.)?vimeo\.com\/(\?v\=)?([0-9]+)/i;return a.path.search(b)===0?a.path.match(b)[3]:a.path};minplayer.players.vimeo.getImage=function(a,b,c){jQuery.ajax({url:"http://vimeo.com/api/v2/video/"+a.id+".json",dataType:"jsonp",success:function(a){c(a[0].thumbnail_large)}})};minplayer.players.vimeo.prototype.reset=function(){minplayer.players.base.prototype.reset.call(this)};
+minplayer.players.vimeo.prototype.create=function(){minplayer.players.base.prototype.create.call(this);var a=document.createElement("script");a.src="http://a.vimeocdn.com/js/froogaloop2.min.js";var b=document.getElementsByTagName("script")[0];b.parentNode.insertBefore(a,b);var c=document.createElement("iframe");c.setAttribute("id",this.options.id+"-player");c.setAttribute("type","text/html");c.setAttribute("width","100%");c.setAttribute("height","100%");c.setAttribute("frameborder","0");jQuery(c).addClass("vimeo-player");
+a="http://player.vimeo.com/video/"+(this.mediaFile.id+"?");a=a+jQuery.param({wmode:"opaque",api:1,player_id:this.options.id+"-player",title:0,byline:0,portrait:0,autoplay:this.options.autoplay,loop:this.options.loop});c.setAttribute("src",a);this.poll(function(a){return function(){if(window.Froogaloop){a.player=window.Froogaloop(c);var b=0;a.player.addEvent("ready",function(){clearTimeout(b);a.onReady();a.onError("")});b=setTimeout(function(){a.onReady();a.onError("Unable to play video.")},2E3)}return!window.Froogaloop}}(this),
+200);this.trigger("loadstart");return c};
+minplayer.players.vimeo.prototype.onReady=function(){this.player.addEvent("loadProgress",function(a){return function(b){a.duration.set(parseFloat(b.duration));a.bytesLoaded.set(b.bytesLoaded);a.bytesTotal.set(b.bytesTotal)}}(this));this.player.addEvent("playProgress",function(a){return function(b){a.duration.set(parseFloat(b.duration));a.currentTime.set(parseFloat(b.seconds))}}(this));this.player.addEvent("play",function(a){return function(){a.onPlaying()}}(this));this.player.addEvent("pause",function(a){return function(){a.onPaused()}}(this));
+this.player.addEvent("finish",function(a){return function(){a.onComplete()}}(this));minplayer.players.base.prototype.onReady.call(this);this.onLoaded()};minplayer.players.vimeo.prototype.clear=function(){this.player&&this.player.api("unload");minplayer.players.base.prototype.clear.call(this)};minplayer.players.vimeo.prototype.load=function(a){if(minplayer.players.base.prototype.load.call(this,a)){this.construct();return true}return false};
+minplayer.players.vimeo.prototype.play=function(){if(minplayer.players.base.prototype.play.call(this)){this.player.api("play");return true}return false};minplayer.players.vimeo.prototype.pause=function(){if(minplayer.players.base.prototype.pause.call(this)){this.player.api("pause");return true}return false};minplayer.players.vimeo.prototype.stop=function(){if(minplayer.players.base.prototype.stop.call(this)){this.player.api("unload");return true}return false};
+minplayer.players.vimeo.prototype.seek=function(a){if(minplayer.players.base.prototype.seek.call(this,a)){this.player.api("seekTo",a);return true}return false};minplayer.players.vimeo.prototype.setVolume=function(a){if(minplayer.players.base.prototype.setVolume.call(this,a)){this.volume.set(a);this.player.api("setVolume",a);return true}return false};minplayer.players.vimeo.prototype.getVolume=function(a){this.player.api("getVolume",function(b){a(b)})};
+minplayer.players.vimeo.prototype.getDuration=function(a){this.isReady()&&(this.duration.value?a(this.duration.value):this.player.api("getDuration",function(b){a(b)}))};minplayer=minplayer||{};minplayer.controller=function(a,b){minplayer.display.call(this,"controller",a,b)};minplayer.controller.prototype=new minplayer.display;minplayer.controller.prototype.constructor=minplayer.controller;
+minplayer.formatTime=function(a){var a=a||0,b=0,c=0,d=0,e="",d=Math.floor(a/3600),a=a-d*3600,c=Math.floor(a/60),b=Math.floor((a-c*60)%60);if(d){e=e+String(d);e=e+":"}e=e+(c>=10?String(c):"0"+String(c));e=e+":"+(b>=10?String(b):"0"+String(b));return{time:e,units:""}};minplayer.controller.prototype.getElements=function(){var a=minplayer.display.prototype.getElements.call(this);return jQuery.extend(a,{play:null,pause:null,fullscreen:null,seek:null,progress:null,volume:null,timer:null})};
+minplayer.controller.prototype.construct=function(){minplayer.display.prototype.construct.call(this);this.options.pluginName="controller";this.dragging=false;this.vol=0;if(this.elements.seek)this.seekBar=this.elements.seek.slider({range:"min",create:function(a){jQuery(".ui-slider-range",a.target).addClass("ui-state-active")}});if(this.elements.volume)this.volumeBar=this.elements.volume.slider({range:"min",orientation:"vertical"});this.get("player",function(a){this.elements.fullscreen&&minplayer.click(this.elements.fullscreen.unbind(),
+function(){a.toggleFullScreen()}).css({pointer:"hand"})});this.get("media",function(a){if(a.hasController())this.hide();else{if(this.elements.pause){minplayer.click(this.elements.pause.unbind(),function(b){return function(c){c.preventDefault();b.playPause(false,a)}}(this));a.bind("pause",function(a){return function(){a.setPlayPause(true)}}(this))}if(this.elements.play){minplayer.click(this.elements.play.unbind(),function(b){return function(c){c.preventDefault();b.playPause(true,a)}}(this));a.bind("playing",
+function(a){return function(){a.setPlayPause(false)}}(this))}if(this.elements.duration){a.bind("durationchange",function(a){return function(c,d){a.setTimeString("duration",d.duration)}}(this));a.getDuration(function(a){return function(c){a.setTimeString("duration",c)}}(this))}this.elements.progress&&a.bind("progress",function(a){return function(c,d){a.elements.progress.width((d.total?d.loaded/d.total*100:0)+"%")}}(this));(this.seekBar||this.elements.timer)&&a.bind("timeupdate",function(a){return function(c,
+d){if(!a.dragging){var e=0;d.duration&&(e=d.currentTime/d.duration*100);a.seekBar&&a.seekBar.slider("option","value",e);a.setTimeString("timer",d.currentTime)}}}(this));this.seekBar&&this.seekBar.slider({start:function(a){return function(){a.dragging=true}}(this),stop:function(b){return function(c,d){b.dragging=false;a.getDuration(function(b){a.seek(d.value/100*b)})}}(this),slide:function(b){return function(c,d){a.getDuration(function(c){c=d.value/100*c;b.dragging||a.seek(c);b.setTimeString("timer",
+c)})}}(this)});this.elements.mute&&minplayer.click(this.elements.mute,function(b){return function(c){c.preventDefault();c=b.volumeBar.slider("option","value");if(c>0){b.vol=c;b.volumeBar.slider("option","value",0);a.setVolume(0)}else{b.volumeBar.slider("option","value",b.vol);a.setVolume(b.vol/100)}}}(this));if(this.volumeBar){this.volumeBar.slider({slide:function(b,c){a.setVolume(c.value/100)}});a.bind("volumeupdate",function(a){return function(c,d){a.volumeBar.slider("option","value",d*100)}}(this));
+a.getVolume(function(a){return function(c){a.volumeBar.slider("option","value",c*100)}}(this))}}});this.ready()};minplayer.controller.prototype.setPlayPause=function(a){this.elements.play&&this.elements.play.css("display",a?"inherit":"none");this.elements.pause&&this.elements.pause.css("display",a?"none":"inherit")};minplayer.controller.prototype.playPause=function(a,b){var c=a?"play":"pause";this.display.trigger(c);this.setPlayPause(!a);if(b)b[c]()};
+minplayer.controller.prototype.setTimeString=function(a,b){this.elements[a]&&this.elements[a].text(minplayer.formatTime(b).time)};
diff --git a/public/admin/js/osmplayer/minplayer/bin/minplayer.js b/public/admin/js/osmplayer/minplayer/bin/minplayer.js
new file mode 100644
index 0000000000000000000000000000000000000000..e26f729180c072a419aa24d816582967bed997bf
--- /dev/null
+++ b/public/admin/js/osmplayer/minplayer/bin/minplayer.js
@@ -0,0 +1,4816 @@
+/** The minplayer namespace. */
+var minplayer = minplayer || {};
+
+// Private function to check a single element's play type.
+function checkPlayType(elem, playType) {
+  if ((typeof elem.canPlayType) === 'function') {
+    if (typeof playType === 'object') {
+      var i = playType.length;
+      var mimetype = '';
+      while (i--) {
+        mimetype = checkPlayType(elem, playType[i]);
+        if (!!mimetype) {
+          break;
+        }
+      }
+      return mimetype;
+    }
+    else {
+      var canPlay = elem.canPlayType(playType);
+      if (('no' !== canPlay) && ('' !== canPlay)) {
+        return playType;
+      }
+    }
+  }
+  return '';
+}
+
+/**
+ * @constructor
+ * @class This class is used to define the types of media that can be played
+ * within the browser.
+ * <p>
+ * <strong>Usage:</strong>
+ * <pre><code>
+ *   var playTypes = new minplayer.compatibility();
+ *
+ *   if (playTypes.videoOGG) {
+ *     console.log("This browser can play OGG video");
+ *   }
+ *
+ *   if (playTypes.videoH264) {
+ *     console.log("This browser can play H264 video");
+ *   }
+ *
+ *   if (playTypes.videoWEBM) {
+ *     console.log("This browser can play WebM video");
+ *   }
+ *
+ *   if (playTypes.audioOGG) {
+ *     console.log("This browser can play OGG audio");
+ *   }
+ *
+ *   if (playTypes.audioMP3) {
+ *     console.log("This browser can play MP3 audio");
+ *   }
+ *
+ *   if (playTypes.audioMP4) {
+ *     console.log("This browser can play MP4 audio");
+ *   }
+ * </code></pre>
+ */
+minplayer.compatibility = function() {
+  var elem = null;
+
+  // Create a video element.
+  elem = document.createElement('video');
+
+  /** Can play OGG video */
+  this.videoOGG = checkPlayType(elem, 'video/ogg');
+
+  /** Can play H264 video */
+  this.videoH264 = checkPlayType(elem, [
+    'video/mp4',
+    'video/h264'
+  ]);
+
+  /** Can play WEBM video */
+  this.videoWEBM = checkPlayType(elem, [
+    'video/x-webm',
+    'video/webm',
+    'application/octet-stream'
+  ]);
+
+  // Create an audio element.
+  elem = document.createElement('audio');
+
+  /** Can play audio OGG */
+  this.audioOGG = checkPlayType(elem, 'audio/ogg');
+
+  /** Can play audio MP3 */
+  this.audioMP3 = checkPlayType(elem, 'audio/mpeg');
+
+  /** Can play audio MP4 */
+  this.audioMP4 = checkPlayType(elem, 'audio/mp4');
+};
+
+if (!minplayer.playTypes) {
+
+  /** The compatible playtypes for this browser. */
+  minplayer.playTypes = new minplayer.compatibility();
+
+  /** See if we are an android device. */
+  minplayer.isAndroid = (/android/gi).test(navigator.appVersion);
+
+  /** See if we are an iOS device. */
+  minplayer.isIDevice = (/iphone|ipad/gi).test(navigator.appVersion);
+
+  /** See if we are a playbook device. */
+  minplayer.isPlaybook = (/playbook/gi).test(navigator.appVersion);
+
+  /** See if we are a touchpad device. */
+  minplayer.isTouchPad = (/hp-tablet/gi).test(navigator.appVersion);
+
+  /** Determine if we have a touchscreen. */
+  minplayer.hasTouch = 'ontouchstart' in window && !minplayer.isTouchPad;
+}
+/** The minplayer namespace. */
+var minplayer = minplayer || {};
+
+/**
+ * @constructor
+ * @class This class keeps track of asynchronous get requests for certain
+ * variables within the player.
+ */
+minplayer.async = function() {
+
+  /** The final value of this asynchronous variable. */
+  this.value = null;
+
+  /** The queue of callbacks to call when this value is determined. */
+  this.queue = [];
+};
+
+/**
+ * Retrieve the value of this variable.
+ *
+ * @param {function} callback The function to call when the value is determined.
+ * @param {function} pollValue The poll function to try and get the value every
+ * 1 second if the value is not set.
+ */
+minplayer.async.prototype.get = function(callback, pollValue) {
+
+  // If the value is set, then immediately call the callback, otherwise, just
+  // add it to the queue when the variable is set.
+  if (this.value !== null) {
+    callback(this.value);
+  }
+  else {
+
+    // Add this callback to the queue.
+    this.queue.push(callback);
+  }
+};
+
+/**
+ * Sets the value of an asynchronous value.
+ *
+ * @param {void} val The value to set.
+ */
+minplayer.async.prototype.set = function(val) {
+
+  // Set the value.
+  this.value = val;
+
+  // Get the callback queue length.
+  var i = this.queue.length;
+
+  // Iterate through all the callbacks and call them.
+  if (i) {
+    while (i--) {
+      this.queue[i](val);
+    }
+
+    // Reset the queue.
+    this.queue = [];
+  }
+};
+/** The minplayer namespace. */
+var minplayer = minplayer || {};
+
+/**
+ * @constructor
+ * @class This is a class used to keep track of flag states
+ * which is used to control the busy cursor, big play button, among other
+ * items in which multiple components can have an interest in hiding or
+ * showing a single element on the screen.
+ *
+ * <p>
+ * <strong>Usage:</strong>
+ * <pre><code>
+ *   // Declare a flags variable.
+ *   var flags = new minplayer.flags();
+ *
+ *   // Set the flag based on two components interested in the flag.
+ *   flags.setFlag("component1", true);
+ *   flags.setFlag("component2", true);
+ *
+ *   // Print out the value of the flags. ( Prints 3 )
+ *   console.log(flags.flags);
+ *
+ *   // Now unset a single components flag.
+ *   flags.setFlag("component1", false);
+ *
+ *   // Print out the value of the flags.
+ *   console.log(flags.flags);
+ *
+ *   // Unset the other components flag.
+ *   flags.setFlag("component2", false);
+ *
+ *   // Print out the value of the flags.
+ *   console.log(flags.flags);
+ * </code></pre>
+ * </p>
+ */
+minplayer.flags = function() {
+
+  /** The flag. */
+  this.flag = 0;
+
+  /** Id map to reference id with the flag index. */
+  this.ids = {};
+
+  /** The number of flags. */
+  this.numFlags = 0;
+};
+
+/**
+ * Sets a flag based on boolean logic operators.
+ *
+ * @param {string} id The id of the controller interested in this flag.
+ * @param {boolean} value The value of this flag ( true or false ).
+ */
+minplayer.flags.prototype.setFlag = function(id, value) {
+
+  // Define this id if it isn't present.
+  if (!this.ids.hasOwnProperty(id)) {
+    this.ids[id] = this.numFlags;
+    this.numFlags++;
+  }
+
+  // Use binary operations to keep track of the flag state
+  if (value) {
+    this.flag |= (1 << this.ids[id]);
+  }
+  else {
+    this.flag &= ~(1 << this.ids[id]);
+  }
+};
+/** The minplayer namespace. */
+minplayer = minplayer || {};
+
+/** Static array to keep track of all plugins. */
+minplayer.plugins = minplayer.plugins || {};
+
+/** Static array to keep track of queues. */
+minplayer.queue = minplayer.queue || [];
+
+/** Mutex lock to keep multiple triggers from occuring. */
+minplayer.lock = false;
+
+/**
+ * @constructor
+ * @class The base class for all plugins.
+ *
+ * @param {string} name The name of this plugin.
+ * @param {object} context The jQuery context.
+ * @param {object} options This components options.
+ * @param {object} queue The event queue to pass events around.
+ */
+minplayer.plugin = function(name, context, options, queue) {
+
+  /** The name of this plugin. */
+  this.name = name;
+
+  /** The ready flag. */
+  this.pluginReady = false;
+
+  /** The options for this plugin. */
+  this.options = options || {};
+
+  /** The event queue. */
+  this.queue = queue || {};
+
+  /** Keep track of already triggered events. */
+  this.triggered = {};
+
+  /** Create a queue lock. */
+  this.lock = false;
+
+  // Only call the constructor if we have a context.
+  if (context) {
+
+    /** Say that we are active. */
+    this.active = true;
+
+    /** Keep track of the context. */
+    this.context = jQuery(context);
+
+    // Construct this plugin.
+    this.construct();
+  }
+};
+
+/**
+ * The constructor which is called once the context is set.
+ * Any class deriving from the plugin class should place all context
+ * dependant functionality within this function instead of the standard
+ * constructor function since it is called on object derivation as well
+ * as object creation.
+ */
+minplayer.plugin.prototype.construct = function() {
+
+  // Adds this as a plugin.
+  this.addPlugin();
+};
+
+/**
+ * Destructor.
+ */
+minplayer.plugin.prototype.destroy = function() {
+
+  // Unbind all events.
+  this.active = false;
+  this.unbind();
+};
+
+/**
+ * Creates a new plugin within this context.
+ *
+ * @param {string} name The name of the plugin you wish to create.
+ * @param {object} base The base object for this plugin.
+ * @param {object} context The context which you would like to create.
+ * @return {object} The new plugin object.
+ */
+minplayer.plugin.prototype.create = function(name, base, context) {
+  var plugin = null;
+
+  // Make sure we have a base object.
+  base = base || 'minplayer';
+  if (!window[base][name]) {
+    base = 'minplayer';
+  }
+
+  // Make sure there is a context.
+  context = context || this.display;
+
+  // See if this plugin exists within this object.
+  if (window[base][name]) {
+
+    // Set the plugin.
+    plugin = window[base][name];
+
+    // See if a template version of the plugin exists.
+    if (plugin[this.options.template]) {
+
+      plugin = plugin[this.options.template];
+    }
+
+    // Make sure the plugin is a function.
+    if (typeof plugin !== 'function') {
+      plugin = window['minplayer'][name];
+    }
+
+    // Make sure it is a function.
+    if (typeof plugin === 'function') {
+      return new plugin(context, this.options);
+    }
+  }
+
+  return null;
+};
+
+/**
+ * Plugins should call this method when they are ready.
+ */
+minplayer.plugin.prototype.ready = function() {
+
+  // Keep this plugin from triggering multiple ready events.
+  if (!this.pluginReady) {
+
+    // Set the ready flag.
+    this.pluginReady = true;
+
+    // Now trigger that I am ready.
+    this.trigger('ready');
+
+    // Check the queue.
+    this.checkQueue();
+  }
+};
+
+/**
+ * Returns if this component is valid.
+ *
+ * @return {boolean} TRUE if the plugin display is valid.
+ */
+minplayer.plugin.prototype.isValid = function() {
+  return !!this.options.id && this.active;
+};
+
+/**
+ * Adds a new plugin to this player.
+ *
+ * @param {string} name The name of this plugin.
+ * @param {object} plugin A new plugin object, derived from media.plugin.
+ */
+minplayer.plugin.prototype.addPlugin = function(name, plugin) {
+  name = name || this.name;
+  plugin = plugin || this;
+
+  // Make sure the plugin is valid.
+  if (plugin.isValid()) {
+
+    // If the plugins for this instance do not exist.
+    if (!minplayer.plugins[this.options.id]) {
+
+      // Initialize the plugins.
+      minplayer.plugins[this.options.id] = {};
+    }
+
+    if (!minplayer.plugins[this.options.id][name]) {
+
+      // Add the plugins array.
+      minplayer.plugins[this.options.id][name] = [];
+    }
+
+    // Add this plugin.
+    minplayer.plugins[this.options.id][name].push(plugin);
+
+    // Now check the queue for this plugin.
+    this.checkQueue(plugin);
+  }
+};
+
+/**
+ * Create a polling timer.
+ *
+ * @param {function} callback The function to call when you poll.
+ * @param {integer} interval The interval you would like to poll.
+ */
+minplayer.plugin.prototype.poll = function(callback, interval) {
+  setTimeout((function(context) {
+    return function callLater() {
+      if (callback.call(context)) {
+        setTimeout(callLater, interval);
+      }
+    };
+  })(this), interval);
+};
+
+/**
+ * Gets a plugin by name and calls callback when it is ready.
+ *
+ * @param {string} plugin The plugin of the plugin.
+ * @param {function} callback Called when the plugin is ready.
+ * @return {object} The plugin if no callback is provided.
+ */
+minplayer.plugin.prototype.get = function(plugin, callback) {
+
+  // If they pass just a callback, then return all plugins when ready.
+  if (typeof plugin === 'function') {
+    callback = plugin;
+    plugin = null;
+  }
+
+  // Return the minplayer.get equivalent.
+  return minplayer.get.call(this, this.options.id, plugin, callback);
+};
+
+/**
+ * Check the queue and execute it.
+ *
+ * @param {object} plugin The plugin object to check the queue against.
+ */
+minplayer.plugin.prototype.checkQueue = function(plugin) {
+
+  // Initialize our variables.
+  var q = null, i = 0, check = false, newqueue = [];
+
+  // Normalize the plugin variable.
+  plugin = plugin || this;
+
+  // Set the lock.
+  minplayer.lock = true;
+
+  // Iterate through all the queues.
+  var length = minplayer.queue.length;
+  for (i = 0; i < length; i++) {
+    if (minplayer.queue.hasOwnProperty(i)) {
+      // Get the queue.
+      q = minplayer.queue[i];
+
+      // Now check to see if this queue is about us.
+      check = !q.id && !q.plugin;
+      check |= (q.plugin == plugin.name);
+      check &= (!q.id || (q.id == this.options.id));
+
+      // If the check passes...
+      if (check) {
+        check = minplayer.bind.call(
+          q.context,
+          q.event,
+          this.options.id,
+          plugin.name,
+          q.callback
+        );
+      }
+
+      // Add the queue back if it doesn't check out.
+      if (!check) {
+
+        // Add this back to the queue.
+        newqueue.push(q);
+      }
+    }
+  }
+
+  // Set the old queue to the new queue.
+  minplayer.queue = newqueue;
+
+  // Release the lock.
+  minplayer.lock = false;
+};
+
+/**
+ * Trigger a media event.
+ *
+ * @param {string} type The event type.
+ * @param {object} data The event data object.
+ * @return {object} The plugin object.
+ */
+minplayer.plugin.prototype.trigger = function(type, data) {
+
+  // Don't trigger if this plugin is inactive.
+  if (!this.active) {
+    return this;
+  }
+
+  // Add this to our triggered array.
+  this.triggered[type] = data;
+
+  // Check to make sure the queue for this type exists.
+  if (this.queue.hasOwnProperty(type)) {
+
+    var i = 0, queue = {}, queuetype = this.queue[type];
+
+    // Iterate through all the callbacks in this queue.
+    for (i in queuetype) {
+
+      // Check to make sure the queue index exists.
+      if (queuetype.hasOwnProperty(i)) {
+
+        // Setup the event object, and call the callback.
+        queue = queuetype[i];
+        queue.callback({target: this, data: queue.data}, data);
+      }
+    }
+  }
+
+  // Return the plugin object.
+  return this;
+};
+
+/**
+ * Bind to a media event.
+ *
+ * @param {string} type The event type.
+ * @param {object} data The data to bind with the event.
+ * @param {function} fn The callback function.
+ * @return {object} The plugin object.
+ **/
+minplayer.plugin.prototype.bind = function(type, data, fn) {
+
+  // Only bind if active.
+  if (!this.active) {
+    return this;
+  }
+
+  // Allow the data to be the callback.
+  if (typeof data === 'function') {
+    fn = data;
+    data = null;
+  }
+
+  // You must bind to a specific event and have a callback.
+  if (!type || !fn) {
+    return;
+  }
+
+  // Initialize the queue for this type.
+  this.queue[type] = this.queue[type] || [];
+
+  // Unbind any existing equivalent events.
+  this.unbind(type, fn);
+
+  // Now add this event to the queue.
+  this.queue[type].push({
+    callback: fn,
+    data: data
+  });
+
+  // Now see if this event has already been triggered.
+  if (this.triggered.hasOwnProperty(type)) {
+
+    // Go ahead and trigger the event.
+    fn({target: this, data: data}, this.triggered[type]);
+  }
+
+  // Return the plugin.
+  return this;
+};
+
+/**
+ * Unbind a media event.
+ *
+ * @param {string} type The event type.
+ * @param {function} fn The callback function.
+ * @return {object} The plugin object.
+ **/
+minplayer.plugin.prototype.unbind = function(type, fn) {
+
+  // If this is locked then try again after 10ms.
+  if (this.lock) {
+    setTimeout((function(plugin) {
+      return function() {
+        plugin.unbind(type, fn);
+      };
+    })(this), 10);
+  }
+
+  // Set the lock.
+  this.lock = true;
+
+  // Get the queue type.
+  var queuetype = this.queue.hasOwnProperty(type) ? this.queue[type] : null;
+
+  if (!type) {
+    this.queue = {};
+  }
+  else if (!fn) {
+    this.queue[type] = [];
+  }
+  else if (queuetype) {
+    // Iterate through all the callbacks and search for equal callbacks.
+    var i = 0, queue = {};
+    for (i in queuetype) {
+      if (queuetype.hasOwnProperty(i)) {
+        if (queuetype[i].callback === fn) {
+          queue = this.queue[type].splice(i, 1);
+          delete queue;
+        }
+      }
+    }
+  }
+
+  // Reset the lock.
+  this.lock = false;
+
+  // Return the plugin.
+  return this;
+};
+
+/**
+ * Adds an item to the queue.
+ *
+ * @param {object} context The context which this is called within.
+ * @param {string} event The event to trigger on.
+ * @param {string} id The player ID.
+ * @param {string} plugin The name of the plugin.
+ * @param {function} callback Called when the event occurs.
+ */
+minplayer.addQueue = function(context, event, id, plugin, callback) {
+
+  // See if it is locked...
+  if (!minplayer.lock) {
+    minplayer.queue.push({
+      context: context,
+      id: id,
+      event: event,
+      plugin: plugin,
+      callback: callback
+    });
+  }
+  else {
+
+    // If so, then try again after 10 milliseconds.
+    setTimeout(function() {
+      minplayer.addQueue(context, id, event, plugin, callback);
+    }, 10);
+  }
+};
+
+/**
+ * Binds an event to a plugin instance, and if it doesn't exist, then caches
+ * it for a later time.
+ *
+ * @param {string} event The event to trigger on.
+ * @param {string} id The player ID.
+ * @param {string} plugin The name of the plugin.
+ * @param {function} callback Called when the event occurs.
+ * @return {boolean} If the bind was successful.
+ * @this The object in context who called this method.
+ */
+minplayer.bind = function(event, id, plugin, callback) {
+
+  // If no callback exists, then just return false.
+  if (!callback) {
+    return false;
+  }
+
+  // Get the plugins.
+  var plugins = minplayer.plugins;
+
+  // Determine the selected plugins.
+  var selected = [];
+
+  // Create a quick add.
+  var addSelected = function(id, plugin) {
+    if (plugins.hasOwnProperty(id) && plugins[id].hasOwnProperty(plugin)) {
+      var i = plugins[id][plugin].length;
+      while (i--) {
+        selected.push(plugins[id][plugin][i]);
+      }
+    }
+  };
+
+  // If they provide id && plugin
+  if (id && plugin) {
+    addSelected(id, plugin);
+  }
+
+  // If they provide no id but a plugin.
+  else if (!id && plugin) {
+    for (var id in plugins) {
+      addSelected(id, plugin);
+    }
+  }
+
+  // If they provide an id but no plugin.
+  else if (id && !plugin && plugins[id]) {
+    for (var plugin in plugins[id]) {
+      addSelected(id, plugin);
+    }
+  }
+
+  // If they provide niether an id or a plugin.
+  else if (!id && !plugin) {
+    for (var id in plugins) {
+      for (var plugin in plugins[id]) {
+        addSelected(id, plugin);
+      }
+    }
+  }
+
+  // Iterate through the selected plugins and bind.
+  var i = selected.length;
+  while (i--) {
+    selected[i].bind(event, (function(context) {
+      return function(event) {
+        callback.call(context, event.target);
+      };
+    })(this));
+  }
+
+  // Add it to the queue for post bindings...
+  minplayer.addQueue(this, event, id, plugin, callback);
+
+  // Return that this wasn't handled.
+  return (selected.length > 0);
+};
+
+/**
+ * The main API for minPlayer.
+ *
+ * Provided that this function takes three parameters, there are 8 different
+ * ways to use this api.
+ *
+ *   id (0x100) - You want a specific player.
+ *   plugin (0x010) - You want a specific plugin.
+ *   callback (0x001) - You only want it when it is ready.
+ *
+ *   000 - You want all plugins from all players, ready or not.
+ *
+ *          var plugins = minplayer.get();
+ *
+ *   001 - You want all plugins from all players, but only when ready.
+ *
+ *          minplayer.get(function(plugin) {
+ *            // Code goes here.
+ *          });
+ *
+ *   010 - You want a specific plugin from all players, ready or not...
+ *
+ *          var medias = minplayer.get(null, 'media');
+ *
+ *   011 - You want a specific plugin from all players, but only when ready.
+ *
+ *          minplayer.get('player', function(player) {
+ *            // Code goes here.
+ *          });
+ *
+ *   100 - You want all plugins from a specific player, ready or not.
+ *
+ *          var plugins = minplayer.get('player_id');
+ *
+ *   101 - You want all plugins from a specific player, but only when ready.
+ *
+ *          minplayer.get('player_id', null, function(plugin) {
+ *            // Code goes here.
+ *          });
+ *
+ *   110 - You want a specific plugin from a specific player, ready or not.
+ *
+ *          var plugin = minplayer.get('player_id', 'media');
+ *
+ *   111 - You want a specific plugin from a specific player, only when ready.
+ *
+ *          minplayer.get('player_id', 'media', function(media) {
+ *            // Code goes here.
+ *          });
+ *
+ * @this The context in which this function was called.
+ * @param {string} id The ID of the widget to get the plugins from.
+ * @param {string} plugin The name of the plugin.
+ * @param {function} callback Called when the plugin is ready.
+ * @return {object} The plugin object if it is immediately available.
+ */
+minplayer.get = function(id, plugin, callback) {
+
+  // Normalize the arguments for a better interface.
+  if (typeof id === 'function') {
+    callback = id;
+    plugin = id = null;
+  }
+
+  if (typeof plugin === 'function') {
+    callback = plugin;
+    plugin = id;
+    id = null;
+  }
+
+  // Make sure the callback is a callback.
+  callback = (typeof callback === 'function') ? callback : null;
+
+  // If a callback was provided, then just go ahead and bind.
+  if (callback) {
+    minplayer.bind.call(this, 'ready', id, plugin, callback);
+    return;
+  }
+
+  // Get the plugins.
+  var plugins = minplayer.plugins;
+
+  // 0x000
+  if (!id && !plugin && !callback) {
+    return plugins;
+  }
+  // 0x100
+  else if (id && !plugin && !callback) {
+    return plugins[id];
+  }
+  // 0x110
+  else if (id && plugin && !callback) {
+    return plugins[id][plugin];
+  }
+  // 0x010
+  else if (!id && plugin && !callback) {
+    var plugin_types = [];
+    for (var id in plugins) {
+      if (plugins.hasOwnProperty(id) && plugins[id].hasOwnProperty(plugin)) {
+        var i = plugins[id][plugin].length;
+        while (i--) {
+          plugin_types.push(plugins[id][plugin][i]);
+        }
+      }
+    }
+    return plugin_types;
+  }
+};
+/** The minplayer namespace. */
+minplayer = minplayer || {};
+
+/**
+ * @constructor
+ * @extends minplayer.plugin
+ * @class Base class used to provide the display and options for any component
+ * deriving from this class.  Components who derive are expected to provide
+ * the elements that they define by implementing the getElements method.
+ *
+ * @param {string} name The name of this plugin.
+ * @param {object} context The jQuery context this component resides.
+ * @param {object} options The options for this component.
+ * @param {object} queue The event queue to pass events around.
+ */
+minplayer.display = function(name, context, options, queue) {
+
+  // Derive from plugin
+  minplayer.plugin.call(this, name, context, options, queue);
+};
+
+/** Derive from minplayer.plugin. */
+minplayer.display.prototype = new minplayer.plugin();
+
+/** Reset the constructor. */
+minplayer.display.prototype.constructor = minplayer.display;
+
+/**
+ * Returns the display for this component.
+ *
+ * @return {object} The jQuery context for this display.
+ */
+minplayer.display.prototype.getDisplay = function() {
+  return this.context;
+};
+
+/**
+ * @see minplayer.plugin.construct
+ */
+minplayer.display.prototype.construct = function() {
+
+  // Set the display.
+  this.display = this.getDisplay(this.context, this.options);
+
+  // Call the plugin constructor.
+  minplayer.plugin.prototype.construct.call(this);
+
+  // Set the plugin name within the options.
+  this.options.pluginName = 'display';
+
+  // Get the display elements.
+  this.elements = this.getElements();
+
+  // Only do this if they allow resize for this display.
+  if (this.onResize) {
+
+    // Set the resize timeout and this pointer.
+    var resizeTimeout = 0;
+
+    // Add a handler to trigger a resize event.
+    jQuery(window).resize((function(display) {
+      return function() {
+        clearTimeout(resizeTimeout);
+        resizeTimeout = setTimeout(function() {
+          display.onResize();
+        }, 200);
+      };
+    })(this));
+  }
+};
+
+/**
+ * Called when the window resizes.
+ */
+minplayer.display.prototype.onResize = false;
+
+/**
+ * Wrapper around hide that will always not show.
+ *
+ * @param {object} element The element you wish to hide.
+ */
+minplayer.display.prototype.hide = function(element) {
+  element = element || this.display;
+  if (element) {
+    element.forceHide = true;
+    element.unbind().hide();
+  }
+};
+
+/**
+ * Gets the full screen element.
+ *
+ * @return {object} The display to be used for full screen support.
+ */
+minplayer.display.prototype.fullScreenElement = function() {
+  return this.display;
+};
+
+/**
+ * Fix for the click function in jQuery to be cross platform.
+ *
+ * @param {object} element The element that will be clicked.
+ * @param {function} fn Called when the element is clicked.
+ * @return {object} The element that is to be clicked.
+ */
+minplayer.click = function(element, fn) {
+  var flag = false;
+  element = jQuery(element);
+  element.bind('touchstart click', function(event) {
+    if (!flag) {
+      flag = true;
+      setTimeout(function() {
+        flag = false;
+      }, 100);
+      fn.call(this, event);
+    }
+  });
+  return element;
+};
+
+/**
+ * Determines if the player is in focus or not.
+ *
+ * @param {boolean} focus If the player is in focus.
+ */
+minplayer.display.prototype.onFocus = function(focus) {
+  this.hasFocus = this.focus = focus;
+};
+
+/** Keep track of all the show hide elements. */
+minplayer.showHideElements = [];
+
+/**
+ * Show all the show hide elements.
+ */
+minplayer.showAll = function() {
+  var i = minplayer.showHideElements.length;
+  var obj = null;
+  while (i--) {
+    obj = minplayer.showHideElements[i];
+    minplayer.showThenHide(obj.element, obj.timeout, obj.callback);
+  }
+};
+
+/**
+ * Stops the whole show then hide from happening.
+ *
+ * @param {object} element The element you want the showThenHide to stop.
+ */
+minplayer.stopShowThenHide = function(element) {
+  element = jQuery(element);
+  if (element.showTimer) {
+    clearTimeout(element.showTimer);
+  }
+  element.stopShowThenHide = true;
+  element.shown = true;
+  element.show();
+};
+
+/**
+ * Called if you would like for your display item to show then hide.
+ *
+ * @param {object} element The element you would like to hide or show.
+ * @param {number} timeout The timeout to hide and show.
+ * @param {function} callback Called when something happens.
+ */
+minplayer.showThenHide = function(element, timeout, callback) {
+
+  // If no element exists, then just return.
+  if (!element) {
+    return;
+  }
+
+  // Ensure we have a timeout.
+  timeout = timeout || 5000;
+
+  // If this has not yet been configured.
+  if (!element.showTimer) {
+    element.shown = true;
+    element.stopShowThenHide = false;
+
+    // Add this to our showHideElements.
+    minplayer.showHideElements.push({
+      element: element,
+      timeout: timeout,
+      callback: callback
+    });
+
+    // Bind to a click event.
+    minplayer.click(document, function() {
+      if (!element.stopShowThenHide) {
+        minplayer.showThenHide(element, timeout, callback);
+      }
+    });
+
+    // Bind to the mousemove event.
+    jQuery(document).bind('mousemove', function() {
+      if (!element.stopShowThenHide) {
+        minplayer.showThenHide(element, timeout, callback);
+      }
+    });
+  }
+
+  // Clear the timeout, and then setup the show then hide functionality.
+  clearTimeout(element.showTimer);
+
+  // Show the display.
+  if (!element.shown && !element.forceHide) {
+    element.shown = true;
+    element.show();
+    if (callback) {
+      callback(true);
+    }
+  }
+
+  // Set a timer to hide it after the timeout.
+  element.showTimer = setTimeout(function() {
+    element.hide('slow', function() {
+      element.shown = false;
+      if (callback) {
+        callback(false);
+      }
+    });
+  }, timeout);
+};
+
+/**
+ * Make this display element go fullscreen.
+ *
+ * @param {boolean} full Tell the player to go into fullscreen or not.
+ */
+minplayer.display.prototype.fullscreen = function(full) {
+  var isFull = this.isFullScreen();
+  var element = this.fullScreenElement();
+  if (isFull && !full) {
+    element.removeClass('fullscreen');
+    if (screenfull) {
+      screenfull.exit();
+    }
+    this.trigger('fullscreen', false);
+  }
+  else if (!isFull && full) {
+    element.addClass('fullscreen');
+    if (screenfull) {
+      screenfull.request(element[0]);
+      screenfull.onchange = (function(display) {
+        return function(e) {
+          if (!screenfull.isFullscreen) {
+            display.fullscreen(false);
+          }
+        };
+      })(this);
+    }
+    this.trigger('fullscreen', true);
+  }
+};
+
+/**
+ * Toggle fullscreen.
+ */
+minplayer.display.prototype.toggleFullScreen = function() {
+  this.fullscreen(!this.isFullScreen());
+};
+
+/**
+ * Checks to see if we are in fullscreen mode.
+ *
+ * @return {boolean} TRUE - fullscreen, FALSE - otherwise.
+ */
+minplayer.display.prototype.isFullScreen = function() {
+  return this.fullScreenElement().hasClass('fullscreen');
+};
+
+/**
+ * Returns a scaled rectangle provided a ratio and the container rect.
+ *
+ * @param {number} ratio The width/height ratio of what is being scaled.
+ * @param {object} rect The bounding rectangle for scaling.
+ * @return {object} The Rectangle object of the scaled rectangle.
+ */
+minplayer.display.prototype.getScaledRect = function(ratio, rect) {
+  var scaledRect = {};
+  scaledRect.x = rect.x ? rect.x : 0;
+  scaledRect.y = rect.y ? rect.y : 0;
+  scaledRect.width = rect.width ? rect.width : 0;
+  scaledRect.height = rect.height ? rect.height : 0;
+  if (ratio) {
+    if ((rect.width / rect.height) > ratio) {
+      scaledRect.height = rect.height;
+      scaledRect.width = Math.floor(rect.height * ratio);
+    }
+    else {
+      scaledRect.height = Math.floor(rect.width / ratio);
+      scaledRect.width = rect.width;
+    }
+    scaledRect.x = Math.floor((rect.width - scaledRect.width) / 2);
+    scaledRect.y = Math.floor((rect.height - scaledRect.height) / 2);
+  }
+  return scaledRect;
+};
+
+/**
+ * Returns all the jQuery elements that this component uses.
+ *
+ * @return {object} An object which defines all the jQuery elements that
+ * this component uses.
+ */
+minplayer.display.prototype.getElements = function() {
+  return {};
+};
+
+/**
+ * From https://github.com/sindresorhus/screenfull.js
+ */
+/*global Element:true*/
+(function(window, document) {
+  'use strict';
+  var methods = (function() {
+    var methodMap = [
+      [
+        'requestFullscreen',
+        'exitFullscreen',
+        'fullscreenchange',
+        'fullscreen',
+        'fullscreenElement'
+      ],
+      [
+        'webkitRequestFullScreen',
+        'webkitCancelFullScreen',
+        'webkitfullscreenchange',
+        'webkitIsFullScreen',
+        'webkitCurrentFullScreenElement'
+      ],
+      [
+        'mozRequestFullScreen',
+        'mozCancelFullScreen',
+        'mozfullscreenchange',
+        'mozFullScreen',
+        'mozFullScreenElement'
+      ]
+    ];
+    for (var i = 0, l = methodMap.length; i < l; i++) {
+      if (methodMap.hasOwnProperty(i)) {
+        var val = methodMap[i];
+        if (val[1] in document) {
+          return val;
+        }
+      }
+    }
+  })();
+
+  if (!methods) {
+    return window.screenfull = false;
+  }
+
+  var keyboardAllowed = 'ALLOW_KEYBOARD_INPUT' in Element;
+
+  var screenfull = {
+    init: function() {
+      document.addEventListener(methods[2], function(e) {
+        screenfull.isFullscreen = document[methods[3]];
+        screenfull.element = document[methods[4]];
+        screenfull.onchange(e);
+      });
+      return this;
+    },
+    isFullscreen: document[methods[3]],
+    element: document[methods[4]],
+    request: function(elem) {
+      elem = elem || document.documentElement;
+      elem[methods[0]](keyboardAllowed && Element.ALLOW_KEYBOARD_INPUT);
+      // Work around Safari 5.1 bug: reports support for keyboard in fullscreen
+      // even though it doesn't.
+      if (!document.isFullscreen) {
+        elem[methods[0]]();
+      }
+    },
+    exit: function() {
+      document[methods[1]]();
+    },
+    toggle: function(elem) {
+      if (this.isFullscreen) {
+        this.exit();
+      } else {
+        this.request(elem);
+      }
+    },
+    onchange: function() {}
+  };
+
+  window.screenfull = screenfull.init();
+})(window, document);
+// Add a way to instanciate using jQuery prototype.
+if (!jQuery.fn.minplayer) {
+
+  /**
+   * @constructor
+   *
+   * Define a jQuery minplayer prototype.
+   *
+   * @param {object} options The options for this jQuery prototype.
+   * @return {Array} jQuery object.
+   */
+  jQuery.fn.minplayer = function(options) {
+    return jQuery(this).each(function() {
+      options = options || {};
+      options.id = options.id || jQuery(this).attr('id') || Math.random();
+      if (!minplayer.plugins[options.id]) {
+        options.template = options.template || 'default';
+        if (minplayer[options.template]) {
+          new minplayer[options.template](jQuery(this), options);
+        }
+        else {
+          new minplayer(jQuery(this), options);
+        }
+      }
+    });
+  };
+}
+
+/**
+ * @constructor
+ * @extends minplayer.display
+ * @class The core media player class which governs the media player
+ * functionality.
+ *
+ * <p><strong>Usage:</strong>
+ * <pre><code>
+ *
+ *   // Create a media player.
+ *   var player = jQuery("#player").minplayer({
+ *
+ *   });
+ *
+ * </code></pre>
+ * </p>
+ *
+ * @param {object} context The jQuery context.
+ * @param {object} options This components options.
+ */
+minplayer = jQuery.extend(function(context, options) {
+
+  // Derive from display
+  minplayer.display.call(this, 'player', context, options);
+}, minplayer);
+
+/** Derive from minplayer.display. */
+minplayer.prototype = new minplayer.display();
+
+/** Reset the constructor. */
+minplayer.prototype.constructor = minplayer;
+
+/**
+ * @see minplayer.plugin.construct
+ */
+minplayer.prototype.construct = function() {
+
+  // Allow them to provide arguments based off of the DOM attributes.
+  jQuery.each(this.context[0].attributes, (function(player) {
+    return function(index, attr) {
+      player.options[attr.name] = player.options[attr.name] || attr.value;
+    };
+  })(this));
+
+  // Make sure we provide default options...
+  this.options = jQuery.extend({
+    id: 'player',
+    build: false,
+    wmode: 'transparent',
+    preload: true,
+    autoplay: false,
+    autoload: true,
+    loop: false,
+    width: '100%',
+    height: '350px',
+    debug: false,
+    volume: 80,
+    files: null,
+    file: '',
+    preview: '',
+    attributes: {},
+    logo: '',
+    link: '',
+    width: '100%',
+    height: '100%'
+  }, this.options);
+
+  // Call the minplayer display constructor.
+  minplayer.display.prototype.construct.call(this);
+
+  // Set the plugin name within the options.
+  this.options.pluginName = 'player';
+
+  /** The controller for this player. */
+  this.controller = this.create('controller');
+
+  /** The play loader for this player. */
+  this.playLoader = this.create('playLoader');
+
+  // Set the focus of the element based on if they click in or outside of it.
+  minplayer.click(document, (function(player) {
+    return function(event) {
+      var target = jQuery(event.target);
+      var focus = !(target.closest('#' + player.options.id).length == 0);
+      minplayer.get.call(this, player.options.id, null, function(plugin) {
+        plugin.onFocus(focus);
+      });
+    };
+  })(this));
+
+  /** Add the logo for the player. */
+  if (this.options.logo && this.elements.logo) {
+
+    var code = '';
+    if (this.options.link) {
+      code += '<a target="_blank" href="' + this.options.link + '">';
+    }
+    code += '<img src="' + this.options.logo + '" >';
+    if (this.options.link) {
+      code += '</a>';
+    }
+    this.logo = this.elements.logo.append(code);
+  }
+
+  /** Variable to store the current media player. */
+  this.currentPlayer = 'html5';
+
+  // Add key events to the window.
+  this.addKeyEvents();
+
+  // Called to add events.
+  this.addEvents();
+
+  // Now load these files.
+  this.load(this.getFiles());
+
+  // The player is ready.
+  this.ready();
+};
+
+/**
+ * Called when an error occurs.
+ *
+ * @param {object} plugin The plugin you wish to bind to.
+ */
+minplayer.prototype.bindTo = function(plugin) {
+  plugin.bind('error', (function(player) {
+    return function(event, data) {
+      if (player.currentPlayer == 'html5') {
+        minplayer.player = 'minplayer';
+        player.options.file.player = 'minplayer';
+        player.loadPlayer();
+      }
+      else {
+        player.showError(data);
+      }
+    };
+  })(this));
+
+  // Bind to the fullscreen event.
+  plugin.bind('fullscreen', (function(player) {
+    return function(event, data) {
+      player.resize();
+    };
+  })(this));
+};
+
+/**
+ * We need to bind to events we are interested in.
+ */
+minplayer.prototype.addEvents = function() {
+  minplayer.get.call(this, this.options.id, null, (function(player) {
+    return function(plugin) {
+      player.bindTo(plugin);
+    };
+  })(this));
+};
+
+/**
+ * Sets an error on the player.
+ *
+ * @param {string} error The error to display on the player.
+ */
+minplayer.prototype.showError = function(error) {
+  if (typeof error !== 'object') {
+    error = error || '';
+    if (this.elements.error) {
+
+      // Set the error text.
+      this.elements.error.text(error);
+      if (error) {
+        // Show the error message.
+        this.elements.error.show();
+
+        // Only show this error for a time interval.
+        setTimeout((function(player) {
+          return function() {
+            player.elements.error.hide('slow');
+          };
+        })(this), 5000);
+      }
+      else {
+        this.elements.error.hide();
+      }
+    }
+  }
+};
+
+/**
+ * Adds key events to the player.
+ */
+minplayer.prototype.addKeyEvents = function() {
+  jQuery(document).bind('keydown', (function(player) {
+    return function(event) {
+      switch (event.keyCode) {
+        case 113: // ESC
+        case 27:  // Q
+          if (player.isFullScreen()) {
+            player.fullscreen(false);
+          }
+          break;
+      }
+    };
+  })(this));
+};
+
+/**
+ * Returns all the media files available for this player.
+ *
+ * @return {array} All the media files for this player.
+ */
+minplayer.prototype.getFiles = function() {
+
+  // If they provide the files in the options, use those first.
+  if (this.options.files) {
+    return this.options.files;
+  }
+
+  if (this.options.file) {
+    return this.options.file;
+  }
+
+  var files = [];
+  var mediaSrc = null;
+
+  // Get the files involved...
+  if (this.elements.media) {
+    mediaSrc = this.elements.media.attr('src');
+    if (mediaSrc) {
+      files.push({'path': mediaSrc});
+    }
+    jQuery('source', this.elements.media).each(function() {
+      files.push({
+        'path': jQuery(this).attr('src'),
+        'mimetype': jQuery(this).attr('type'),
+        'codecs': jQuery(this).attr('codecs')
+      });
+    });
+  }
+
+  return files;
+};
+
+/**
+ * Returns the full media player object.
+ *
+ * @param {array} files An array of files to chose from.
+ * @return {object} The best media file to play in the current browser.
+ */
+minplayer.getMediaFile = function(files) {
+
+  // If there are no files then return null.
+  if (!files) {
+    return null;
+  }
+
+  // If the file is already a file object then just return.
+  if ((typeof files === 'string') || files.path || files.id) {
+    return new minplayer.file(files);
+  }
+
+  // Add the files and get the best player to play.
+  var bestPriority = 0, mFile = null, file = null;
+  for (var i in files) {
+    if (files.hasOwnProperty(i)) {
+      file = new minplayer.file(files[i]);
+      if (file.player && (file.priority > bestPriority)) {
+        mFile = file;
+      }
+    }
+  }
+
+  // Return the best minplayer file.
+  return mFile;
+};
+
+/**
+ * Loads a media player based on the current file.
+ *
+ * @return {boolean} If a new player was loaded.
+ */
+minplayer.prototype.loadPlayer = function() {
+
+  // Do nothing if there isn't a file or anywhere to put it.
+  if (!this.options.file || (this.elements.display.length == 0)) {
+    return false;
+  }
+
+  // If no player is set, then also return false.
+  if (!this.options.file.player) {
+    return false;
+  }
+
+  // Reset the error.
+  this.showError();
+
+  // Only destroy if the current player is different than the new player.
+  var player = this.options.file.player.toString();
+
+  // If there isn't media or if the players are different.
+  if (!this.media || (player !== this.currentPlayer)) {
+
+    // Set the current media player.
+    this.currentPlayer = player;
+
+    // Do nothing if we don't have a display.
+    if (!this.elements.display) {
+      this.showError('No media display found.');
+      return;
+    }
+
+    // Destroy the current media.
+    var queue = {};
+    if (this.media) {
+      queue = this.media.queue;
+      this.media.destroy();
+    }
+
+    // Get the class name and create the new player.
+    pClass = minplayer.players[this.options.file.player];
+
+    // Create the new media player.
+    this.options.mediaelement = this.elements.media;
+    this.media = new pClass(this.elements.display, this.options, queue);
+
+    // Now get the media when it is ready.
+    this.get('media', (function(player) {
+      return function(media) {
+
+        // Load the media.
+        media.load(player.options.file);
+        player.display.addClass('minplayer-player-' + media.mediaFile.player);
+      };
+    })(this));
+
+    // Return that a new player is loaded.
+    return true;
+  }
+  // If the media object already exists...
+  else if (this.media) {
+
+    // Now load the different media file.
+    this.media.options = this.options;
+    this.display.removeClass('minplayer-player-' + this.media.mediaFile.player);
+    this.media.load(this.options.file);
+    this.display.addClass('minplayer-player-' + this.media.mediaFile.player);
+    return false;
+  }
+};
+
+/**
+ * Load a set of files or a single file for the media player.
+ *
+ * @param {array} files An array of files to chose from to load.
+ */
+minplayer.prototype.load = function(files) {
+
+  // Set the id and class.
+  var id = '', pClass = '';
+
+  // If no file was provided, then get it.
+  this.options.files = files || this.options.files;
+  this.options.file = minplayer.getMediaFile(this.options.files);
+
+  // Now load the player.
+  if (this.loadPlayer()) {
+
+    // Add the events since we now have a player.
+    this.bindTo(this.media);
+
+    // If the player isn't valid, then show an error.
+    if (this.options.file.mimetype && !this.options.file.player) {
+      this.showError('Cannot play media: ' + this.options.file.mimetype);
+    }
+  }
+};
+
+/**
+ * Called when the player is resized.
+ */
+minplayer.prototype.resize = function() {
+
+  // Call onRezie for each plugin.
+  this.get(function(plugin) {
+    if (plugin.onResize) {
+      plugin.onResize();
+    }
+  });
+};
+/** The minplayer namespace. */
+var minplayer = minplayer || {};
+
+/**
+ * @constructor
+ * @class A class to easily handle images.
+ * @param {object} context The jQuery context.
+ * @param {object} options This components options.
+ */
+minplayer.image = function(context, options) {
+
+  // Determine if the image is loaded.
+  this.loaded = false;
+
+  // The image loader.
+  this.loader = null;
+
+  // The ratio of the image.
+  this.ratio = 0;
+
+  // The image element.
+  this.img = null;
+
+  // Derive from display
+  minplayer.display.call(this, 'image', context, options);
+};
+
+/** Derive from minplayer.display. */
+minplayer.image.prototype = new minplayer.display();
+
+/** Reset the constructor. */
+minplayer.image.prototype.constructor = minplayer.image;
+
+/**
+ * @see minplayer.plugin.construct
+ */
+minplayer.image.prototype.construct = function() {
+
+  // Call the media display constructor.
+  minplayer.display.prototype.construct.call(this);
+
+  // Set the plugin name within the options.
+  this.options.pluginName = 'image';
+
+  // Set the container to not show any overflow...
+  this.display.css('overflow', 'hidden');
+
+  /** The loader for the image. */
+  this.loader = new Image();
+
+  /** Register for when the image is loaded within the loader. */
+  this.loader.onload = (function(image) {
+    return function() {
+      image.loaded = true;
+      image.ratio = (image.loader.width / image.loader.height);
+      image.resize();
+      image.trigger('loaded');
+    };
+  })(this);
+
+  // We are now ready.
+  this.ready();
+};
+
+/**
+ * Loads an image.
+ *
+ * @param {string} src The source of the image to load.
+ */
+minplayer.image.prototype.load = function(src) {
+
+  // First clear the previous image.
+  this.clear(function() {
+
+    // Create the new image, and append to the display.
+    this.display.empty();
+    this.img = jQuery(document.createElement('img')).attr({src: ''}).hide();
+    this.display.append(this.img);
+    this.loader.src = src;
+    this.img.attr('src', src);
+  });
+};
+
+/**
+ * Clears an image.
+ *
+ * @param {function} callback Called when the image is done clearing.
+ */
+minplayer.image.prototype.clear = function(callback) {
+  this.loaded = false;
+  if (this.img) {
+    this.img.fadeOut((function(image) {
+      return function() {
+        image.img.attr('src', '');
+        image.loader.src = '';
+        jQuery(this).remove();
+        callback.call(image);
+      };
+    })(this));
+  }
+  else {
+    callback.call(this);
+  }
+};
+
+/**
+ * Resize the image provided a width and height or nothing.
+ *
+ * @param {integer} width (optional) The width of the container.
+ * @param {integer} height (optional) The height of the container.
+ */
+minplayer.image.prototype.resize = function(width, height) {
+  width = width || this.display.parent().width();
+  height = height || this.display.parent().height();
+  if (width && height && this.loaded) {
+
+    // Get the scaled rectangle.
+    var rect = this.getScaledRect(this.ratio, {
+      width: width,
+      height: height
+    });
+
+    // Now set this image to the new size.
+    if (this.img) {
+      this.img.attr('src', this.loader.src).css({
+        marginLeft: rect.x,
+        marginTop: rect.y,
+        width: rect.width,
+        height: rect.height
+      });
+    }
+
+    // Show the container.
+    this.img.fadeIn();
+  }
+};
+
+/**
+ * @see minplayer.display#onResize
+ */
+minplayer.image.prototype.onResize = function() {
+
+  // Resize the image to fit.
+  this.resize();
+};
+/** The minplayer namespace. */
+var minplayer = minplayer || {};
+
+/**
+ * @constructor
+ * @class A wrapper class used to provide all the data necessary to control an
+ * individual file within this media player.
+ *
+ * @param {object} file A media file object with minimal required information.
+ */
+minplayer.file = function(file) {
+
+  // If there isn't a file provided, then just return null.
+  if (!file) {
+    return null;
+  }
+
+  file = (typeof file === 'string') ? {path: file} : file;
+
+  // If we already are a minplayer file, then just return this file.
+  if (file.hasOwnProperty('isMinPlayerFile')) {
+    return file;
+  }
+
+  this.isMinPlayerFile = true;
+  this.duration = file.duration || 0;
+  this.bytesTotal = file.bytesTotal || 0;
+  this.quality = file.quality || 0;
+  this.stream = file.stream || '';
+  this.path = file.path || '';
+  this.codecs = file.codecs || '';
+
+  // These should be provided, but just in case...
+  this.extension = file.extension || this.getFileExtension();
+  this.mimetype = file.mimetype || file.filemime || this.getMimeType();
+  this.type = file.type || this.getType();
+
+  // Fail safe to try and guess the mimetype and media type.
+  if (!this.type) {
+    this.mimetype = this.getMimeType();
+    this.type = this.getType();
+  }
+
+  // Get the player.
+  this.player = minplayer.player || file.player || this.getBestPlayer();
+  this.priority = file.priority || this.getPriority();
+  this.id = file.id || this.getId();
+  if (!this.path) {
+    this.path = this.id;
+  }
+};
+
+/** Used to force the player for all media. */
+minplayer.player = '';
+
+/**
+ * Returns the best player for the job.
+ *
+ * @return {string} The best player to play the media file.
+ */
+minplayer.file.prototype.getBestPlayer = function() {
+  var bestplayer = null, bestpriority = 0;
+  jQuery.each(minplayer.players, (function(file) {
+    return function(name, player) {
+      var priority = player.getPriority();
+      if (player.canPlay(file) && (priority > bestpriority)) {
+        bestplayer = name;
+        bestpriority = priority;
+      }
+    };
+  })(this));
+  return bestplayer;
+};
+
+/**
+ * The priority of this file is determined by the priority of the best
+ * player multiplied by the priority of the mimetype.
+ *
+ * @return {integer} The priority of the media file.
+ */
+minplayer.file.prototype.getPriority = function() {
+  var priority = 1;
+  if (this.player) {
+    priority = minplayer.players[this.player].getPriority();
+  }
+  switch (this.mimetype) {
+    case 'video/x-webm':
+    case 'video/webm':
+    case 'application/octet-stream':
+      return priority * 10;
+    case 'video/mp4':
+    case 'audio/mp4':
+    case 'audio/mpeg':
+      return priority * 9;
+    case 'video/ogg':
+    case 'audio/ogg':
+    case 'video/quicktime':
+      return priority * 8;
+    default:
+      return priority * 5;
+  }
+};
+
+/**
+ * Returns the file extension of the file path.
+ *
+ * @return {string} The file extension.
+ */
+minplayer.file.prototype.getFileExtension = function() {
+  return this.path.substring(this.path.lastIndexOf('.') + 1).toLowerCase();
+};
+
+/**
+ * Returns the proper mimetype based off of the extension.
+ *
+ * @return {string} The mimetype of the file based off of extension.
+ */
+minplayer.file.prototype.getMimeType = function() {
+  switch (this.extension) {
+    case 'mp4': case 'm4v': case 'flv': case 'f4v':
+      return 'video/mp4';
+    case'webm':
+      return 'video/webm';
+    case 'ogg': case 'ogv':
+      return 'video/ogg';
+    case '3g2':
+      return 'video/3gpp2';
+    case '3gpp':
+    case '3gp':
+      return 'video/3gpp';
+    case 'mov':
+      return 'video/quicktime';
+    case'swf':
+      return 'application/x-shockwave-flash';
+    case 'oga':
+      return 'audio/ogg';
+    case 'mp3':
+      return 'audio/mpeg';
+    case 'm4a': case 'f4a':
+      return 'audio/mp4';
+    case 'aac':
+      return 'audio/aac';
+    case 'wav':
+      return 'audio/vnd.wave';
+    case 'wma':
+      return 'audio/x-ms-wma';
+    default:
+      return 'unknown';
+  }
+};
+
+/**
+ * The type of media this is: video or audio.
+ *
+ * @return {string} "video" or "audio" based on what the type of media this
+ * is.
+ */
+minplayer.file.prototype.getType = function() {
+  var type = this.mimetype.match(/([^\/]+)(\/)/);
+  type = (type && (type.length > 1)) ? type[1] : '';
+  if (type == 'video' || this.mimetype == 'application/octet-stream') {
+    return 'video';
+  }
+  if (type == 'audio') {
+    return 'audio';
+  }
+  return '';
+};
+
+/**
+ * Returns the ID for this media file.
+ *
+ * @return {string} The id for this media file which is provided by the player.
+ */
+minplayer.file.prototype.getId = function() {
+  var player = minplayer.players[this.player];
+  return (player && player.getMediaId) ? player.getMediaId(this) : '';
+};
+/** The minplayer namespace. */
+var minplayer = minplayer || {};
+
+/**
+ * @constructor
+ * @extends minplayer.display
+ * @class The play loader base class, which is used to control the busy
+ * cursor, big play button, and the opaque background which shows when the
+ * player is paused.
+ *
+ * @param {object} context The jQuery context.
+ * @param {object} options This components options.
+ */
+minplayer.playLoader = function(context, options) {
+
+  // Define the flags that control the busy cursor.
+  this.busy = new minplayer.flags();
+
+  // Define the flags that control the big play button.
+  this.bigPlay = new minplayer.flags();
+
+  // Define the flags the control the preview.
+  this.previewFlag = new minplayer.flags();
+
+  /** The preview image. */
+  this.preview = null;
+
+  /** If the playLoader is enabled. */
+  this.enabled = true;
+
+  // Derive from display
+  minplayer.display.call(this, 'playLoader', context, options);
+};
+
+/** Derive from minplayer.display. */
+minplayer.playLoader.prototype = new minplayer.display();
+
+/** Reset the constructor. */
+minplayer.playLoader.prototype.constructor = minplayer.playLoader;
+
+/**
+ * The constructor.
+ */
+minplayer.playLoader.prototype.construct = function() {
+
+  // Call the media display constructor.
+  minplayer.display.prototype.construct.call(this);
+
+  // Set the plugin name within the options.
+  this.options.pluginName = 'playLoader';
+
+  // Get the media plugin.
+  this.initialize();
+
+  // We are now ready.
+  this.ready();
+};
+
+/**
+ * Initialize the playLoader.
+ */
+minplayer.playLoader.prototype.initialize = function() {
+
+  // Get the media plugin.
+  this.get('media', function(media) {
+
+    // Only bind if this player does not have its own play loader.
+    if (!media.hasPlayLoader(this.options.preview)) {
+
+      // Enable the playLoader.
+      this.enabled = true;
+
+      // Get the poster image.
+      if (!this.options.preview) {
+        this.options.preview = media.elements.media.attr('poster');
+      }
+
+      // Reset the media's poster image.
+      media.elements.media.attr('poster', '');
+
+      // Load the preview image.
+      this.loadPreview();
+
+      // Trigger a play event when someone clicks on the controller.
+      if (this.elements.bigPlay) {
+        minplayer.click(this.elements.bigPlay.unbind(), function(event) {
+          event.preventDefault();
+          minplayer.showAll();
+          jQuery(this).hide();
+          media.play();
+        });
+      }
+
+      // Bind to the player events to control the play loader.
+      media.unbind('loadstart').bind('loadstart', (function(playLoader) {
+        return function(event) {
+          playLoader.busy.setFlag('media', true);
+          playLoader.bigPlay.setFlag('media', true);
+          playLoader.previewFlag.setFlag('media', true);
+          playLoader.checkVisibility();
+        };
+      })(this));
+      media.bind('waiting', (function(playLoader) {
+        return function(event) {
+          playLoader.busy.setFlag('media', true);
+          playLoader.checkVisibility();
+        };
+      })(this));
+      media.bind('loadeddata', (function(playLoader) {
+        return function(event) {
+          playLoader.busy.setFlag('media', false);
+          playLoader.checkVisibility();
+        };
+      })(this));
+      media.bind('playing', (function(playLoader) {
+        return function(event) {
+          playLoader.busy.setFlag('media', false);
+          playLoader.bigPlay.setFlag('media', false);
+          if (media.mediaFile.type !== 'audio') {
+            playLoader.previewFlag.setFlag('media', false);
+          }
+          playLoader.checkVisibility();
+        };
+      })(this));
+      media.bind('pause', (function(playLoader) {
+        return function(event) {
+          playLoader.bigPlay.setFlag('media', true);
+          playLoader.checkVisibility();
+        };
+      })(this));
+    }
+    else {
+
+      // Hide the display.
+      this.enabled = false;
+      this.hide(this.elements.busy);
+      this.hide(this.elements.bigPlay);
+      this.hide(this.elements.preview);
+      this.hide();
+    }
+  });
+};
+
+/**
+ * Loads the preview image.
+ */
+minplayer.playLoader.prototype.loadPreview = function() {
+
+  // Ignore if disabled.
+  if (!this.enabled) {
+    return;
+  }
+
+  // If the preview element exists.
+  if (this.elements.preview) {
+
+    // If there is a preview to show...
+    if (this.options.preview) {
+
+      // Say that this has a preview.
+      this.elements.preview.addClass('has-preview').show();
+
+      // Create a new preview image.
+      this.preview = new minplayer.image(this.elements.preview, this.options);
+
+      // Create the image.
+      this.preview.load(this.options.preview);
+    }
+    else {
+
+      // Hide the preview.
+      this.elements.preview.hide();
+    }
+  }
+};
+
+/**
+ * Hide or show certain elements based on the state of the busy and big play
+ * button.
+ */
+minplayer.playLoader.prototype.checkVisibility = function() {
+
+  // Ignore if disabled.
+  if (!this.enabled) {
+    return;
+  }
+
+  // Hide or show the busy cursor based on the flags.
+  if (this.busy.flag) {
+    this.elements.busy.show();
+  }
+  else {
+    this.elements.busy.hide();
+  }
+
+  // Hide or show the big play button based on the flags.
+  if (this.bigPlay.flag) {
+    this.elements.bigPlay.show();
+  }
+  else {
+    this.elements.bigPlay.hide();
+  }
+
+  if (this.previewFlag.flag) {
+    this.elements.preview.show();
+  }
+  else {
+    this.elements.preview.hide();
+  }
+
+  // Show the control either flag is set.
+  if (this.bigPlay.flag || this.busy.flag || this.previewFlag.flag) {
+    this.display.show();
+  }
+
+  // Hide the whole control if both flags are 0.
+  if (!this.bigPlay.flag && !this.busy.flag && !this.previewFlag.flag) {
+    this.display.hide();
+  }
+};
+/** The minplayer namespace. */
+var minplayer = minplayer || {};
+
+/** All the media player implementations */
+minplayer.players = minplayer.players || {};
+
+/**
+ * @constructor
+ * @extends minplayer.display
+ * @class The base media player class where all media players derive from.
+ *
+ * @param {object} context The jQuery context.
+ * @param {object} options This components options.
+ * @param {object} queue The event queue to pass events around.
+ */
+minplayer.players.base = function(context, options, queue) {
+
+  // Derive from display
+  minplayer.display.call(this, 'media', context, options, queue);
+};
+
+/** Derive from minplayer.display. */
+minplayer.players.base.prototype = new minplayer.display();
+
+/** Reset the constructor. */
+minplayer.players.base.prototype.constructor = minplayer.players.base;
+
+/**
+ * @see minplayer.display.getElements
+ * @this minplayer.players.base
+ * @return {object} The elements for this display.
+ */
+minplayer.players.base.prototype.getElements = function() {
+  var elements = minplayer.display.prototype.getElements.call(this);
+  return jQuery.extend(elements, {
+    media: this.options.mediaelement
+  });
+};
+
+/**
+ * Get the priority of this media player.
+ *
+ * @return {number} The priority of this media player.
+ */
+minplayer.players.base.getPriority = function() {
+  return 0;
+};
+
+/**
+ * Returns the ID for the media being played.
+ *
+ * @param {object} file A {@link minplayer.file} object.
+ * @return {string} The ID for the provided media.
+ */
+minplayer.players.base.getMediaId = function(file) {
+  return '';
+};
+
+/**
+ * Determine if we can play the media file.
+ *
+ * @param {object} file A {@link minplayer.file} object.
+ * @return {boolean} If this player can play this media type.
+ */
+minplayer.players.base.canPlay = function(file) {
+  return false;
+};
+
+/**
+ * @see minplayer.plugin.construct
+ * @this minplayer.players.base
+ */
+minplayer.players.base.prototype.construct = function() {
+
+  // Call the media display constructor.
+  minplayer.display.prototype.construct.call(this);
+
+  // Set the plugin name within the options.
+  this.options.pluginName = 'basePlayer';
+
+  /** The currently loaded media file. */
+  this.mediaFile = this.options.file;
+
+  // Clear the media player.
+  this.clear();
+
+  // Get the player display object.
+  if (!this.playerFound()) {
+
+    // Add the new player.
+    this.addPlayer();
+  }
+
+  // Get the player object...
+  this.player = this.getPlayer();
+
+  // Toggle playing if they click.
+  minplayer.click(this.display, (function(player) {
+    return function() {
+      minplayer.showAll();
+      if (player.playing) {
+        player.pause();
+      }
+      else {
+        player.play();
+      }
+    };
+  })(this));
+
+  // Bind to key events...
+  jQuery(document).bind('keydown', (function(player) {
+    return function(event) {
+      if (player.hasFocus) {
+        event.preventDefault();
+        switch (event.keyCode) {
+          case 32:  // SPACE
+          case 179: // GOOGLE play/pause button.
+            if (player.playing) {
+              player.pause();
+            }
+            else {
+              player.play();
+            }
+            break;
+          case 38:  // UP
+            player.setVolumeRelative(0.1);
+            break;
+          case 40:  // DOWN
+            player.setVolumeRelative(-0.1);
+            break;
+          case 37:  // LEFT
+          case 227: // GOOGLE TV REW
+            player.seekRelative(-0.05);
+            break;
+          case 39:  // RIGHT
+          case 228: // GOOGLE TV FW
+            player.seekRelative(0.05);
+            break;
+        }
+      }
+    };
+  })(this));
+};
+
+/**
+ * Adds the media player.
+ */
+minplayer.players.base.prototype.addPlayer = function() {
+
+  // Remove the media element if found
+  if (this.elements.media) {
+    this.elements.media.remove();
+  }
+
+  // Create a new media player element.
+  this.elements.media = jQuery(this.create());
+  this.display.html(this.elements.media);
+};
+
+/**
+ * @see minplayer.plugin.destroy.
+ */
+minplayer.players.base.prototype.destroy = function() {
+  minplayer.plugin.prototype.destroy.call(this);
+  this.clear();
+};
+
+/**
+ * Clears the media player.
+ */
+minplayer.players.base.prototype.clear = function() {
+
+  // Reset the ready flag.
+  this.playerReady = false;
+
+  // Reset the player.
+  this.reset();
+
+  // If the player exists, then unbind all events.
+  if (this.player) {
+    jQuery(this.player).unbind();
+  }
+};
+
+/**
+ * Resets all variables.
+ */
+minplayer.players.base.prototype.reset = function() {
+
+  // The duration of the player.
+  this.duration = new minplayer.async();
+
+  // The current play time of the player.
+  this.currentTime = new minplayer.async();
+
+  // The amount of bytes loaded in the player.
+  this.bytesLoaded = new minplayer.async();
+
+  // The total amount of bytes for the media.
+  this.bytesTotal = new minplayer.async();
+
+  // The bytes that the download started with.
+  this.bytesStart = new minplayer.async();
+
+  // The current volume of the player.
+  this.volume = new minplayer.async();
+
+  // Reset focus.
+  this.hasFocus = false;
+
+  // We are not playing.
+  this.playing = false;
+
+  // We are not loading.
+  this.loading = false;
+
+  // Tell everyone else we reset.
+  this.trigger('pause');
+  this.trigger('waiting');
+  this.trigger('progress', {loaded: 0, total: 0, start: 0});
+  this.trigger('timeupdate', {currentTime: 0, duration: 0});
+};
+
+/**
+ * Called when the player is ready to recieve events and commands.
+ */
+minplayer.players.base.prototype.onReady = function() {
+
+  // Only continue if we are not already ready.
+  if (this.playerReady) {
+    return;
+  }
+
+  // Set the ready flag.
+  this.playerReady = true;
+
+  // Set the volume to the default.
+  this.setVolume(this.options.volume / 100);
+
+  // Setup the progress interval.
+  this.loading = true;
+
+  // Create a poll to get the progress.
+  this.poll((function(player) {
+    return function() {
+
+      // Only do this if the play interval is set.
+      if (player.loading) {
+
+        // Get the bytes loaded asynchronously.
+        player.getBytesLoaded(function(bytesLoaded) {
+
+          // Get the bytes total asynchronously.
+          player.getBytesTotal(function(bytesTotal) {
+
+            // Trigger an event about the progress.
+            if (bytesLoaded || bytesTotal) {
+
+              // Get the bytes start, but don't require it.
+              var bytesStart = 0;
+              player.getBytesStart(function(val) {
+                bytesStart = val;
+              });
+
+              // Trigger a progress event.
+              player.trigger('progress', {
+                loaded: bytesLoaded,
+                total: bytesTotal,
+                start: bytesStart
+              });
+
+              // Say we are not longer loading if they are equal.
+              if (bytesLoaded >= bytesTotal) {
+                player.loading = false;
+              }
+            }
+          });
+        });
+      }
+
+      // Keep polling as long as its loading...
+      return player.loading;
+    };
+  })(this), 1000);
+
+  // We are now ready.
+  this.ready();
+
+  // Trigger that the load has started.
+  this.trigger('loadstart');
+};
+
+/**
+ * Should be called when the media is playing.
+ */
+minplayer.players.base.prototype.onPlaying = function() {
+
+  // Trigger an event that we are playing.
+  this.trigger('playing');
+
+  // Say that this player has focus.
+  this.hasFocus = true;
+
+  // Set the playInterval to true.
+  this.playing = true;
+
+  // Create a poll to get the timeupate.
+  this.poll((function(player) {
+    return function() {
+
+      // Only do this if the play interval is set.
+      if (player.playing) {
+
+        // Get the current time asyncrhonously.
+        player.getCurrentTime(function(currentTime) {
+
+          // Get the duration asynchronously.
+          player.getDuration(function(duration) {
+
+            // Convert these to floats.
+            currentTime = parseFloat(currentTime);
+            duration = parseFloat(duration);
+
+            // Trigger an event about the progress.
+            if (currentTime || duration) {
+
+              // Trigger an update event.
+              player.trigger('timeupdate', {
+                currentTime: currentTime,
+                duration: duration
+              });
+            }
+          });
+        });
+      }
+
+      // Keep polling as long as it is playing.
+      return player.playing;
+    };
+  })(this), 1000);
+};
+
+/**
+ * Should be called when the media is paused.
+ */
+minplayer.players.base.prototype.onPaused = function() {
+
+  // Trigger an event that we are paused.
+  this.trigger('pause');
+
+  // Remove focus.
+  this.hasFocus = false;
+
+  // Say we are not playing.
+  this.playing = false;
+};
+
+/**
+ * Should be called when the media is complete.
+ */
+minplayer.players.base.prototype.onComplete = function() {
+  if (this.playing) {
+    this.onPaused();
+  }
+
+  // Stop the intervals.
+  this.playing = false;
+  this.loading = false;
+  this.hasFocus = false;
+  this.trigger('ended');
+};
+
+/**
+ * Should be called when the media is done loading.
+ */
+minplayer.players.base.prototype.onLoaded = function() {
+
+  // If we should autoplay, then just play now.
+  if (this.options.autoplay) {
+    this.play();
+  }
+
+  this.trigger('loadeddata');
+};
+
+/**
+ * Should be called when the player is waiting.
+ */
+minplayer.players.base.prototype.onWaiting = function() {
+  this.trigger('waiting');
+};
+
+/**
+ * Called when an error occurs.
+ *
+ * @param {string} errorCode The error that was triggered.
+ */
+minplayer.players.base.prototype.onError = function(errorCode) {
+  this.hasFocus = false;
+  this.trigger('error', errorCode);
+};
+
+/**
+ * @see minplayer.players.base#isReady
+ * @return {boolean} Checks to see if the Flash is ready.
+ */
+minplayer.players.base.prototype.isReady = function() {
+
+  // Return that the player is set and the ready flag is good.
+  return (this.player && this.playerReady);
+};
+
+/**
+ * Determines if the player should show the playloader.
+ *
+ * @param {string} preview The preview image.
+ * @return {bool} If this player implements its own playLoader.
+ */
+minplayer.players.base.prototype.hasPlayLoader = function(preview) {
+  return false;
+};
+
+/**
+ * Determines if the player should show the controller.
+ *
+ * @return {bool} If this player implements its own controller.
+ */
+minplayer.players.base.prototype.hasController = function() {
+  return false;
+};
+
+/**
+ * Returns if the media player is already within the DOM.
+ *
+ * @return {boolean} TRUE - if the player is in the DOM, FALSE otherwise.
+ */
+minplayer.players.base.prototype.playerFound = function() {
+  return false;
+};
+
+/**
+ * Creates the media player and inserts it in the DOM.
+ *
+ * @return {object} The media player entity.
+ */
+minplayer.players.base.prototype.create = function() {
+  this.reset();
+  return null;
+};
+
+/**
+ * Returns the media player object.
+ *
+ * @return {object} The media player object.
+ */
+minplayer.players.base.prototype.getPlayer = function() {
+  return this.player;
+};
+
+/**
+ * Loads a new media player.
+ *
+ * @param {object} file A {@link minplayer.file} object.
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.base.prototype.load = function(file) {
+
+  // Store the media file for future lookup.
+  var isString = (typeof this.mediaFile == 'string');
+  var path = isString ? this.mediaFile : this.mediaFile.path;
+  if (file && this.isReady() && (file.path != path)) {
+    this.reset();
+    this.mediaFile = file;
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * Play the loaded media file.
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.base.prototype.play = function() {
+  return this.isReady();
+};
+
+/**
+ * Pause the loaded media file.
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.base.prototype.pause = function() {
+  return this.isReady();
+};
+
+/**
+ * Stop the loaded media file.
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.base.prototype.stop = function() {
+  this.playing = false;
+  this.loading = false;
+  this.hasFocus = false;
+  return this.isReady();
+};
+
+/**
+ * Seeks to relative position.
+ *
+ * @param {number} pos Relative position.  -1 to 1 (percent), > 1 (seconds).
+ */
+minplayer.players.base.prototype.seekRelative = function(pos) {
+
+  // Get the current time asyncrhonously.
+  this.getCurrentTime((function(player) {
+    return function(currentTime) {
+
+      // Get the duration asynchronously.
+      player.getDuration(function(duration) {
+
+        // Only do this if we have a duration.
+        if (duration) {
+
+          // Get the position.
+          var seekPos = 0;
+          if ((pos > -1) && (pos < 1)) {
+            seekPos = ((currentTime / duration) + parseFloat(pos)) * duration;
+          }
+          else {
+            seekPos = (currentTime + parseFloat(pos));
+          }
+
+          // Set the seek value.
+          player.seek(seekPos);
+        }
+      });
+    };
+  })(this));
+};
+
+/**
+ * Seek the loaded media.
+ *
+ * @param {number} pos The position to seek the minplayer. 0 to 1.
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.base.prototype.seek = function(pos) {
+  return this.isReady();
+};
+
+/**
+ * Gets a value from the player.
+ *
+ * @param {string} getter The getter method on the player.
+ * @param {function} callback The callback function.
+ */
+minplayer.players.base.prototype.getValue = function(getter, callback) {
+  if (this.isReady()) {
+    var value = this.player[getter]();
+    if ((value !== undefined) && (value !== null)) {
+      callback(value);
+    }
+  }
+};
+
+/**
+ * Set the volume of the loaded minplayer.
+ *
+ * @param {number} vol -1 to 1 - The relative amount to increase or decrease.
+ */
+minplayer.players.base.prototype.setVolumeRelative = function(vol) {
+
+  // Get the volume
+  this.getVolume((function(player) {
+    return function(newVol) {
+      newVol += parseFloat(vol);
+      newVol = (newVol < 0) ? 0 : newVol;
+      newVol = (newVol > 1) ? 1 : newVol;
+      player.setVolume(newVol);
+    };
+  })(this));
+};
+
+/**
+ * Set the volume of the loaded minplayer.
+ *
+ * @param {number} vol The volume to set the media. 0 to 1.
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.base.prototype.setVolume = function(vol) {
+  this.trigger('volumeupdate', vol);
+  return this.isReady();
+};
+
+/**
+ * Get the volume from the loaded media.
+ *
+ * @param {function} callback Called when the volume is determined.
+ * @return {number} The volume of the media; 0 to 1.
+ */
+minplayer.players.base.prototype.getVolume = function(callback) {
+  return this.volume.get(callback);
+};
+
+/**
+ * Get the current time for the media being played.
+ *
+ * @param {function} callback Called when the time is determined.
+ * @return {number} The volume of the media; 0 to 1.
+ */
+minplayer.players.base.prototype.getCurrentTime = function(callback) {
+  return this.currentTime.get(callback);
+};
+
+/**
+ * Return the duration of the loaded media.
+ *
+ * @param {function} callback Called when the duration is determined.
+ * @return {number} The duration of the loaded media.
+ */
+minplayer.players.base.prototype.getDuration = function(callback) {
+  return this.duration.get(callback);
+};
+
+/**
+ * Return the start bytes for the loaded media.
+ *
+ * @param {function} callback Called when the start bytes is determined.
+ * @return {int} The bytes that were started.
+ */
+minplayer.players.base.prototype.getBytesStart = function(callback) {
+  return this.bytesStart.get(callback);
+};
+
+/**
+ * Return the bytes of media loaded.
+ *
+ * @param {function} callback Called when the bytes loaded is determined.
+ * @return {int} The amount of bytes loaded.
+ */
+minplayer.players.base.prototype.getBytesLoaded = function(callback) {
+  return this.bytesLoaded.get(callback);
+};
+
+/**
+ * Return the total amount of bytes.
+ *
+ * @param {function} callback Called when the bytes total is determined.
+ * @return {int} The total amount of bytes for this media.
+ */
+minplayer.players.base.prototype.getBytesTotal = function(callback) {
+  return this.bytesTotal.get(callback);
+};
+/** The minplayer namespace. */
+var minplayer = minplayer || {};
+
+/** All the media player implementations */
+minplayer.players = minplayer.players || {};
+
+/**
+ * @constructor
+ * @extends minplayer.display
+ * @class The HTML5 media player implementation.
+ *
+ * @param {object} context The jQuery context.
+ * @param {object} options This components options.
+ * @param {object} queue The event queue to pass events around.
+ */
+minplayer.players.html5 = function(context, options, queue) {
+
+  // Derive players base.
+  minplayer.players.base.call(this, context, options, queue);
+};
+
+/** Derive from minplayer.players.base. */
+minplayer.players.html5.prototype = new minplayer.players.base();
+
+/** Reset the constructor. */
+minplayer.players.html5.prototype.constructor = minplayer.players.html5;
+
+/**
+ * @see minplayer.players.base#getPriority
+ * @return {number} The priority of this media player.
+ */
+minplayer.players.html5.getPriority = function() {
+  return 10;
+};
+
+/**
+ * @see minplayer.players.base#canPlay
+ * @return {boolean} If this player can play this media type.
+ */
+minplayer.players.html5.canPlay = function(file) {
+  switch (file.mimetype) {
+    case 'video/ogg':
+      return !!minplayer.playTypes.videoOGG;
+    case 'video/mp4':
+    case 'video/x-mp4':
+    case 'video/m4v':
+    case 'video/x-m4v':
+      return !!minplayer.playTypes.videoH264;
+    case 'video/x-webm':
+    case 'video/webm':
+    case 'application/octet-stream':
+      return !!minplayer.playTypes.videoWEBM;
+    case 'audio/ogg':
+      return !!minplayer.playTypes.audioOGG;
+    case 'audio/mpeg':
+      return !!minplayer.playTypes.audioMP3;
+    case 'audio/mp4':
+      return !!minplayer.playTypes.audioMP4;
+    default:
+      return false;
+  }
+};
+
+/**
+ * @see minplayer.plugin.construct
+ */
+minplayer.players.html5.prototype.construct = function() {
+
+  // Call base constructor.
+  minplayer.players.base.prototype.construct.call(this);
+
+  // Set the plugin name within the options.
+  this.options.pluginName = 'html5';
+
+  // Add the player events.
+  this.addPlayerEvents();
+};
+
+/**
+ * Adds a new player event.
+ *
+ * @param {string} type The type of event being fired.
+ * @param {function} callback Called when the event is fired.
+ */
+minplayer.players.html5.prototype.addPlayerEvent = function(type, callback) {
+  if (this.player) {
+
+    // Add an event listener for this event type.
+    this.player.addEventListener(type, (function(player) {
+
+      // Get the function name.
+      var func = type + 'Event';
+
+      // If the callback already exists, then remove it from the player.
+      if (player[func]) {
+        player.player.removeEventListener(type, player[func], false);
+      }
+
+      // Create a new callback.
+      player[func] = function(event) {
+        callback.call(player, event);
+      };
+
+      // Return the callback.
+      return player[func];
+
+    })(this), false);
+  }
+};
+
+/**
+ * Add events.
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.html5.prototype.addPlayerEvents = function() {
+
+  // Check if the player exists.
+  if (this.player) {
+
+    this.addPlayerEvent('abort', function() {
+      this.trigger('abort');
+    });
+    this.addPlayerEvent('loadstart', function() {
+      this.onReady();
+    });
+    this.addPlayerEvent('loadeddata', function() {
+      this.onLoaded();
+    });
+    this.addPlayerEvent('loadedmetadata', function() {
+      this.onLoaded();
+    });
+    this.addPlayerEvent('canplaythrough', function() {
+      this.onLoaded();
+    });
+    this.addPlayerEvent('ended', function() {
+      this.onComplete();
+    });
+    this.addPlayerEvent('pause', function() {
+      this.onPaused();
+    });
+    this.addPlayerEvent('play', function() {
+      this.onPlaying();
+    });
+    this.addPlayerEvent('playing', function() {
+      this.onPlaying();
+    });
+
+    var errorSent = false;
+    this.addPlayerEvent('error', function() {
+      if (!errorSent) {
+        errorSent = true;
+        this.trigger('error', 'An error occured - ' + this.player.error.code);
+      }
+    });
+
+    this.addPlayerEvent('waiting', function() {
+      this.onWaiting();
+    });
+    this.addPlayerEvent('durationchange', function() {
+      this.duration.set(this.player.duration);
+      this.trigger('durationchange', {duration: this.player.duration});
+    });
+    this.addPlayerEvent('progress', function(event) {
+      this.bytesTotal.set(event.total);
+      this.bytesLoaded.set(event.loaded);
+    });
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#onReady
+ */
+minplayer.players.html5.prototype.onReady = function() {
+  minplayer.players.base.prototype.onReady.call(this);
+
+  // Android just say we are loaded here.
+  if (minplayer.isAndroid) {
+    this.onLoaded();
+  }
+
+  // iOS devices are strange in that they don't autoload.
+  if (minplayer.isIDevice) {
+    this.play();
+    setTimeout((function(player) {
+      return function() {
+        player.pause();
+        player.onLoaded();
+      };
+    })(this), 1);
+  }
+};
+
+/**
+ * @see minplayer.players.base#playerFound
+ * @return {boolean} TRUE - if the player is in the DOM, FALSE otherwise.
+ */
+minplayer.players.html5.prototype.playerFound = function() {
+  return (this.display.find(this.mediaFile.type).length > 0);
+};
+
+/**
+ * @see minplayer.players.base#create
+ * @return {object} The media player entity.
+ */
+minplayer.players.html5.prototype.create = function() {
+  minplayer.players.base.prototype.create.call(this);
+  var element = jQuery(document.createElement(this.mediaFile.type))
+  .attr(this.options.attributes)
+  .append(
+    jQuery(document.createElement('source')).attr({
+      'src': this.mediaFile.path
+    })
+  );
+
+  // Fix the fluid width and height.
+  element.eq(0)[0].setAttribute('width', '100%');
+  element.eq(0)[0].setAttribute('height', '100%');
+  element.eq(0)[0].setAttribute('autobuffer', true);
+  var option = this.options.autoload ? 'auto' : 'metadata';
+  option = minplayer.isIDevice ? 'metadata' : option;
+  element.eq(0)[0].setAttribute('preload', option);
+  return element;
+};
+
+/**
+ * @see minplayer.players.base#getPlayer
+ * @return {object} The media player object.
+ */
+minplayer.players.html5.prototype.getPlayer = function() {
+  return this.elements.media.eq(0)[0];
+};
+
+/**
+ * @see minplayer.players.base#load
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.html5.prototype.load = function(file) {
+
+  // See if a load is even necessary.
+  if (minplayer.players.base.prototype.load.call(this, file)) {
+
+    // Get the current source.
+    var src = this.elements.media.attr('src');
+    if (!src) {
+      src = jQuery('source', this.elements.media).eq(0).attr('src');
+    }
+
+    // Only swap out if the new file is different from the source.
+    if (src != file.path) {
+
+      // Add a new player.
+      this.addPlayer();
+
+      // Set the new player.
+      this.player = this.getPlayer();
+
+      // Add the events again.
+      this.addPlayerEvents();
+
+      // Change the source...
+      var code = '<source src="' + file.path + '"></source>';
+      this.elements.media.removeAttr('src').empty().html(code);
+      return true;
+    }
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#play
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.html5.prototype.play = function() {
+  if (minplayer.players.base.prototype.play.call(this)) {
+    this.player.play();
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#pause
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.html5.prototype.pause = function() {
+  if (minplayer.players.base.prototype.pause.call(this)) {
+    this.player.pause();
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#stop
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.html5.prototype.stop = function() {
+  if (minplayer.players.base.prototype.stop.call(this)) {
+    this.player.pause();
+    this.player.src = '';
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#seek
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.html5.prototype.seek = function(pos) {
+  if (minplayer.players.base.prototype.seek.call(this, pos)) {
+    this.player.currentTime = pos;
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#setVolume
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.html5.prototype.setVolume = function(vol) {
+  if (minplayer.players.base.prototype.setVolume.call(this, vol)) {
+    this.player.volume = vol;
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#getVolume
+ */
+minplayer.players.html5.prototype.getVolume = function(callback) {
+  if (this.isReady()) {
+    callback(this.player.volume);
+  }
+};
+
+/**
+ * @see minplayer.players.base#getDuration
+ */
+minplayer.players.html5.prototype.getDuration = function(callback) {
+  if (this.isReady()) {
+    callback(this.player.duration);
+  }
+};
+
+/**
+ * @see minplayer.players.base#getCurrentTime
+ */
+minplayer.players.html5.prototype.getCurrentTime = function(callback) {
+  if (this.isReady()) {
+    callback(this.player.currentTime);
+  }
+};
+
+/**
+ * @see minplayer.players.base#getBytesLoaded
+ */
+minplayer.players.html5.prototype.getBytesLoaded = function(callback) {
+  if (this.isReady()) {
+    var loaded = 0;
+
+    // Check several different possibilities.
+    if (this.bytesLoaded.value) {
+      loaded = this.bytesLoaded.value;
+    }
+    else if (this.player.buffered &&
+        this.player.buffered.length > 0 &&
+        this.player.buffered.end &&
+        this.player.duration) {
+      loaded = this.player.buffered.end(0);
+    }
+    else if (this.player.bytesTotal != undefined &&
+             this.player.bytesTotal > 0 &&
+             this.player.bufferedBytes != undefined) {
+      loaded = this.player.bufferedBytes;
+    }
+
+    // Return the loaded amount.
+    callback(loaded);
+  }
+};
+
+/**
+ * @see minplayer.players.base#getBytesTotal
+ */
+minplayer.players.html5.prototype.getBytesTotal = function(callback) {
+  if (this.isReady()) {
+
+    var total = 0;
+
+    // Check several different possibilities.
+    if (this.bytesTotal.value) {
+      total = this.bytesTotal.value;
+    }
+    else if (this.player.buffered &&
+        this.player.buffered.length > 0 &&
+        this.player.buffered.end &&
+        this.player.duration) {
+      total = this.player.duration;
+    }
+    else if (this.player.bytesTotal != undefined &&
+             this.player.bytesTotal > 0 &&
+             this.player.bufferedBytes != undefined) {
+      total = this.player.bytesTotal;
+    }
+
+    // Return the loaded amount.
+    callback(total);
+  }
+};
+/** The minplayer namespace. */
+var minplayer = minplayer || {};
+
+/** All the media player implementations */
+minplayer.players = minplayer.players || {};
+
+/**
+ * @constructor
+ * @extends minplayer.display
+ * @class The Flash media player class to control the flash fallback.
+ *
+ * @param {object} context The jQuery context.
+ * @param {object} options This components options.
+ * @param {object} queue The event queue to pass events around.
+ */
+minplayer.players.flash = function(context, options, queue) {
+
+  // Derive from players base.
+  minplayer.players.base.call(this, context, options, queue);
+};
+
+/** Derive from minplayer.players.base. */
+minplayer.players.flash.prototype = new minplayer.players.base();
+
+/** Reset the constructor. */
+minplayer.players.flash.prototype.constructor = minplayer.players.flash;
+
+/**
+ * @see minplayer.plugin.construct
+ * @this minplayer.players.flash
+ */
+minplayer.players.flash.prototype.construct = function() {
+
+  // Call the players.base constructor.
+  minplayer.players.base.prototype.construct.call(this);
+
+  // Set the plugin name within the options.
+  this.options.pluginName = 'flash';
+};
+
+/**
+ * @see minplayer.players.base#getPriority
+ * @return {number} The priority of this media player.
+ */
+minplayer.players.flash.getPriority = function() {
+  return 0;
+};
+
+/**
+ * @see minplayer.players.base#canPlay
+ * @return {boolean} If this player can play this media type.
+ */
+minplayer.players.flash.canPlay = function(file) {
+  return false;
+};
+
+/**
+ * API to return the Flash player code provided params.
+ *
+ * @param {object} params The params used to populate the Flash code.
+ * @return {object} A Flash DOM element.
+ */
+minplayer.players.flash.prototype.getFlash = function(params) {
+  // Get the protocol.
+  var protocol = window.location.protocol;
+  if (protocol.charAt(protocol.length - 1) == ':') {
+    protocol = protocol.substring(0, protocol.length - 1);
+  }
+
+  // Insert the swfobject javascript.
+  var tag = document.createElement('script');
+  var src = protocol;
+  src += '://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js';
+  tag.src = src;
+  var firstScriptTag = document.getElementsByTagName('script')[0];
+  firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
+
+  // Create the swfobject.
+  setTimeout((function(player) {
+    return function tryAgain() {
+      if (typeof swfobject !== 'undefined') {
+        swfobject.embedSWF(
+          params.swf,
+          params.id,
+          params.width,
+          params.height,
+          '9.0.0',
+          false,
+          params.flashvars,
+          {
+            allowscriptaccess: 'always',
+            allowfullscreen: 'true',
+            wmode: params.wmode,
+            quality: 'high'
+          },
+          {
+            id: params.id,
+            name: params.id,
+            playerType: 'flash'
+          },
+          function(e) {
+            player.player = e.ref;
+          }
+        );
+      }
+      else {
+
+        // Try again after 200 ms.
+        setTimeout(tryAgain, 200);
+      }
+    };
+  })(this), 200);
+
+  // Return the div tag...
+  return '<div id="' + params.id + '"></div>';
+};
+
+/**
+ * @see minplayer.players.base#playerFound
+ * @return {boolean} TRUE - if the player is in the DOM, FALSE otherwise.
+ */
+minplayer.players.flash.prototype.playerFound = function() {
+  return (this.display.find('object[playerType="flash"]').length > 0);
+};
+/** The minplayer namespace. */
+var minplayer = minplayer || {};
+
+/** All the media player implementations */
+minplayer.players = minplayer.players || {};
+
+/**
+ * @constructor
+ * @extends minplayer.display
+ * @class The Flash media player class to control the flash fallback.
+ *
+ * @param {object} context The jQuery context.
+ * @param {object} options This components options.
+ * @param {object} queue The event queue to pass events around.
+ */
+minplayer.players.minplayer = function(context, options, queue) {
+
+  // Derive from players flash.
+  minplayer.players.flash.call(this, context, options, queue);
+};
+
+/** Derive from minplayer.players.flash. */
+minplayer.players.minplayer.prototype = new minplayer.players.flash();
+
+/** Reset the constructor. */
+minplayer.players.minplayer.prototype.constructor = minplayer.players.minplayer;
+
+/**
+ * @see minplayer.plugin.construct
+ * @this minplayer.players.minplayer
+ */
+minplayer.players.minplayer.prototype.construct = function() {
+
+  // Call the players.flash constructor.
+  minplayer.players.flash.prototype.construct.call(this);
+
+  // Set the plugin name within the options.
+  this.options.pluginName = 'minplayer';
+};
+
+/**
+ * Called when the Flash player is ready.
+ *
+ * @param {string} id The media player ID.
+ */
+window.onFlashPlayerReady = function(id) {
+  var media = minplayer.get(id, 'media');
+  var i = media.length;
+  while (i--) {
+    media[i].onReady();
+  }
+};
+
+/**
+ * Called when the Flash player updates.
+ *
+ * @param {string} id The media player ID.
+ * @param {string} eventType The event type that was triggered.
+ */
+window.onFlashPlayerUpdate = function(id, eventType) {
+  var media = minplayer.get(id, 'media');
+  var i = media.length;
+  while (i--) {
+    media[i].onMediaUpdate(eventType);
+  }
+};
+
+/**
+ * Used to debug from the Flash player to the browser console.
+ *
+ * @param {string} debug The debug string.
+ */
+window.onFlashPlayerDebug = function(debug) {
+  if (console && console.log) {
+    console.log(debug);
+  }
+};
+
+/**
+ * @see minplayer.players.base#getPriority
+ * @return {number} The priority of this media player.
+ */
+minplayer.players.minplayer.getPriority = function() {
+  return 1;
+};
+
+/**
+ * @see minplayer.players.base#canPlay
+ * @return {boolean} If this player can play this media type.
+ */
+minplayer.players.minplayer.canPlay = function(file) {
+  var isWEBM = jQuery.inArray(file.mimetype, ['video/x-webm',
+    'video/webm',
+    'application/octet-stream'
+  ]) >= 0;
+  return !isWEBM && (file.type == 'video' || file.type == 'audio');
+};
+
+/**
+ * @see minplayer.players.base#create
+ * @return {object} The media player entity.
+ */
+minplayer.players.minplayer.prototype.create = function() {
+
+  // Make sure we provide default options...
+  this.options = jQuery.extend({
+    swfplayer: 'flash/minplayer.swf'
+  }, this.options);
+
+  minplayer.players.flash.prototype.create.call(this);
+
+  // The flash variables for this flash player.
+  var flashVars = {
+    'id': this.options.id,
+    'debug': this.options.debug,
+    'config': 'nocontrols',
+    'file': this.mediaFile.path,
+    'autostart': this.options.autoplay,
+    'autoload': this.options.autoload
+  };
+
+  // Return a flash media player object.
+  return this.getFlash({
+    swf: this.options.swfplayer,
+    id: this.options.id + '_player',
+    width: '100%',
+    height: '100%',
+    flashvars: flashVars,
+    wmode: this.options.wmode
+  });
+};
+
+/**
+ * Called when the Flash player has an update.
+ *
+ * @param {string} eventType The event that was triggered in the player.
+ */
+minplayer.players.minplayer.prototype.onMediaUpdate = function(eventType) {
+  switch (eventType) {
+    case 'mediaMeta':
+      this.onLoaded();
+      break;
+    case 'mediaPlaying':
+      if (this.minplayerloaded) {
+        this.onPlaying();
+      }
+      break;
+    case 'mediaPaused':
+      this.minplayerloaded = true;
+      this.onPaused();
+      break;
+    case 'mediaComplete':
+      this.onComplete();
+      break;
+  }
+};
+
+/**
+ * Resets all variables.
+ */
+minplayer.players.minplayer.prototype.clear = function() {
+  minplayer.players.flash.prototype.clear.call(this);
+  this.minplayerloaded = this.options.autoplay;
+};
+
+/**
+ * @see minplayer.players.base#load
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.minplayer.prototype.load = function(file) {
+  if (minplayer.players.flash.prototype.load.call(this, file)) {
+    this.player.loadMedia(file.path, file.stream);
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#play
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.minplayer.prototype.play = function() {
+  if (minplayer.players.flash.prototype.play.call(this)) {
+    this.player.playMedia();
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#pause
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.minplayer.prototype.pause = function() {
+  if (minplayer.players.flash.prototype.pause.call(this)) {
+    this.player.pauseMedia();
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#stop
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.minplayer.prototype.stop = function() {
+  if (minplayer.players.flash.prototype.stop.call(this)) {
+    this.player.stopMedia();
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#seek
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.minplayer.prototype.seek = function(pos) {
+  if (minplayer.players.flash.prototype.seek.call(this, pos)) {
+    this.player.seekMedia(pos);
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#setVolume
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.minplayer.prototype.setVolume = function(vol) {
+  if (minplayer.players.flash.prototype.setVolume.call(this, vol)) {
+    this.player.setVolume(vol);
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#getVolume
+ */
+minplayer.players.minplayer.prototype.getVolume = function(callback) {
+  if (this.isReady()) {
+    var vol = 0;
+    var tries = 5;
+    setTimeout((function(player) {
+      return function tryAgain() {
+        vol = player.player.getVolume();
+        if (!vol && (tries-- > 0)) {
+          setTimeout(tryAgain, 200);
+        }
+        else {
+          callback(vol);
+        }
+      };
+    })(this), 200);
+  }
+};
+
+/**
+ * @see minplayer.players.flash#getDuration
+ */
+minplayer.players.minplayer.prototype.getDuration = function(callback) {
+  if (this.isReady()) {
+
+    // Check to see if it is immediately available.
+    var duration = this.player.getDuration();
+    if (duration) {
+      callback(duration);
+    }
+    else {
+
+      // If not, then poll every second for the duration.
+      this.poll((function(player) {
+        return function() {
+          duration = player.player.getDuration();
+          if (duration) {
+            callback(duration);
+          }
+          return !duration;
+        };
+      })(this), 1000);
+    }
+  }
+};
+
+/**
+ * @see minplayer.players.base#getCurrentTime
+ */
+minplayer.players.minplayer.prototype.getCurrentTime = function(callback) {
+  if (this.isReady()) {
+    callback(this.player.getCurrentTime());
+  }
+};
+
+/**
+ * @see minplayer.players.base#getBytesLoaded
+ */
+minplayer.players.minplayer.prototype.getBytesLoaded = function(callback) {
+  if (this.isReady()) {
+    callback(this.player.getMediaBytesLoaded());
+  }
+};
+
+/**
+ * @see minplayer.players.base#getBytesTotal.
+ */
+minplayer.players.minplayer.prototype.getBytesTotal = function(callback) {
+  if (this.isReady()) {
+    callback(this.player.getMediaBytesTotal());
+  }
+};
+/** The minplayer namespace. */
+var minplayer = minplayer || {};
+
+/** All the media player implementations */
+minplayer.players = minplayer.players || {};
+
+/**
+ * @constructor
+ * @extends minplayer.players.base
+ * @class The YouTube media player.
+ *
+ * @param {object} context The jQuery context.
+ * @param {object} options This components options.
+ * @param {object} queue The event queue to pass events around.
+ */
+minplayer.players.youtube = function(context, options, queue) {
+
+  /** The quality of the YouTube stream. */
+  this.quality = 'default';
+
+  // Derive from players base.
+  minplayer.players.base.call(this, context, options, queue);
+};
+
+/** Derive from minplayer.players.base. */
+minplayer.players.youtube.prototype = new minplayer.players.base();
+
+/** Reset the constructor. */
+minplayer.players.youtube.prototype.constructor = minplayer.players.youtube;
+
+/**
+ * @see minplayer.plugin.construct
+ * @this minplayer.players.youtube
+ */
+minplayer.players.youtube.prototype.construct = function() {
+
+  // Call the players.flash constructor.
+  minplayer.players.base.prototype.construct.call(this);
+
+  // Set the plugin name within the options.
+  this.options.pluginName = 'youtube';
+};
+
+/**
+ * @see minplayer.players.base#getPriority
+ * @return {number} The priority of this media player.
+ */
+minplayer.players.youtube.getPriority = function() {
+  return 10;
+};
+
+/**
+ * @see minplayer.players.base#canPlay
+ * @return {boolean} If this player can play this media type.
+ */
+minplayer.players.youtube.canPlay = function(file) {
+
+  // Check for the mimetype for youtube.
+  if (file.mimetype === 'video/youtube') {
+    return true;
+  }
+
+  // If the path is a YouTube path, then return true.
+  return (file.path.search(/^http(s)?\:\/\/(www\.)?youtube\.com/i) === 0);
+};
+
+/**
+ * Return the ID for a provided media file.
+ *
+ * @param {object} file A {@link minplayer.file} object.
+ * @return {string} The ID for the provided media.
+ */
+minplayer.players.youtube.getMediaId = function(file) {
+  var reg = /^http[s]?\:\/\/(www\.)?youtube\.com\/watch\?v=([a-zA-Z0-9_\-]+)/i;
+  if (file.path.search(reg) === 0) {
+    return file.path.match(reg)[2];
+  }
+  else {
+    return file.path;
+  }
+};
+
+/**
+ * Returns a preview image for this media player.
+ *
+ * @param {object} file A {@link minplayer.file} object.
+ * @param {string} type The type of image.
+ * @param {function} callback Called when the image is retrieved.
+ */
+minplayer.players.youtube.getImage = function(file, type, callback) {
+  type = (type == 'thumbnail') ? '1' : '0';
+  callback('http://img.youtube.com/vi/' + file.id + '/' + type + '.jpg');
+};
+
+/**
+ * Translates the player state for the YouTube API player.
+ *
+ * @param {number} playerState The YouTube player state.
+ */
+minplayer.players.youtube.prototype.setPlayerState = function(playerState) {
+  switch (playerState) {
+    case YT.PlayerState.CUED:
+      break;
+    case YT.PlayerState.BUFFERING:
+      this.onWaiting();
+      break;
+    case YT.PlayerState.PAUSED:
+      this.onPaused();
+      break;
+    case YT.PlayerState.PLAYING:
+      this.onPlaying();
+      break;
+    case YT.PlayerState.ENDED:
+      this.onComplete();
+      break;
+    default:
+      break;
+  }
+};
+
+/**
+ * Called when an error occurs.
+ *
+ * @param {string} event The onReady event that was triggered.
+ */
+minplayer.players.youtube.prototype.onReady = function(event) {
+  minplayer.players.base.prototype.onReady.call(this);
+  if (!this.options.autoplay) {
+    this.pause();
+  }
+  this.onLoaded();
+};
+
+/**
+ * Checks to see if this player can be found.
+ * @return {bool} TRUE - Player is found, FALSE - otherwise.
+ */
+minplayer.players.youtube.prototype.playerFound = function() {
+  var id = 'iframe#' + this.options.id + '-player.youtube-player';
+  var iframe = this.display.find(id);
+  return (iframe.length > 0);
+};
+
+/**
+ * Called when the player state changes.
+ *
+ * @param {object} event A JavaScript Event.
+ */
+minplayer.players.youtube.prototype.onPlayerStateChange = function(event) {
+  this.setPlayerState(event.data);
+};
+
+/**
+ * Called when the player quality changes.
+ *
+ * @param {string} newQuality The new quality for the change.
+ */
+minplayer.players.youtube.prototype.onQualityChange = function(newQuality) {
+  this.quality = newQuality.data;
+};
+
+/**
+ * Determines if the player should show the playloader.
+ *
+ * @param {string} preview The preview image.
+ * @return {bool} If this player implements its own playLoader.
+ */
+minplayer.players.youtube.prototype.hasPlayLoader = function(preview) {
+  return minplayer.hasTouch || !preview;
+};
+
+/**
+ * Determines if the player should show the controller.
+ *
+ * @return {bool} If this player implements its own playLoader.
+ */
+minplayer.players.youtube.prototype.hasController = function() {
+  return minplayer.isIDevice;
+};
+
+/**
+ * @see minplayer.players.base#create
+ * @return {object} The media player entity.
+ */
+minplayer.players.youtube.prototype.create = function() {
+  minplayer.players.base.prototype.create.call(this);
+
+  // Insert the YouTube iframe API player.
+  var tag = document.createElement('script');
+  tag.src = 'https://www.youtube.com/player_api';
+  var firstScriptTag = document.getElementsByTagName('script')[0];
+  firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
+
+  // Get the player ID.
+  this.playerId = this.options.id + '-player';
+
+  // Poll until the YouTube API is ready.
+  this.poll((function(player) {
+    return function() {
+      var ready = jQuery('#' + player.playerId).length > 0;
+      ready = ready && ('YT' in window);
+      ready = ready && (typeof YT.Player == 'function');
+      if (ready) {
+        // Determine the origin of this script.
+        jQuery('#' + player.playerId).addClass('youtube-player');
+        var origin = location.protocol;
+        origin += '//' + location.hostname;
+        origin += (location.port && ':' + location.port);
+
+        var playerVars = {};
+        if (minplayer.isIDevice) {
+          playerVars.origin = origin;
+        }
+        else {
+          playerVars = {
+            enablejsapi: minplayer.isIDevice ? 0 : 1,
+            origin: origin,
+            wmode: 'opaque',
+            controls: minplayer.isAndroid ? 1 : 0
+          };
+        }
+
+        // Create the player.
+        player.player = new YT.Player(player.playerId, {
+          height: '100%',
+          width: '100%',
+          frameborder: 0,
+          videoId: player.mediaFile.id,
+          playerVars: playerVars,
+          events: {
+            'onReady': function(event) {
+              player.onReady(event);
+            },
+            'onStateChange': function(event) {
+              player.onPlayerStateChange(event);
+            },
+            'onPlaybackQualityChange': function(newQuality) {
+              player.onQualityChange(newQuality);
+            },
+            'onError': function(errorCode) {
+              player.onError(errorCode);
+            }
+          }
+        });
+      }
+      return !ready;
+    };
+  })(this), 200);
+
+  // Return the player.
+  return jQuery(document.createElement('div')).attr({
+    id: this.playerId
+  });
+};
+
+/**
+ * @see minplayer.players.base#load
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.youtube.prototype.load = function(file) {
+  if (minplayer.players.base.prototype.load.call(this, file)) {
+    this.player.loadVideoById(file.id, 0, this.quality);
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#play
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.youtube.prototype.play = function() {
+  if (minplayer.players.base.prototype.play.call(this)) {
+    this.onWaiting();
+    this.player.playVideo();
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#pause
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.youtube.prototype.pause = function() {
+  if (minplayer.players.base.prototype.pause.call(this)) {
+    this.player.pauseVideo();
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#stop
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.youtube.prototype.stop = function() {
+  if (minplayer.players.base.prototype.stop.call(this)) {
+    this.player.stopVideo();
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#seek
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.youtube.prototype.seek = function(pos) {
+  if (minplayer.players.base.prototype.seek.call(this, pos)) {
+    this.onWaiting();
+    this.player.seekTo(pos, true);
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#setVolume
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.youtube.prototype.setVolume = function(vol) {
+  if (minplayer.players.base.prototype.setVolume.call(this, vol)) {
+    this.player.setVolume(vol * 100);
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#getVolume
+ */
+minplayer.players.youtube.prototype.getVolume = function(callback) {
+  this.getValue('getVolume', callback);
+};
+
+/**
+ * @see minplayer.players.base#getDuration.
+ */
+minplayer.players.youtube.prototype.getDuration = function(callback) {
+  this.getValue('getDuration', callback);
+};
+
+/**
+ * @see minplayer.players.base#getCurrentTime
+ */
+minplayer.players.youtube.prototype.getCurrentTime = function(callback) {
+  this.getValue('getCurrentTime', callback);
+};
+
+/**
+ * @see minplayer.players.base#getBytesStart.
+ */
+minplayer.players.youtube.prototype.getBytesStart = function(callback) {
+  this.getValue('getVideoStartBytes', callback);
+};
+
+/**
+ * @see minplayer.players.base#getBytesLoaded.
+ */
+minplayer.players.youtube.prototype.getBytesLoaded = function(callback) {
+  this.getValue('getVideoBytesLoaded', callback);
+};
+
+/**
+ * @see minplayer.players.base#getBytesTotal.
+ */
+minplayer.players.youtube.prototype.getBytesTotal = function(callback) {
+  this.getValue('getVideoBytesTotal', callback);
+};
+/** The minplayer namespace. */
+var minplayer = minplayer || {};
+
+/** All the media player implementations */
+minplayer.players = minplayer.players || {};
+
+/**
+ * @constructor
+ * @extends minplayer.players.base
+ * @class The vimeo media player.
+ *
+ * @param {object} context The jQuery context.
+ * @param {object} options This components options.
+ * @param {object} queue The event queue to pass events around.
+ */
+minplayer.players.vimeo = function(context, options, queue) {
+
+  // Derive from players base.
+  minplayer.players.base.call(this, context, options, queue);
+};
+
+/** Derive from minplayer.players.base. */
+minplayer.players.vimeo.prototype = new minplayer.players.base();
+
+/** Reset the constructor. */
+minplayer.players.vimeo.prototype.constructor = minplayer.players.vimeo;
+
+/**
+ * @see minplayer.plugin.construct
+ * @this minplayer.players.vimeo
+ */
+minplayer.players.vimeo.prototype.construct = function() {
+
+  // Call the players.flash constructor.
+  minplayer.players.base.prototype.construct.call(this);
+
+  // Set the plugin name within the options.
+  this.options.pluginName = 'vimeo';
+};
+
+/**
+ * @see minplayer.players.base#getPriority
+ * @return {number} The priority of this media player.
+ */
+minplayer.players.vimeo.getPriority = function() {
+  return 10;
+};
+
+/**
+ * @see minplayer.players.base#canPlay
+ * @return {boolean} If this player can play this media type.
+ */
+minplayer.players.vimeo.canPlay = function(file) {
+
+  // Check for the mimetype for vimeo.
+  if (file.mimetype === 'video/vimeo') {
+    return true;
+  }
+
+  // If the path is a vimeo path, then return true.
+  return (file.path.search(/^http(s)?\:\/\/(www\.)?vimeo\.com/i) === 0);
+};
+
+/**
+ * Determines if the player should show the playloader.
+ *
+ * @param {string} preview The preview image.
+ * @return {bool} If this player implements its own playLoader.
+ */
+minplayer.players.vimeo.prototype.hasPlayLoader = function(preview) {
+  return minplayer.hasTouch || !preview;
+};
+
+/**
+ * Determines if the player should show the playloader.
+ *
+ * @return {bool} If this player implements its own playLoader.
+ */
+minplayer.players.vimeo.prototype.hasController = function() {
+  return minplayer.hasTouch;
+};
+
+/**
+ * Return the ID for a provided media file.
+ *
+ * @param {object} file A {@link minplayer.file} object.
+ * @return {string} The ID for the provided media.
+ */
+minplayer.players.vimeo.getMediaId = function(file) {
+  var regex = /^http[s]?\:\/\/(www\.)?vimeo\.com\/(\?v\=)?([0-9]+)/i;
+  if (file.path.search(regex) === 0) {
+    return file.path.match(regex)[3];
+  }
+  else {
+    return file.path;
+  }
+};
+
+/**
+ * Returns a preview image for this media player.
+ *
+ * @param {object} file A {@link minplayer.file} object.
+ * @param {string} type The type of image.
+ * @param {function} callback Called when the image is retrieved.
+ */
+minplayer.players.vimeo.getImage = function(file, type, callback) {
+  jQuery.ajax({
+    url: 'http://vimeo.com/api/v2/video/' + file.id + '.json',
+    dataType: 'jsonp',
+    success: function(data) {
+      callback(data[0].thumbnail_large);
+    }
+  });
+};
+
+/**
+ * @see minplayer.players.base#reset
+ */
+minplayer.players.vimeo.prototype.reset = function() {
+
+  // Reset the flash variables..
+  minplayer.players.base.prototype.reset.call(this);
+};
+
+/**
+ * @see minplayer.players.base#create
+ * @return {object} The media player entity.
+ */
+minplayer.players.vimeo.prototype.create = function() {
+  minplayer.players.base.prototype.create.call(this);
+
+  // Insert the Vimeo Froogaloop player.
+  var tag = document.createElement('script');
+  tag.src = 'http://a.vimeocdn.com/js/froogaloop2.min.js';
+  var firstScriptTag = document.getElementsByTagName('script')[0];
+  firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
+
+  // Create the iframe for this player.
+  var iframe = document.createElement('iframe');
+  iframe.setAttribute('id', this.options.id + '-player');
+  iframe.setAttribute('type', 'text/html');
+  iframe.setAttribute('width', '100%');
+  iframe.setAttribute('height', '100%');
+  iframe.setAttribute('frameborder', '0');
+  jQuery(iframe).addClass('vimeo-player');
+
+  // Get the source.
+  var src = 'http://player.vimeo.com/video/';
+  src += this.mediaFile.id + '?';
+
+  // Add the parameters to the src.
+  src += jQuery.param({
+    'wmode': 'opaque',
+    'api': 1,
+    'player_id': this.options.id + '-player',
+    'title': 0,
+    'byline': 0,
+    'portrait': 0,
+    'autoplay': this.options.autoplay,
+    'loop': this.options.loop
+  });
+
+  // Set the source of the iframe.
+  iframe.setAttribute('src', src);
+
+  // Now register this player when the froogaloop code is loaded.
+  this.poll((function(player) {
+    return function() {
+      if (window.Froogaloop) {
+        player.player = window.Froogaloop(iframe);
+        var playerTimeout = 0;
+        player.player.addEvent('ready', function() {
+          clearTimeout(playerTimeout);
+          player.onReady();
+          player.onError('');
+        });
+        playerTimeout = setTimeout(function() {
+          player.onReady();
+          player.onError('Unable to play video.');
+        }, 2000);
+      }
+      return !window.Froogaloop;
+    };
+  })(this), 200);
+
+  // Trigger that the load has started.
+  this.trigger('loadstart');
+
+  // Return the player.
+  return iframe;
+};
+
+/**
+ * @see minplayer.players.base#onReady
+ */
+minplayer.players.vimeo.prototype.onReady = function(player_id) {
+
+  // Add the other listeners.
+  this.player.addEvent('loadProgress', (function(player) {
+    return function(progress) {
+      player.duration.set(parseFloat(progress.duration));
+      player.bytesLoaded.set(progress.bytesLoaded);
+      player.bytesTotal.set(progress.bytesTotal);
+    };
+  })(this));
+
+  this.player.addEvent('playProgress', (function(player) {
+    return function(progress) {
+      player.duration.set(parseFloat(progress.duration));
+      player.currentTime.set(parseFloat(progress.seconds));
+    };
+  })(this));
+
+  this.player.addEvent('play', (function(player) {
+    return function() {
+      player.onPlaying();
+    };
+  })(this));
+
+  this.player.addEvent('pause', (function(player) {
+    return function() {
+      player.onPaused();
+    };
+  })(this));
+
+  this.player.addEvent('finish', (function(player) {
+    return function() {
+      player.onComplete();
+    };
+  })(this));
+
+  minplayer.players.base.prototype.onReady.call(this);
+  this.onLoaded();
+};
+
+/**
+ * Clears the media player.
+ */
+minplayer.players.vimeo.prototype.clear = function() {
+  if (this.player) {
+    this.player.api('unload');
+  }
+  minplayer.players.base.prototype.clear.call(this);
+};
+
+/**
+ * @see minplayer.players.base#load
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.vimeo.prototype.load = function(file) {
+  if (minplayer.players.base.prototype.load.call(this, file)) {
+    this.construct();
+    return true;
+  }
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#play
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.vimeo.prototype.play = function() {
+  if (minplayer.players.base.prototype.play.call(this)) {
+    this.player.api('play');
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#pause
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.vimeo.prototype.pause = function() {
+  if (minplayer.players.base.prototype.pause.call(this)) {
+    this.player.api('pause');
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#stop
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.vimeo.prototype.stop = function() {
+  if (minplayer.players.base.prototype.stop.call(this)) {
+    this.player.api('unload');
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#seek
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.vimeo.prototype.seek = function(pos) {
+  if (minplayer.players.base.prototype.seek.call(this, pos)) {
+    this.player.api('seekTo', pos);
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#setVolume
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.vimeo.prototype.setVolume = function(vol) {
+  if (minplayer.players.base.prototype.setVolume.call(this, vol)) {
+    this.volume.set(vol);
+    this.player.api('setVolume', vol);
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#getVolume
+ */
+minplayer.players.vimeo.prototype.getVolume = function(callback) {
+  this.player.api('getVolume', function(vol) {
+    callback(vol);
+  });
+};
+
+/**
+ * @see minplayer.players.base#getDuration.
+ */
+minplayer.players.vimeo.prototype.getDuration = function(callback) {
+  if (this.isReady()) {
+    if (this.duration.value) {
+      callback(this.duration.value);
+    }
+    else {
+      this.player.api('getDuration', function(duration) {
+        callback(duration);
+      });
+    }
+  }
+};
+/** The minplayer namespace. */
+var minplayer = minplayer || {};
+
+/**
+ * @constructor
+ * @extends minplayer.display
+ * @class This is the base minplayer controller.  Other controllers can derive
+ * from the base and either build on top of it or simply define the elements
+ * that this base controller uses.
+ *
+ * @param {object} context The jQuery context.
+ * @param {object} options This components options.
+ */
+minplayer.controller = function(context, options) {
+
+  // Derive from display
+  minplayer.display.call(this, 'controller', context, options);
+};
+
+/** Derive from minplayer.display. */
+minplayer.controller.prototype = new minplayer.display();
+
+/** Reset the constructor. */
+minplayer.controller.prototype.constructor = minplayer.controller;
+
+/**
+ * A static function that will format a time value into a string time format.
+ *
+ * @param {integer} time An integer value of time.
+ * @return {string} A string representation of the time.
+ */
+minplayer.formatTime = function(time) {
+  time = time || 0;
+  var seconds = 0, minutes = 0, hour = 0, timeString = '';
+
+  hour = Math.floor(time / 3600);
+  time -= (hour * 3600);
+  minutes = Math.floor(time / 60);
+  time -= (minutes * 60);
+  seconds = Math.floor(time % 60);
+
+  if (hour) {
+    timeString += String(hour);
+    timeString += ':';
+  }
+
+  timeString += (minutes >= 10) ? String(minutes) : ('0' + String(minutes));
+  timeString += ':';
+  timeString += (seconds >= 10) ? String(seconds) : ('0' + String(seconds));
+  return {time: timeString, units: ''};
+};
+
+/**
+ * @see minplayer.display#getElements
+ * @return {object} The elements defined by this display.
+ */
+minplayer.controller.prototype.getElements = function() {
+  var elements = minplayer.display.prototype.getElements.call(this);
+  return jQuery.extend(elements, {
+    play: null,
+    pause: null,
+    fullscreen: null,
+    seek: null,
+    progress: null,
+    volume: null,
+    timer: null
+  });
+};
+
+/**
+ * @see minplayer.plugin#construct
+ */
+minplayer.controller.prototype.construct = function() {
+
+  // Call the minplayer plugin constructor.
+  minplayer.display.prototype.construct.call(this);
+
+  // Set the plugin name within the options.
+  this.options.pluginName = 'controller';
+
+  // Keep track of if we are dragging...
+  this.dragging = false;
+
+  // Keep track of the current volume.
+  this.vol = 0;
+
+  // If they have a seek bar.
+  if (this.elements.seek) {
+
+    // Create the seek bar slider control.
+    this.seekBar = this.elements.seek.slider({
+      range: 'min',
+      create: function(event, ui) {
+        jQuery('.ui-slider-range', event.target).addClass('ui-state-active');
+      }
+    });
+  }
+
+  // If they have a volume bar.
+  if (this.elements.volume) {
+
+    // Create the volume bar slider control.
+    this.volumeBar = this.elements.volume.slider({
+      range: 'min',
+      orientation: 'vertical'
+    });
+  }
+
+  // Get the player plugin.
+  this.get('player', function(player) {
+
+    // If they have a fullscreen button.
+    if (this.elements.fullscreen) {
+
+      // Bind to the click event.
+      minplayer.click(this.elements.fullscreen.unbind(), function() {
+        player.toggleFullScreen();
+      }).css({'pointer' : 'hand'});
+    }
+  });
+
+  // Get the media plugin.
+  this.get('media', function(media) {
+
+    // Only bind if this player does not have its own play loader.
+    if (!media.hasController()) {
+
+      // If they have a pause button
+      if (this.elements.pause) {
+
+        // Bind to the click on this button.
+        minplayer.click(this.elements.pause.unbind(), (function(controller) {
+          return function(event) {
+            event.preventDefault();
+            controller.playPause(false, media);
+          };
+        })(this));
+
+        // Bind to the pause event of the media.
+        media.bind('pause', (function(controller) {
+          return function(event) {
+            controller.setPlayPause(true);
+          };
+        })(this));
+      }
+
+      // If they have a play button
+      if (this.elements.play) {
+
+        // Bind to the click on this button.
+        minplayer.click(this.elements.play.unbind(), (function(controller) {
+          return function(event) {
+            event.preventDefault();
+            controller.playPause(true, media);
+          };
+        })(this));
+
+        // Bind to the play event of the media.
+        media.bind('playing', (function(controller) {
+          return function(event) {
+            controller.setPlayPause(false);
+          };
+        })(this));
+      }
+
+      // If they have a duration, then trigger on duration change.
+      if (this.elements.duration) {
+
+        // Bind to the duration change event.
+        media.bind('durationchange', (function(controller) {
+          return function(event, data) {
+            controller.setTimeString('duration', data.duration);
+          };
+        })(this));
+
+        // Set the timestring to the duration.
+        media.getDuration((function(controller) {
+          return function(duration) {
+            controller.setTimeString('duration', duration);
+          };
+        })(this));
+      }
+
+      // If they have a progress element.
+      if (this.elements.progress) {
+
+        // Bind to the progress event.
+        media.bind('progress', (function(controller) {
+          return function(event, data) {
+            var percent = data.total ? (data.loaded / data.total) * 100 : 0;
+            controller.elements.progress.width(percent + '%');
+          };
+        })(this));
+      }
+
+      // If they have a seek bar or timer, bind to the timeupdate.
+      if (this.seekBar || this.elements.timer) {
+
+        // Bind to the time update event.
+        media.bind('timeupdate', (function(controller) {
+          return function(event, data) {
+            if (!controller.dragging) {
+              var value = 0;
+              if (data.duration) {
+                value = (data.currentTime / data.duration) * 100;
+              }
+
+              // Update the seek bar if it exists.
+              if (controller.seekBar) {
+                controller.seekBar.slider('option', 'value', value);
+              }
+
+              controller.setTimeString('timer', data.currentTime);
+            }
+          };
+        })(this));
+      }
+
+      // If they have a seekBar element.
+      if (this.seekBar) {
+
+        // Register the events for the control bar to control the media.
+        this.seekBar.slider({
+          start: (function(controller) {
+            return function(event, ui) {
+              controller.dragging = true;
+            };
+          })(this),
+          stop: (function(controller) {
+            return function(event, ui) {
+              controller.dragging = false;
+              media.getDuration(function(duration) {
+                media.seek((ui.value / 100) * duration);
+              });
+            };
+          })(this),
+          slide: (function(controller) {
+            return function(event, ui) {
+              media.getDuration(function(duration) {
+                var time = (ui.value / 100) * duration;
+                if (!controller.dragging) {
+                  media.seek(time);
+                }
+                controller.setTimeString('timer', time);
+              });
+            };
+          })(this)
+        });
+      }
+
+      // Setup the mute button.
+      if (this.elements.mute) {
+        minplayer.click(this.elements.mute, (function(controller) {
+          return function(event) {
+            event.preventDefault();
+            var value = controller.volumeBar.slider('option', 'value');
+            if (value > 0) {
+              controller.vol = value;
+              controller.volumeBar.slider('option', 'value', 0);
+              media.setVolume(0);
+            }
+            else {
+              controller.volumeBar.slider('option', 'value', controller.vol);
+              media.setVolume(controller.vol / 100);
+            }
+          };
+        })(this));
+      }
+
+      // Setup the volume bar.
+      if (this.volumeBar) {
+
+        // Create the slider.
+        this.volumeBar.slider({
+          slide: function(event, ui) {
+            media.setVolume(ui.value / 100);
+          }
+        });
+
+        media.bind('volumeupdate', (function(controller) {
+          return function(event, vol) {
+            controller.volumeBar.slider('option', 'value', (vol * 100));
+          };
+        })(this));
+
+        // Set the volume to match that of the player.
+        media.getVolume((function(controller) {
+          return function(vol) {
+            controller.volumeBar.slider('option', 'value', (vol * 100));
+          };
+        })(this));
+      }
+    }
+    else {
+
+      // Hide this controller.
+      this.hide();
+    }
+  });
+
+  // We are now ready.
+  this.ready();
+};
+
+/**
+ * Sets the play and pause state of the control bar.
+ *
+ * @param {boolean} state TRUE - Show Play, FALSE - Show Pause.
+ */
+minplayer.controller.prototype.setPlayPause = function(state) {
+  var css = '';
+  if (this.elements.play) {
+    css = state ? 'inherit' : 'none';
+    this.elements.play.css('display', css);
+  }
+  if (this.elements.pause) {
+    css = state ? 'none' : 'inherit';
+    this.elements.pause.css('display', css);
+  }
+};
+
+/**
+ * Plays or pauses the media.
+ *
+ * @param {bool} state true => play, false => pause.
+ * @param {object} media The media player object.
+ */
+minplayer.controller.prototype.playPause = function(state, media) {
+  var type = state ? 'play' : 'pause';
+  this.display.trigger(type);
+  this.setPlayPause(!state);
+  if (media) {
+    media[type]();
+  }
+};
+
+/**
+ * Sets the time string on the control bar.
+ *
+ * @param {string} element The name of the element to set.
+ * @param {number} time The total time amount to set.
+ */
+minplayer.controller.prototype.setTimeString = function(element, time) {
+  if (this.elements[element]) {
+    this.elements[element].text(minplayer.formatTime(time).time);
+  }
+};
diff --git a/public/admin/js/osmplayer/minplayer/flash/README.txt b/public/admin/js/osmplayer/minplayer/flash/README.txt
new file mode 100755
index 0000000000000000000000000000000000000000..944acc3ccabfc325151862a021cdd4d24b5605ff
--- /dev/null
+++ b/public/admin/js/osmplayer/minplayer/flash/README.txt
@@ -0,0 +1,12 @@
+The minplayer is a GPLv3, minimalistic, skinable, plugin based Flash media player.
+
+In addition to being a minimal Flash player, it was built with a solid API so that any 
+JavaScript widget can communicate to this player easily and effectively controlling it
+from outside sources.
+
+This player was written with several objectives.
+
+ - Small and lightweight
+ - Solid plugin based system to easily build on top of this player without recompiling.
+ - Complete JavaScript API.
+ - Configurable using external XML files.
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/minplayer/flash/config/config.xml b/public/admin/js/osmplayer/minplayer/flash/config/config.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8192ae4fd72388949c0158cb9dd5842b3c7d063c
--- /dev/null
+++ b/public/admin/js/osmplayer/minplayer/flash/config/config.xml
@@ -0,0 +1,39 @@
+<config>
+   <settings>
+   </settings>
+   <plugins>
+      <plugin>
+         <definition>com.mediafront.display.media.MediaPlayer</definition>
+         <!--
+           If you wish to dyanmically load a SWF file for your plugin instead of including
+           the definition, you can do so by just providing the path to the plugin like so, and
+           then delete the "definition" parameter above.
+         -->
+         <!--<path>http://mysite.com/plugins/plugin.swf</path>-->
+         <skin>skins/%skin/mediaPlayer.swf</skin>
+         <type>mediaPlayer</type>
+         <name>mediaPlayer</name>
+         <visible>true</visible>
+      </plugin>
+      <plugin>
+         <definition>com.mediafront.display.media.controls.PlayLoader</definition>
+         <skin>skins/%skin/playLoader.swf</skin>
+         <type>playLoader</type>
+         <name>playLoader</name>
+         <visible>true</visible>
+         <dependencies>
+            <dependency>mediaPlayer</dependency>
+         </dependencies>
+      </plugin>
+      <plugin>
+         <definition>com.mediafront.display.media.controls.ControlBar</definition>
+         <skin>skins/%skin/controlBar.swf</skin>
+         <type>controlBar</type>
+         <name>controlBar</name>
+         <visible>true</visible>
+         <dependencies>
+            <dependency>mediaPlayer</dependency>
+         </dependencies>
+      </plugin>
+   </plugins>
+</config>
diff --git a/public/admin/js/osmplayer/minplayer/flash/config/nocontrols.xml b/public/admin/js/osmplayer/minplayer/flash/config/nocontrols.xml
new file mode 100644
index 0000000000000000000000000000000000000000..28fef65fcdc201f3a9e875d1bb44296be4e44380
--- /dev/null
+++ b/public/admin/js/osmplayer/minplayer/flash/config/nocontrols.xml
@@ -0,0 +1,39 @@
+<config>
+   <settings>
+   </settings>
+   <plugins>
+      <plugin>
+         <definition>com.mediafront.display.media.MediaPlayer</definition>
+         <!--
+           If you wish to dyanmically load a SWF file for your plugin instead of including
+           the definition, you can do so by just providing the path to the plugin like so, and
+           then delete the "definition" parameter above.
+         -->
+         <!--<path>http://mysite.com/plugins/plugin.swf</path>-->
+         <skin>skins/%skin/mediaPlayer.swf</skin>
+         <type>mediaPlayer</type>
+         <name>mediaPlayer</name>
+         <visible>true</visible>
+      </plugin>
+      <plugin>
+         <definition>com.mediafront.display.media.controls.PlayLoader</definition>
+         <skin>skins/%skin/playLoader.swf</skin>
+         <type>playLoader</type>
+         <name>playLoader</name>
+         <visible>false</visible>
+         <dependencies>
+            <dependency>mediaPlayer</dependency>
+         </dependencies>
+      </plugin>
+      <plugin>
+         <definition>com.mediafront.display.media.controls.ControlBar</definition>
+         <skin>skins/%skin/controlBar.swf</skin>
+         <type>controlBar</type>
+         <name>controlBar</name>
+         <visible>false</visible>
+         <dependencies>
+            <dependency>mediaPlayer</dependency>
+         </dependencies>
+      </plugin>
+   </plugins>
+</config>
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/minplayer/flash/minplayer.swf b/public/admin/js/osmplayer/minplayer/flash/minplayer.swf
new file mode 100644
index 0000000000000000000000000000000000000000..f2a17b7f9d9f19736a8fbac37dda4c3a884e5cc9
Binary files /dev/null and b/public/admin/js/osmplayer/minplayer/flash/minplayer.swf differ
diff --git a/public/admin/js/osmplayer/minplayer/flash/skins/default/controlBar.swf b/public/admin/js/osmplayer/minplayer/flash/skins/default/controlBar.swf
new file mode 100644
index 0000000000000000000000000000000000000000..dfb2f6831201e99f9dd53ba8e6c08add0c5fd415
Binary files /dev/null and b/public/admin/js/osmplayer/minplayer/flash/skins/default/controlBar.swf differ
diff --git a/public/admin/js/osmplayer/minplayer/flash/skins/default/mediaPlayer.swf b/public/admin/js/osmplayer/minplayer/flash/skins/default/mediaPlayer.swf
new file mode 100644
index 0000000000000000000000000000000000000000..3eae131ed5e2ee41f746efc2786b1c73bc4ce5de
Binary files /dev/null and b/public/admin/js/osmplayer/minplayer/flash/skins/default/mediaPlayer.swf differ
diff --git a/public/admin/js/osmplayer/minplayer/flash/skins/default/playLoader.swf b/public/admin/js/osmplayer/minplayer/flash/skins/default/playLoader.swf
new file mode 100644
index 0000000000000000000000000000000000000000..2e9a46062e5cec8175558a9917eadeb70dfeebe8
Binary files /dev/null and b/public/admin/js/osmplayer/minplayer/flash/skins/default/playLoader.swf differ
diff --git a/public/admin/js/osmplayer/minplayer/images/bg_hr.png b/public/admin/js/osmplayer/minplayer/images/bg_hr.png
new file mode 100644
index 0000000000000000000000000000000000000000..7973bd69888c7e10ccad1111d555ceabb7cd99b6
Binary files /dev/null and b/public/admin/js/osmplayer/minplayer/images/bg_hr.png differ
diff --git a/public/admin/js/osmplayer/minplayer/images/blacktocat.png b/public/admin/js/osmplayer/minplayer/images/blacktocat.png
new file mode 100644
index 0000000000000000000000000000000000000000..6e264fe57a2e35a2855405ac7d4102c3f6ddcdae
Binary files /dev/null and b/public/admin/js/osmplayer/minplayer/images/blacktocat.png differ
diff --git a/public/admin/js/osmplayer/minplayer/images/icon_download.png b/public/admin/js/osmplayer/minplayer/images/icon_download.png
new file mode 100644
index 0000000000000000000000000000000000000000..a2a287f642aaeeadf62d3819a16d6a55e12afc01
Binary files /dev/null and b/public/admin/js/osmplayer/minplayer/images/icon_download.png differ
diff --git a/public/admin/js/osmplayer/minplayer/images/sprite_download.png b/public/admin/js/osmplayer/minplayer/images/sprite_download.png
new file mode 100644
index 0000000000000000000000000000000000000000..f2babd575dc1cbd6e9342cc58ca795377d35afdb
Binary files /dev/null and b/public/admin/js/osmplayer/minplayer/images/sprite_download.png differ
diff --git a/public/admin/js/osmplayer/minplayer/index.html b/public/admin/js/osmplayer/minplayer/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..4b1dfe92d18bb01a75b5b6b442c3c3552689ba8c
--- /dev/null
+++ b/public/admin/js/osmplayer/minplayer/index.html
@@ -0,0 +1,222 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta charset='utf-8' />
+    <meta http-equiv="X-UA-Compatible" content="chrome=1" />
+    <meta name="description" content="minPlayer : A minimalistic, plugin-based &quot;core&quot; media player for the web." />
+
+    <!-- Include jQuery and jQuery UI -->
+    <script type='text/javascript' src="https://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.js"></script>
+    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script>
+
+    <!-- Many more themes to chose from... go to http://jqueryui.com/themeroller! -->
+    <link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/dark-hive/jquery-ui.css">
+
+    <!-- The following can be replaced by a single javascript include bin/minplayer.compressed.js -->
+    <script type="text/javascript" src="src/minplayer.compatibility.js"></script>
+    <script type="text/javascript" src="src/minplayer.flags.js"></script>
+    <script type="text/javascript" src="src/minplayer.async.js"></script>
+    <script type="text/javascript" src="src/minplayer.plugin.js"></script>
+    <script type="text/javascript" src="src/minplayer.display.js"></script>
+    <script type="text/javascript" src="src/minplayer.js"></script>
+    <script type="text/javascript" src="src/minplayer.image.js"></script>
+    <script type="text/javascript" src="src/minplayer.file.js"></script>
+    <script type="text/javascript" src="src/minplayer.playLoader.js"></script>
+    <script type="text/javascript" src="src/minplayer.players.base.js"></script>
+    <script type="text/javascript" src="src/minplayer.players.html5.js"></script>
+    <script type="text/javascript" src="src/minplayer.players.flash.js"></script>
+    <script type="text/javascript" src="src/minplayer.players.minplayer.js"></script>
+    <script type="text/javascript" src="src/minplayer.players.youtube.js"></script>
+    <script type="text/javascript" src="src/minplayer.players.vimeo.js"></script>
+    <script type="text/javascript" src="src/minplayer.controller.js"></script>
+
+    <!-- Include the template CSS and JS files. -->
+    <link rel="stylesheet" href="templates/default/css/minplayer_default.css">
+    <script type="text/javascript" src="templates/default/js/minplayer.playLoader.default.js"></script>
+    <script type="text/javascript" src="templates/default/js/minplayer.controller.default.js"></script>
+    <script type="text/javascript" src="templates/default/js/minplayer.default.js"></script>
+    <script type="text/javascript">
+      $(function() {
+        $("#h264").minplayer({
+          width: '500px',
+          height: '300px'
+        });
+        $("#youtube").minplayer({
+          width: '500px',
+          height: '300px'
+        });
+        $("#youtube2").minplayer({
+          width: '500px',
+          height: '300px'
+        });
+        $("#vimeo").minplayer({
+          width: '500px',
+          height: '300px'
+        });
+      });
+    </script>
+    <link rel="stylesheet" type="text/css" media="screen" href="stylesheets/stylesheet.css">
+
+    <title>minPlayer</title>
+  </head>
+
+  <body>
+
+    <!-- HEADER -->
+    <div id="header_wrap" class="outer">
+        <header class="inner">
+          <a id="forkme_banner" href="https://github.com/travist/minplayer">Fork Me on GitHub</a>
+
+          <h1 id="project_title">minPlayer</h1>
+          <h2 id="project_tagline">A minimalistic, plugin-based &quot;core&quot; media player for the web.</h2>
+
+          <section id="downloads">
+            <a class="zip_download_link" href="https://github.com/travist/minplayer/zipball/master">Download this project as a .zip file</a>
+            <a class="tar_download_link" href="https://github.com/travist/minplayer/tarball/master">Download this project as a tar.gz file</a>
+          </section>
+        </header>
+    </div>
+
+    <!-- MAIN CONTENT -->
+    <div id="main_content_wrap" class="outer">
+      <section id="main_content" class="inner">
+        <h1>minPlayer - Because less IS more.</h1>
+
+<p>The goal of this project is to provide a slim, well documented, object oriented,
+plugin-based "core" media player in which other players and libraries can build
+on top of.  It is written using object oriented JavaScript and is continuously
+integrated using JSLint, JSDoc, and Google Closure.</p>
+
+<h2>h264 Example</h2>
+<video id="h264" src="http://mediafront.org/sites/default/files/video/The_Living_Sky___Time-Lapse__HD.mp4"></video>
+<h2>YouTube Example</h2>
+<video id="youtube" src="http://www.youtube.com/watch?v=hLQl3WQQoQ0"></video>
+<h2>Two YouTube Players on same page</h2>
+<video id="youtube2" src="http://www.youtube.com/watch?v=dTAAsCNK7RA"></video>
+<h2>Vimeo Example</h2>
+<video id="vimeo" src="http://vimeo.com/5606758"></video>
+
+<h2>Multiple players - One single API.</h2>
+
+<p>It also allows for hot-swappable 3rd party API players by providing a common
+API for all of these players so that they can be utilized in the same manner.
+This means that once you develop for the minPlayer, one can easily bring in a
+different player an your code will still function as it would for all the
+others.  Out of the box, this player provides a common API for YouTube, Vimeo,
+HTML5, and Flash with more on the way.</p>
+
+<h2>Everything is a plugin</h2>
+
+<p>Since this is a plugin-based media player, every displayable class must derive
+from the plugin class, thereby, making it a plugin.  This includes the media
+player itself.  This plugin system is highly flexible to be able to handle
+just about any type of plugin imaginable, and allows for every plugin to have
+direct dependeny-injected control over any other plugin within the media player.</p>
+
+<h2>Complete User Interface &amp; Business Logic separation</h2>
+
+<p>One common complaint for many media solutions out there is that they hijack the
+DOM and build out their own controls to provide consistency amongst different
+browsers.  They do this, however, within the core player which completely binds
+the user interface to the business logic of the media player.  The minPlayer
+takes a different approach by keeping ALL user interface functionality within
+the "templates" directory, where each template essentially derives from the base
+Business logic classes only to provide the user interface aspects of that control.
+This allows for easy templating of the media player besides just overriding the
+CSS like current media solutions do today.</p>
+
+<h2>No "Features"!</h2>
+
+<p>I am pleased to say that this media player does NOT have many features, and this
+is on purpose.  Since this is a "core" player, it does not have any features
+other than what is critical in presenting your media.  Any additional "bling"
+will be added to this player from different repositories and from different
+players that extend this "core" functionality.  This methodology will keep this
+"core" media solution lean &amp; highly functional.</p>
+
+<h2>API</h2>
+
+<p>The API for minPlayer is very simple.  It revolves around a single API that is
+able to retrieve any plugin even before that plugin is created.  By doing this,
+you can have complete control over any plugin within the minPlayer.  This API
+is simply called</p>
+
+<pre><code>minplayer.get();
+</code></pre>
+
+<p>This API can take up to three different argument with each argument providing
+different usage.  The code docs for this function are as follows...</p>
+
+<pre><code>/**
+ * The main API for minPlayer.
+ *
+ * Provided that this function takes three parameters, there are 8 different
+ * ways to use this api.
+ *
+ *   id (0x100) - You want a specific player.
+ *   plugin (0x010) - You want a specific plugin.
+ *   callback (0x001) - You only want it when it is ready.
+ *
+ *   000 - You want all plugins from all players, ready or not.
+ *
+ *          var instances = minplayer.get();
+ *
+ *   001 - You want all plugins from all players, but only when ready.
+ *
+ *          minplayer.get(function(plugin) {
+ *            // Code goes here.
+ *          });
+ *
+ *   010 - You want a specific plugin from all players, ready or not...
+ *
+ *          var medias = minplayer.get(null, 'media');
+ *
+ *   011 - You want a specific plugin from all players, but only when ready.
+ *
+ *          minplayer.get('player', function(player) {
+ *            // Code goes here.
+ *          });
+ *
+ *   100 - You want all plugins from a specific player, ready or not.
+ *
+ *          var plugins = minplayer.get('player_id');
+ *
+ *   101 - You want all plugins from a specific player, but only when ready.
+ *
+ *          minplayer.get('player_id', null, function(plugin) {
+ *            // Code goes here.
+ *          });
+ *
+ *   110 - You want a specific plugin from a specific player, ready or not.
+ *
+ *          var plugin = minplayer.get('player_id', 'media');
+ *
+ *   111 - You want a specific plugin from a specific player, only when ready.
+ *
+ *          minplayer.get('player_id', 'media', function(media) {
+ *            // Code goes here.
+ *          });
+ *
+ * @this The context in which this function was called.
+ * @param {string} id The ID of the widget to get the plugins from.
+ * @param {string} plugin The name of the plugin.
+ * @param {function} callback Called when the plugin is ready.
+ * @return {object} The plugin object if it is immediately available.
+ */
+minplayer.get = function(id, plugin, callback) {
+};
+</code></pre>
+
+<p>Thanks and enjoy minPlayer.</p>
+      </section>
+    </div>
+
+    <!-- FOOTER  -->
+    <div id="footer_wrap" class="outer">
+      <footer class="inner">
+        <p class="copyright">minPlayer maintained by <a href="https://github.com/travist">travist</a></p>
+        <p>Published with <a href="http://pages.github.com">GitHub Pages</a></p>
+      </footer>
+    </div>
+  </body>
+</html>
diff --git a/public/admin/js/osmplayer/minplayer/javascripts/main.js b/public/admin/js/osmplayer/minplayer/javascripts/main.js
new file mode 100644
index 0000000000000000000000000000000000000000..d8135d37b1f4b5043a444dadecb5ed610a1d33f9
--- /dev/null
+++ b/public/admin/js/osmplayer/minplayer/javascripts/main.js
@@ -0,0 +1 @@
+console.log('This would be the main JS file.');
diff --git a/public/admin/js/osmplayer/minplayer/makefile b/public/admin/js/osmplayer/minplayer/makefile
new file mode 100644
index 0000000000000000000000000000000000000000..26425282f06fb5f65779a212c4c1ea5f028d01f4
--- /dev/null
+++ b/public/admin/js/osmplayer/minplayer/makefile
@@ -0,0 +1,70 @@
+# To run this makefile, you must do the following.
+#
+# 1.)  Download http://closure-compiler.googlecode.com/files/compiler-latest.zip
+#      and place compiler.jar within the tools directory.
+#
+# 2.)  Install closure-linter tool at by following
+#      http://code.google.com/closure/utilities/docs/linter_howto.html
+#
+# 3.)  Download the JSDoc toolkit found at
+#      http://code.google.com/p/jsdoc-toolkit and place the jsdoc-toolkit
+#      directory within the tools directory.
+
+# Create the list of files
+files =   src/minplayer.compatibility.js\
+          src/minplayer.async.js\
+          src/minplayer.flags.js\
+          src/minplayer.plugin.js\
+          src/minplayer.display.js\
+          src/minplayer.js\
+          src/minplayer.image.js\
+          src/minplayer.file.js\
+          src/minplayer.playLoader.js\
+          src/minplayer.players.base.js\
+          src/minplayer.players.html5.js\
+          src/minplayer.players.flash.js\
+          src/minplayer.players.minplayer.js\
+          src/minplayer.players.youtube.js\
+          src/minplayer.players.vimeo.js\
+          src/minplayer.controller.js
+
+.DEFAULT_GOAL := all
+
+all: jslint js jsdoc
+
+# Perform a jsLint on all the files.
+jslint: ${files}
+	gjslint $^
+
+# Create an aggregated js file and a compressed js file.
+js: ${files}
+	@echo "Generating aggregated bin/minplayer.js file"
+	@cat > bin/minplayer.js $^
+	@echo "Generating compressed bin/minplayer.compressed file"
+	curl -s \
+	  -d compilation_level=SIMPLE_OPTIMIZATIONS \
+	  -d output_format=text \
+	  -d output_info=compiled_code \
+	  --data-urlencode "js_code@bin/minplayer.js" \
+	  http://closure-compiler.appspot.com/compile \
+	  > bin/minplayer.compressed.js
+
+# Create the documentation from source code.
+jsdoc: ${files}
+	@echo "Generating documetation."
+	@java -jar tools/jsdoc-toolkit/jsrun.jar tools/jsdoc-toolkit/app/run.js -a -t=tools/jsdoc-toolkit/templates/jsdoc -d=doc $^
+
+# Fix the js style on all the files.
+fixjsstyle: ${files}
+	fixjsstyle $^
+
+# Install the necessary tools.
+tools:
+	apt-get install python-setuptools
+	apt-get install unzip
+	easy_install http://closure-linter.googlecode.com/files/closure_linter-latest.tar.gz
+	wget http://jsdoc-toolkit.googlecode.com/files/jsdoc_toolkit-2.4.0.zip -P tools
+	unzip tools/jsdoc_toolkit-2.4.0.zip -d tools
+	mv tools/jsdoc_toolkit-2.4.0/jsdoc-toolkit tools/jsdoc-toolkit
+	rm -rd tools/jsdoc_toolkit-2.4.0
+	rm tools/jsdoc_toolkit-2.4.0.zip
diff --git a/public/admin/js/osmplayer/minplayer/params.json b/public/admin/js/osmplayer/minplayer/params.json
new file mode 100644
index 0000000000000000000000000000000000000000..b3c9b4e564998fddb785665ba1e2bd314fe938a5
--- /dev/null
+++ b/public/admin/js/osmplayer/minplayer/params.json
@@ -0,0 +1 @@
+{"name":"minPlayer","body":"minPlayer - Because less IS more.\r\n===================================\r\n\r\nThe goal of this project is to provide a slim, well documented, object oriented,\r\nplugin-based \"core\" media player in which other players and libraries can build\r\non top of.  It is written using object oriented JavaScript and is continuously\r\nintegrated using JSLint, JSDoc, and Google Closure.\r\n\r\n\r\n\r\nMultiple players - One single API.\r\n-----------------------------------\r\nIt also allows for hot-swappable 3rd party API players by providing a common\r\nAPI for all of these players so that they can be utilized in the same manner.\r\nThis means that once you develop for the minPlayer, one can easily bring in a\r\ndifferent player an your code will still function as it would for all the\r\nothers.  Out of the box, this player provides a common API for YouTube, Vimeo,\r\nHTML5, and Flash with more on the way.\r\n\r\nEverything is a plugin\r\n-----------------------------------\r\nSince this is a plugin-based media player, every displayable class must derive\r\nfrom the plugin class, thereby, making it a plugin.  This includes the media\r\nplayer itself.  This plugin system is highly flexible to be able to handle\r\njust about any type of plugin imaginable, and allows for every plugin to have\r\ndirect dependeny-injected control over any other plugin within the media player.\r\n\r\nComplete User Interface & Business Logic separation\r\n-----------------------------------\r\nOne common complaint for many media solutions out there is that they hijack the\r\nDOM and build out their own controls to provide consistency amongst different\r\nbrowsers.  They do this, however, within the core player which completely binds\r\nthe user interface to the business logic of the media player.  The minPlayer\r\ntakes a different approach by keeping ALL user interface functionality within\r\nthe \"templates\" directory, where each template essentially derives from the base\r\nBusiness logic classes only to provide the user interface aspects of that control.\r\nThis allows for easy templating of the media player besides just overriding the\r\nCSS like current media solutions do today.\r\n\r\nNo \"Features\"!\r\n-----------------------------------\r\nI am pleased to say that this media player does NOT have many features, and this\r\nis on purpose.  Since this is a \"core\" player, it does not have any features\r\nother than what is critical in presenting your media.  Any additional \"bling\"\r\nwill be added to this player from different repositories and from different\r\nplayers that extend this \"core\" functionality.  This methodology will keep this\r\n\"core\" media solution lean & highly functional.\r\n\r\nAPI\r\n-----------------------------------\r\nThe API for minPlayer is very simple.  It revolves around a single API that is\r\nable to retrieve any plugin even before that plugin is created.  By doing this,\r\nyou can have complete control over any plugin within the minPlayer.  This API\r\nis simply called\r\n\r\n```\r\nminplayer.get();\r\n```\r\n\r\nThis API can take up to three different argument with each argument providing\r\ndifferent usage.  The code docs for this function are as follows...\r\n\r\n```\r\n/**\r\n * The main API for minPlayer.\r\n *\r\n * Provided that this function takes three parameters, there are 8 different\r\n * ways to use this api.\r\n *\r\n *   id (0x100) - You want a specific player.\r\n *   plugin (0x010) - You want a specific plugin.\r\n *   callback (0x001) - You only want it when it is ready.\r\n *\r\n *   000 - You want all plugins from all players, ready or not.\r\n *\r\n *          var instances = minplayer.get();\r\n *\r\n *   001 - You want all plugins from all players, but only when ready.\r\n *\r\n *          minplayer.get(function(plugin) {\r\n *            // Code goes here.\r\n *          });\r\n *\r\n *   010 - You want a specific plugin from all players, ready or not...\r\n *\r\n *          var medias = minplayer.get(null, 'media');\r\n *\r\n *   011 - You want a specific plugin from all players, but only when ready.\r\n *\r\n *          minplayer.get('player', function(player) {\r\n *            // Code goes here.\r\n *          });\r\n *\r\n *   100 - You want all plugins from a specific player, ready or not.\r\n *\r\n *          var plugins = minplayer.get('player_id');\r\n *\r\n *   101 - You want all plugins from a specific player, but only when ready.\r\n *\r\n *          minplayer.get('player_id', null, function(plugin) {\r\n *            // Code goes here.\r\n *          });\r\n *\r\n *   110 - You want a specific plugin from a specific player, ready or not.\r\n *\r\n *          var plugin = minplayer.get('player_id', 'media');\r\n *\r\n *   111 - You want a specific plugin from a specific player, only when ready.\r\n *\r\n *          minplayer.get('player_id', 'media', function(media) {\r\n *            // Code goes here.\r\n *          });\r\n *\r\n * @this The context in which this function was called.\r\n * @param {string} id The ID of the widget to get the plugins from.\r\n * @param {string} plugin The name of the plugin.\r\n * @param {function} callback Called when the plugin is ready.\r\n * @return {object} The plugin object if it is immediately available.\r\n */\r\nminplayer.get = function(id, plugin, callback) {\r\n};\r\n```\r\n\r\nThanks and enjoy minPlayer.","tagline":"A minimalistic, plugin-based \"core\" media player for the web.","google":"","note":"Don't delete this file! It's used internally to help with page regeneration."}
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/minplayer/src/minplayer.async.js b/public/admin/js/osmplayer/minplayer/src/minplayer.async.js
new file mode 100644
index 0000000000000000000000000000000000000000..656aa11031b9b919faaf55b7035b378889596c44
--- /dev/null
+++ b/public/admin/js/osmplayer/minplayer/src/minplayer.async.js
@@ -0,0 +1,61 @@
+/** The minplayer namespace. */
+var minplayer = minplayer || {};
+
+/**
+ * @constructor
+ * @class This class keeps track of asynchronous get requests for certain
+ * variables within the player.
+ */
+minplayer.async = function() {
+
+  /** The final value of this asynchronous variable. */
+  this.value = null;
+
+  /** The queue of callbacks to call when this value is determined. */
+  this.queue = [];
+};
+
+/**
+ * Retrieve the value of this variable.
+ *
+ * @param {function} callback The function to call when the value is determined.
+ * @param {function} pollValue The poll function to try and get the value every
+ * 1 second if the value is not set.
+ */
+minplayer.async.prototype.get = function(callback, pollValue) {
+
+  // If the value is set, then immediately call the callback, otherwise, just
+  // add it to the queue when the variable is set.
+  if (this.value !== null) {
+    callback(this.value);
+  }
+  else {
+
+    // Add this callback to the queue.
+    this.queue.push(callback);
+  }
+};
+
+/**
+ * Sets the value of an asynchronous value.
+ *
+ * @param {void} val The value to set.
+ */
+minplayer.async.prototype.set = function(val) {
+
+  // Set the value.
+  this.value = val;
+
+  // Get the callback queue length.
+  var i = this.queue.length;
+
+  // Iterate through all the callbacks and call them.
+  if (i) {
+    while (i--) {
+      this.queue[i](val);
+    }
+
+    // Reset the queue.
+    this.queue = [];
+  }
+};
diff --git a/public/admin/js/osmplayer/minplayer/src/minplayer.compatibility.js b/public/admin/js/osmplayer/minplayer/src/minplayer.compatibility.js
new file mode 100644
index 0000000000000000000000000000000000000000..23085fac89a3e9ad9914b84c2497fa4d84fb6d25
--- /dev/null
+++ b/public/admin/js/osmplayer/minplayer/src/minplayer.compatibility.js
@@ -0,0 +1,116 @@
+/** The minplayer namespace. */
+var minplayer = minplayer || {};
+
+// Private function to check a single element's play type.
+function checkPlayType(elem, playType) {
+  if ((typeof elem.canPlayType) === 'function') {
+    if (typeof playType === 'object') {
+      var i = playType.length;
+      var mimetype = '';
+      while (i--) {
+        mimetype = checkPlayType(elem, playType[i]);
+        if (!!mimetype) {
+          break;
+        }
+      }
+      return mimetype;
+    }
+    else {
+      var canPlay = elem.canPlayType(playType);
+      if (('no' !== canPlay) && ('' !== canPlay)) {
+        return playType;
+      }
+    }
+  }
+  return '';
+}
+
+/**
+ * @constructor
+ * @class This class is used to define the types of media that can be played
+ * within the browser.
+ * <p>
+ * <strong>Usage:</strong>
+ * <pre><code>
+ *   var playTypes = new minplayer.compatibility();
+ *
+ *   if (playTypes.videoOGG) {
+ *     console.log("This browser can play OGG video");
+ *   }
+ *
+ *   if (playTypes.videoH264) {
+ *     console.log("This browser can play H264 video");
+ *   }
+ *
+ *   if (playTypes.videoWEBM) {
+ *     console.log("This browser can play WebM video");
+ *   }
+ *
+ *   if (playTypes.audioOGG) {
+ *     console.log("This browser can play OGG audio");
+ *   }
+ *
+ *   if (playTypes.audioMP3) {
+ *     console.log("This browser can play MP3 audio");
+ *   }
+ *
+ *   if (playTypes.audioMP4) {
+ *     console.log("This browser can play MP4 audio");
+ *   }
+ * </code></pre>
+ */
+minplayer.compatibility = function() {
+  var elem = null;
+
+  // Create a video element.
+  elem = document.createElement('video');
+
+  /** Can play OGG video */
+  this.videoOGG = checkPlayType(elem, 'video/ogg');
+
+  /** Can play H264 video */
+  this.videoH264 = checkPlayType(elem, [
+    'video/mp4',
+    'video/h264'
+  ]);
+
+  /** Can play WEBM video */
+  this.videoWEBM = checkPlayType(elem, [
+    'video/x-webm',
+    'video/webm',
+    'application/octet-stream'
+  ]);
+
+  // Create an audio element.
+  elem = document.createElement('audio');
+
+  /** Can play audio OGG */
+  this.audioOGG = checkPlayType(elem, 'audio/ogg');
+
+  /** Can play audio MP3 */
+  this.audioMP3 = checkPlayType(elem, 'audio/mpeg');
+
+  /** Can play audio MP4 */
+  this.audioMP4 = checkPlayType(elem, 'audio/mp4');
+};
+
+if (!minplayer.playTypes) {
+
+  /** The compatible playtypes for this browser. */
+  minplayer.playTypes = new minplayer.compatibility();
+
+  /** See if we are an android device. */
+  minplayer.isAndroid = (/android/gi).test(navigator.appVersion);
+
+  /** See if we are an iOS device. */
+  minplayer.isIDevice = (/iphone|ipad/gi).test(navigator.appVersion);
+
+  /** See if we are a playbook device. */
+  minplayer.isPlaybook = (/playbook/gi).test(navigator.appVersion);
+
+  /** See if we are a touchpad device. */
+  minplayer.isTouchPad = (/hp-tablet/gi).test(navigator.appVersion);
+
+  /** Determine if we have a touchscreen. */
+  minplayer.hasTouch = 'ontouchstart' in window && !minplayer.isTouchPad;
+}
diff --git a/public/admin/js/osmplayer/minplayer/src/minplayer.controller.js b/public/admin/js/osmplayer/minplayer/src/minplayer.controller.js
new file mode 100644
index 0000000000000000000000000000000000000000..360f2ce3722f540b62021ce275da8cf3f49e62c1
--- /dev/null
+++ b/public/admin/js/osmplayer/minplayer/src/minplayer.controller.js
@@ -0,0 +1,347 @@
+/** The minplayer namespace. */
+var minplayer = minplayer || {};
+
+/**
+ * @constructor
+ * @extends minplayer.display
+ * @class This is the base minplayer controller.  Other controllers can derive
+ * from the base and either build on top of it or simply define the elements
+ * that this base controller uses.
+ *
+ * @param {object} context The jQuery context.
+ * @param {object} options This components options.
+ */
+minplayer.controller = function(context, options) {
+
+  // Derive from display
+  minplayer.display.call(this, 'controller', context, options);
+};
+
+/** Derive from minplayer.display. */
+minplayer.controller.prototype = new minplayer.display();
+
+/** Reset the constructor. */
+minplayer.controller.prototype.constructor = minplayer.controller;
+
+/**
+ * A static function that will format a time value into a string time format.
+ *
+ * @param {integer} time An integer value of time.
+ * @return {string} A string representation of the time.
+ */
+minplayer.formatTime = function(time) {
+  time = time || 0;
+  var seconds = 0, minutes = 0, hour = 0, timeString = '';
+
+  hour = Math.floor(time / 3600);
+  time -= (hour * 3600);
+  minutes = Math.floor(time / 60);
+  time -= (minutes * 60);
+  seconds = Math.floor(time % 60);
+
+  if (hour) {
+    timeString += String(hour);
+    timeString += ':';
+  }
+
+  timeString += (minutes >= 10) ? String(minutes) : ('0' + String(minutes));
+  timeString += ':';
+  timeString += (seconds >= 10) ? String(seconds) : ('0' + String(seconds));
+  return {time: timeString, units: ''};
+};
+
+/**
+ * @see minplayer.display#getElements
+ * @return {object} The elements defined by this display.
+ */
+minplayer.controller.prototype.getElements = function() {
+  var elements = minplayer.display.prototype.getElements.call(this);
+  return jQuery.extend(elements, {
+    play: null,
+    pause: null,
+    fullscreen: null,
+    seek: null,
+    progress: null,
+    volume: null,
+    timer: null
+  });
+};
+
+/**
+ * @see minplayer.plugin#construct
+ */
+minplayer.controller.prototype.construct = function() {
+
+  // Call the minplayer plugin constructor.
+  minplayer.display.prototype.construct.call(this);
+
+  // Set the plugin name within the options.
+  this.options.pluginName = 'controller';
+
+  // Keep track of if we are dragging...
+  this.dragging = false;
+
+  // Keep track of the current volume.
+  this.vol = 0;
+
+  // If they have a seek bar.
+  if (this.elements.seek) {
+
+    // Create the seek bar slider control.
+    this.seekBar = this.elements.seek.slider({
+      range: 'min',
+      create: function(event, ui) {
+        jQuery('.ui-slider-range', event.target).addClass('ui-state-active');
+      }
+    });
+  }
+
+  // If they have a volume bar.
+  if (this.elements.volume) {
+
+    // Create the volume bar slider control.
+    this.volumeBar = this.elements.volume.slider({
+      range: 'min',
+      orientation: 'vertical'
+    });
+  }
+
+  // Get the player plugin.
+  this.get('player', function(player) {
+
+    // If they have a fullscreen button.
+    if (this.elements.fullscreen) {
+
+      // Bind to the click event.
+      minplayer.click(this.elements.fullscreen.unbind(), function() {
+        player.toggleFullScreen();
+      }).css({'pointer' : 'hand'});
+    }
+  });
+
+  // Get the media plugin.
+  this.get('media', function(media) {
+
+    // Only bind if this player does not have its own play loader.
+    if (!media.hasController()) {
+
+      // If they have a pause button
+      if (this.elements.pause) {
+
+        // Bind to the click on this button.
+        minplayer.click(this.elements.pause.unbind(), (function(controller) {
+          return function(event) {
+            event.preventDefault();
+            controller.playPause(false, media);
+          };
+        })(this));
+
+        // Bind to the pause event of the media.
+        media.bind('pause', (function(controller) {
+          return function(event) {
+            controller.setPlayPause(true);
+          };
+        })(this));
+      }
+
+      // If they have a play button
+      if (this.elements.play) {
+
+        // Bind to the click on this button.
+        minplayer.click(this.elements.play.unbind(), (function(controller) {
+          return function(event) {
+            event.preventDefault();
+            controller.playPause(true, media);
+          };
+        })(this));
+
+        // Bind to the play event of the media.
+        media.bind('playing', (function(controller) {
+          return function(event) {
+            controller.setPlayPause(false);
+          };
+        })(this));
+      }
+
+      // If they have a duration, then trigger on duration change.
+      if (this.elements.duration) {
+
+        // Bind to the duration change event.
+        media.bind('durationchange', (function(controller) {
+          return function(event, data) {
+            controller.setTimeString('duration', data.duration);
+          };
+        })(this));
+
+        // Set the timestring to the duration.
+        media.getDuration((function(controller) {
+          return function(duration) {
+            controller.setTimeString('duration', duration);
+          };
+        })(this));
+      }
+
+      // If they have a progress element.
+      if (this.elements.progress) {
+
+        // Bind to the progress event.
+        media.bind('progress', (function(controller) {
+          return function(event, data) {
+            var percent = data.total ? (data.loaded / data.total) * 100 : 0;
+            controller.elements.progress.width(percent + '%');
+          };
+        })(this));
+      }
+
+      // If they have a seek bar or timer, bind to the timeupdate.
+      if (this.seekBar || this.elements.timer) {
+
+        // Bind to the time update event.
+        media.bind('timeupdate', (function(controller) {
+          return function(event, data) {
+            if (!controller.dragging) {
+              var value = 0;
+              if (data.duration) {
+                value = (data.currentTime / data.duration) * 100;
+              }
+
+              // Update the seek bar if it exists.
+              if (controller.seekBar) {
+                controller.seekBar.slider('option', 'value', value);
+              }
+
+              controller.setTimeString('timer', data.currentTime);
+            }
+          };
+        })(this));
+      }
+
+      // If they have a seekBar element.
+      if (this.seekBar) {
+
+        // Register the events for the control bar to control the media.
+        this.seekBar.slider({
+          start: (function(controller) {
+            return function(event, ui) {
+              controller.dragging = true;
+            };
+          })(this),
+          stop: (function(controller) {
+            return function(event, ui) {
+              controller.dragging = false;
+              media.getDuration(function(duration) {
+                media.seek((ui.value / 100) * duration);
+              });
+            };
+          })(this),
+          slide: (function(controller) {
+            return function(event, ui) {
+              media.getDuration(function(duration) {
+                var time = (ui.value / 100) * duration;
+                if (!controller.dragging) {
+                  media.seek(time);
+                }
+                controller.setTimeString('timer', time);
+              });
+            };
+          })(this)
+        });
+      }
+
+      // Setup the mute button.
+      if (this.elements.mute) {
+        minplayer.click(this.elements.mute, (function(controller) {
+          return function(event) {
+            event.preventDefault();
+            var value = controller.volumeBar.slider('option', 'value');
+            if (value > 0) {
+              controller.vol = value;
+              controller.volumeBar.slider('option', 'value', 0);
+              media.setVolume(0);
+            }
+            else {
+              controller.volumeBar.slider('option', 'value', controller.vol);
+              media.setVolume(controller.vol / 100);
+            }
+          };
+        })(this));
+      }
+
+      // Setup the volume bar.
+      if (this.volumeBar) {
+
+        // Create the slider.
+        this.volumeBar.slider({
+          slide: function(event, ui) {
+            media.setVolume(ui.value / 100);
+          }
+        });
+
+        media.bind('volumeupdate', (function(controller) {
+          return function(event, vol) {
+            controller.volumeBar.slider('option', 'value', (vol * 100));
+          };
+        })(this));
+
+        // Set the volume to match that of the player.
+        media.getVolume((function(controller) {
+          return function(vol) {
+            controller.volumeBar.slider('option', 'value', (vol * 100));
+          };
+        })(this));
+      }
+    }
+    else {
+
+      // Hide this controller.
+      this.hide();
+    }
+  });
+
+  // We are now ready.
+  this.ready();
+};
+
+/**
+ * Sets the play and pause state of the control bar.
+ *
+ * @param {boolean} state TRUE - Show Play, FALSE - Show Pause.
+ */
+minplayer.controller.prototype.setPlayPause = function(state) {
+  var css = '';
+  if (this.elements.play) {
+    css = state ? 'inherit' : 'none';
+    this.elements.play.css('display', css);
+  }
+  if (this.elements.pause) {
+    css = state ? 'none' : 'inherit';
+    this.elements.pause.css('display', css);
+  }
+};
+
+/**
+ * Plays or pauses the media.
+ *
+ * @param {bool} state true => play, false => pause.
+ * @param {object} media The media player object.
+ */
+minplayer.controller.prototype.playPause = function(state, media) {
+  var type = state ? 'play' : 'pause';
+  this.display.trigger(type);
+  this.setPlayPause(!state);
+  if (media) {
+    media[type]();
+  }
+};
+
+/**
+ * Sets the time string on the control bar.
+ *
+ * @param {string} element The name of the element to set.
+ * @param {number} time The total time amount to set.
+ */
+minplayer.controller.prototype.setTimeString = function(element, time) {
+  if (this.elements[element]) {
+    this.elements[element].text(minplayer.formatTime(time).time);
+  }
+};
diff --git a/public/admin/js/osmplayer/minplayer/src/minplayer.display.js b/public/admin/js/osmplayer/minplayer/src/minplayer.display.js
new file mode 100644
index 0000000000000000000000000000000000000000..84b7986f33516a9e262cd99bab947b5d4819b990
--- /dev/null
+++ b/public/admin/js/osmplayer/minplayer/src/minplayer.display.js
@@ -0,0 +1,392 @@
+/** The minplayer namespace. */
+minplayer = minplayer || {};
+
+/**
+ * @constructor
+ * @extends minplayer.plugin
+ * @class Base class used to provide the display and options for any component
+ * deriving from this class.  Components who derive are expected to provide
+ * the elements that they define by implementing the getElements method.
+ *
+ * @param {string} name The name of this plugin.
+ * @param {object} context The jQuery context this component resides.
+ * @param {object} options The options for this component.
+ * @param {object} queue The event queue to pass events around.
+ */
+minplayer.display = function(name, context, options, queue) {
+
+  // Derive from plugin
+  minplayer.plugin.call(this, name, context, options, queue);
+};
+
+/** Derive from minplayer.plugin. */
+minplayer.display.prototype = new minplayer.plugin();
+
+/** Reset the constructor. */
+minplayer.display.prototype.constructor = minplayer.display;
+
+/**
+ * Returns the display for this component.
+ *
+ * @return {object} The jQuery context for this display.
+ */
+minplayer.display.prototype.getDisplay = function() {
+  return this.context;
+};
+
+/**
+ * @see minplayer.plugin.construct
+ */
+minplayer.display.prototype.construct = function() {
+
+  // Set the display.
+  this.display = this.getDisplay(this.context, this.options);
+
+  // Call the plugin constructor.
+  minplayer.plugin.prototype.construct.call(this);
+
+  // Set the plugin name within the options.
+  this.options.pluginName = 'display';
+
+  // Get the display elements.
+  this.elements = this.getElements();
+
+  // Only do this if they allow resize for this display.
+  if (this.onResize) {
+
+    // Set the resize timeout and this pointer.
+    var resizeTimeout = 0;
+
+    // Add a handler to trigger a resize event.
+    jQuery(window).resize((function(display) {
+      return function() {
+        clearTimeout(resizeTimeout);
+        resizeTimeout = setTimeout(function() {
+          display.onResize();
+        }, 200);
+      };
+    })(this));
+  }
+};
+
+/**
+ * Called when the window resizes.
+ */
+minplayer.display.prototype.onResize = false;
+
+/**
+ * Wrapper around hide that will always not show.
+ *
+ * @param {object} element The element you wish to hide.
+ */
+minplayer.display.prototype.hide = function(element) {
+  element = element || this.display;
+  if (element) {
+    element.forceHide = true;
+    element.unbind().hide();
+  }
+};
+
+/**
+ * Gets the full screen element.
+ *
+ * @return {object} The display to be used for full screen support.
+ */
+minplayer.display.prototype.fullScreenElement = function() {
+  return this.display;
+};
+
+/**
+ * Fix for the click function in jQuery to be cross platform.
+ *
+ * @param {object} element The element that will be clicked.
+ * @param {function} fn Called when the element is clicked.
+ * @return {object} The element that is to be clicked.
+ */
+minplayer.click = function(element, fn) {
+  var flag = false;
+  element = jQuery(element);
+  element.bind('touchstart click', function(event) {
+    if (!flag) {
+      flag = true;
+      setTimeout(function() {
+        flag = false;
+      }, 100);
+      fn.call(this, event);
+    }
+  });
+  return element;
+};
+
+/**
+ * Determines if the player is in focus or not.
+ *
+ * @param {boolean} focus If the player is in focus.
+ */
+minplayer.display.prototype.onFocus = function(focus) {
+  this.hasFocus = this.focus = focus;
+};
+
+/** Keep track of all the show hide elements. */
+minplayer.showHideElements = [];
+
+/**
+ * Show all the show hide elements.
+ */
+minplayer.showAll = function() {
+  var i = minplayer.showHideElements.length;
+  var obj = null;
+  while (i--) {
+    obj = minplayer.showHideElements[i];
+    minplayer.showThenHide(obj.element, obj.timeout, obj.callback);
+  }
+};
+
+/**
+ * Stops the whole show then hide from happening.
+ *
+ * @param {object} element The element you want the showThenHide to stop.
+ */
+minplayer.stopShowThenHide = function(element) {
+  element = jQuery(element);
+  if (element.showTimer) {
+    clearTimeout(element.showTimer);
+  }
+  element.stopShowThenHide = true;
+  element.shown = true;
+  element.show();
+};
+
+/**
+ * Called if you would like for your display item to show then hide.
+ *
+ * @param {object} element The element you would like to hide or show.
+ * @param {number} timeout The timeout to hide and show.
+ * @param {function} callback Called when something happens.
+ */
+minplayer.showThenHide = function(element, timeout, callback) {
+
+  // If no element exists, then just return.
+  if (!element) {
+    return;
+  }
+
+  // Ensure we have a timeout.
+  timeout = timeout || 5000;
+
+  // If this has not yet been configured.
+  if (!element.showTimer) {
+    element.shown = true;
+    element.stopShowThenHide = false;
+
+    // Add this to our showHideElements.
+    minplayer.showHideElements.push({
+      element: element,
+      timeout: timeout,
+      callback: callback
+    });
+
+    // Bind to a click event.
+    minplayer.click(document, function() {
+      if (!element.stopShowThenHide) {
+        minplayer.showThenHide(element, timeout, callback);
+      }
+    });
+
+    // Bind to the mousemove event.
+    jQuery(document).bind('mousemove', function() {
+      if (!element.stopShowThenHide) {
+        minplayer.showThenHide(element, timeout, callback);
+      }
+    });
+  }
+
+  // Clear the timeout, and then setup the show then hide functionality.
+  clearTimeout(element.showTimer);
+
+  // Show the display.
+  if (!element.shown && !element.forceHide) {
+    element.shown = true;
+    element.show();
+    if (callback) {
+      callback(true);
+    }
+  }
+
+  // Set a timer to hide it after the timeout.
+  element.showTimer = setTimeout(function() {
+    element.hide('slow', function() {
+      element.shown = false;
+      if (callback) {
+        callback(false);
+      }
+    });
+  }, timeout);
+};
+
+/**
+ * Make this display element go fullscreen.
+ *
+ * @param {boolean} full Tell the player to go into fullscreen or not.
+ */
+minplayer.display.prototype.fullscreen = function(full) {
+  var isFull = this.isFullScreen();
+  var element = this.fullScreenElement();
+  if (isFull && !full) {
+    element.removeClass('fullscreen');
+    if (screenfull) {
+      screenfull.exit();
+    }
+    this.trigger('fullscreen', false);
+  }
+  else if (!isFull && full) {
+    element.addClass('fullscreen');
+    if (screenfull) {
+      screenfull.request(element[0]);
+      screenfull.onchange = (function(display) {
+        return function(e) {
+          if (!screenfull.isFullscreen) {
+            display.fullscreen(false);
+          }
+        };
+      })(this);
+    }
+    this.trigger('fullscreen', true);
+  }
+};
+
+/**
+ * Toggle fullscreen.
+ */
+minplayer.display.prototype.toggleFullScreen = function() {
+  this.fullscreen(!this.isFullScreen());
+};
+
+/**
+ * Checks to see if we are in fullscreen mode.
+ *
+ * @return {boolean} TRUE - fullscreen, FALSE - otherwise.
+ */
+minplayer.display.prototype.isFullScreen = function() {
+  return this.fullScreenElement().hasClass('fullscreen');
+};
+
+/**
+ * Returns a scaled rectangle provided a ratio and the container rect.
+ *
+ * @param {number} ratio The width/height ratio of what is being scaled.
+ * @param {object} rect The bounding rectangle for scaling.
+ * @return {object} The Rectangle object of the scaled rectangle.
+ */
+minplayer.display.prototype.getScaledRect = function(ratio, rect) {
+  var scaledRect = {};
+  scaledRect.x = rect.x ? rect.x : 0;
+  scaledRect.y = rect.y ? rect.y : 0;
+  scaledRect.width = rect.width ? rect.width : 0;
+  scaledRect.height = rect.height ? rect.height : 0;
+  if (ratio) {
+    if ((rect.width / rect.height) > ratio) {
+      scaledRect.height = rect.height;
+      scaledRect.width = Math.floor(rect.height * ratio);
+    }
+    else {
+      scaledRect.height = Math.floor(rect.width / ratio);
+      scaledRect.width = rect.width;
+    }
+    scaledRect.x = Math.floor((rect.width - scaledRect.width) / 2);
+    scaledRect.y = Math.floor((rect.height - scaledRect.height) / 2);
+  }
+  return scaledRect;
+};
+
+/**
+ * Returns all the jQuery elements that this component uses.
+ *
+ * @return {object} An object which defines all the jQuery elements that
+ * this component uses.
+ */
+minplayer.display.prototype.getElements = function() {
+  return {};
+};
+
+/**
+ * From https://github.com/sindresorhus/screenfull.js
+ */
+/*global Element:true*/
+(function(window, document) {
+  'use strict';
+  var methods = (function() {
+    var methodMap = [
+      [
+        'requestFullscreen',
+        'exitFullscreen',
+        'fullscreenchange',
+        'fullscreen',
+        'fullscreenElement'
+      ],
+      [
+        'webkitRequestFullScreen',
+        'webkitCancelFullScreen',
+        'webkitfullscreenchange',
+        'webkitIsFullScreen',
+        'webkitCurrentFullScreenElement'
+      ],
+      [
+        'mozRequestFullScreen',
+        'mozCancelFullScreen',
+        'mozfullscreenchange',
+        'mozFullScreen',
+        'mozFullScreenElement'
+      ]
+    ];
+    for (var i = 0, l = methodMap.length; i < l; i++) {
+      if (methodMap.hasOwnProperty(i)) {
+        var val = methodMap[i];
+        if (val[1] in document) {
+          return val;
+        }
+      }
+    }
+  })();
+
+  if (!methods) {
+    return window.screenfull = false;
+  }
+
+  var keyboardAllowed = 'ALLOW_KEYBOARD_INPUT' in Element;
+
+  var screenfull = {
+    init: function() {
+      document.addEventListener(methods[2], function(e) {
+        screenfull.isFullscreen = document[methods[3]];
+        screenfull.element = document[methods[4]];
+        screenfull.onchange(e);
+      });
+      return this;
+    },
+    isFullscreen: document[methods[3]],
+    element: document[methods[4]],
+    request: function(elem) {
+      elem = elem || document.documentElement;
+      elem[methods[0]](keyboardAllowed && Element.ALLOW_KEYBOARD_INPUT);
+      // Work around Safari 5.1 bug: reports support for keyboard in fullscreen
+      // even though it doesn't.
+      if (!document.isFullscreen) {
+        elem[methods[0]]();
+      }
+    },
+    exit: function() {
+      document[methods[1]]();
+    },
+    toggle: function(elem) {
+      if (this.isFullscreen) {
+        this.exit();
+      } else {
+        this.request(elem);
+      }
+    },
+    onchange: function() {}
+  };
+
+  window.screenfull = screenfull.init();
+})(window, document);
diff --git a/public/admin/js/osmplayer/minplayer/src/minplayer.file.js b/public/admin/js/osmplayer/minplayer/src/minplayer.file.js
new file mode 100644
index 0000000000000000000000000000000000000000..8e7f8797a4c9ec9a53b3fcd38633d0805493e67e
--- /dev/null
+++ b/public/admin/js/osmplayer/minplayer/src/minplayer.file.js
@@ -0,0 +1,178 @@
+/** The minplayer namespace. */
+var minplayer = minplayer || {};
+
+/**
+ * @constructor
+ * @class A wrapper class used to provide all the data necessary to control an
+ * individual file within this media player.
+ *
+ * @param {object} file A media file object with minimal required information.
+ */
+minplayer.file = function(file) {
+
+  // If there isn't a file provided, then just return null.
+  if (!file) {
+    return null;
+  }
+
+  file = (typeof file === 'string') ? {path: file} : file;
+
+  // If we already are a minplayer file, then just return this file.
+  if (file.hasOwnProperty('isMinPlayerFile')) {
+    return file;
+  }
+
+  this.isMinPlayerFile = true;
+  this.duration = file.duration || 0;
+  this.bytesTotal = file.bytesTotal || 0;
+  this.quality = file.quality || 0;
+  this.stream = file.stream || '';
+  this.path = file.path || '';
+  this.codecs = file.codecs || '';
+
+  // These should be provided, but just in case...
+  this.extension = file.extension || this.getFileExtension();
+  this.mimetype = file.mimetype || file.filemime || this.getMimeType();
+  this.type = file.type || this.getType();
+
+  // Fail safe to try and guess the mimetype and media type.
+  if (!this.type) {
+    this.mimetype = this.getMimeType();
+    this.type = this.getType();
+  }
+
+  // Get the player.
+  this.player = minplayer.player || file.player || this.getBestPlayer();
+  this.priority = file.priority || this.getPriority();
+  this.id = file.id || this.getId();
+  if (!this.path) {
+    this.path = this.id;
+  }
+};
+
+/** Used to force the player for all media. */
+minplayer.player = '';
+
+/**
+ * Returns the best player for the job.
+ *
+ * @return {string} The best player to play the media file.
+ */
+minplayer.file.prototype.getBestPlayer = function() {
+  var bestplayer = null, bestpriority = 0;
+  jQuery.each(minplayer.players, (function(file) {
+    return function(name, player) {
+      var priority = player.getPriority();
+      if (player.canPlay(file) && (priority > bestpriority)) {
+        bestplayer = name;
+        bestpriority = priority;
+      }
+    };
+  })(this));
+  return bestplayer;
+};
+
+/**
+ * The priority of this file is determined by the priority of the best
+ * player multiplied by the priority of the mimetype.
+ *
+ * @return {integer} The priority of the media file.
+ */
+minplayer.file.prototype.getPriority = function() {
+  var priority = 1;
+  if (this.player) {
+    priority = minplayer.players[this.player].getPriority();
+  }
+  switch (this.mimetype) {
+    case 'video/x-webm':
+    case 'video/webm':
+    case 'application/octet-stream':
+      return priority * 10;
+    case 'video/mp4':
+    case 'audio/mp4':
+    case 'audio/mpeg':
+      return priority * 9;
+    case 'video/ogg':
+    case 'audio/ogg':
+    case 'video/quicktime':
+      return priority * 8;
+    default:
+      return priority * 5;
+  }
+};
+
+/**
+ * Returns the file extension of the file path.
+ *
+ * @return {string} The file extension.
+ */
+minplayer.file.prototype.getFileExtension = function() {
+  return this.path.substring(this.path.lastIndexOf('.') + 1).toLowerCase();
+};
+
+/**
+ * Returns the proper mimetype based off of the extension.
+ *
+ * @return {string} The mimetype of the file based off of extension.
+ */
+minplayer.file.prototype.getMimeType = function() {
+  switch (this.extension) {
+    case 'mp4': case 'm4v': case 'flv': case 'f4v':
+      return 'video/mp4';
+    case'webm':
+      return 'video/webm';
+    case 'ogg': case 'ogv':
+      return 'video/ogg';
+    case '3g2':
+      return 'video/3gpp2';
+    case '3gpp':
+    case '3gp':
+      return 'video/3gpp';
+    case 'mov':
+      return 'video/quicktime';
+    case'swf':
+      return 'application/x-shockwave-flash';
+    case 'oga':
+      return 'audio/ogg';
+    case 'mp3':
+      return 'audio/mpeg';
+    case 'm4a': case 'f4a':
+      return 'audio/mp4';
+    case 'aac':
+      return 'audio/aac';
+    case 'wav':
+      return 'audio/vnd.wave';
+    case 'wma':
+      return 'audio/x-ms-wma';
+    default:
+      return 'unknown';
+  }
+};
+
+/**
+ * The type of media this is: video or audio.
+ *
+ * @return {string} "video" or "audio" based on what the type of media this
+ * is.
+ */
+minplayer.file.prototype.getType = function() {
+  var type = this.mimetype.match(/([^\/]+)(\/)/);
+  type = (type && (type.length > 1)) ? type[1] : '';
+  if (type == 'video' || this.mimetype == 'application/octet-stream') {
+    return 'video';
+  }
+  if (type == 'audio') {
+    return 'audio';
+  }
+  return '';
+};
+
+/**
+ * Returns the ID for this media file.
+ *
+ * @return {string} The id for this media file which is provided by the player.
+ */
+minplayer.file.prototype.getId = function() {
+  var player = minplayer.players[this.player];
+  return (player && player.getMediaId) ? player.getMediaId(this) : '';
+};
diff --git a/public/admin/js/osmplayer/minplayer/src/minplayer.flags.js b/public/admin/js/osmplayer/minplayer/src/minplayer.flags.js
new file mode 100644
index 0000000000000000000000000000000000000000..4d97c3765a5f7dd592d917cc0543b6e484137cb4
--- /dev/null
+++ b/public/admin/js/osmplayer/minplayer/src/minplayer.flags.js
@@ -0,0 +1,71 @@
+/** The minplayer namespace. */
+var minplayer = minplayer || {};
+
+/**
+ * @constructor
+ * @class This is a class used to keep track of flag states
+ * which is used to control the busy cursor, big play button, among other
+ * items in which multiple components can have an interest in hiding or
+ * showing a single element on the screen.
+ *
+ * <p>
+ * <strong>Usage:</strong>
+ * <pre><code>
+ *   // Declare a flags variable.
+ *   var flags = new minplayer.flags();
+ *
+ *   // Set the flag based on two components interested in the flag.
+ *   flags.setFlag("component1", true);
+ *   flags.setFlag("component2", true);
+ *
+ *   // Print out the value of the flags. ( Prints 3 )
+ *   console.log(flags.flags);
+ *
+ *   // Now unset a single components flag.
+ *   flags.setFlag("component1", false);
+ *
+ *   // Print out the value of the flags.
+ *   console.log(flags.flags);
+ *
+ *   // Unset the other components flag.
+ *   flags.setFlag("component2", false);
+ *
+ *   // Print out the value of the flags.
+ *   console.log(flags.flags);
+ * </code></pre>
+ * </p>
+ */
+minplayer.flags = function() {
+
+  /** The flag. */
+  this.flag = 0;
+
+  /** Id map to reference id with the flag index. */
+  this.ids = {};
+
+  /** The number of flags. */
+  this.numFlags = 0;
+};
+
+/**
+ * Sets a flag based on boolean logic operators.
+ *
+ * @param {string} id The id of the controller interested in this flag.
+ * @param {boolean} value The value of this flag ( true or false ).
+ */
+minplayer.flags.prototype.setFlag = function(id, value) {
+
+  // Define this id if it isn't present.
+  if (!this.ids.hasOwnProperty(id)) {
+    this.ids[id] = this.numFlags;
+    this.numFlags++;
+  }
+
+  // Use binary operations to keep track of the flag state
+  if (value) {
+    this.flag |= (1 << this.ids[id]);
+  }
+  else {
+    this.flag &= ~(1 << this.ids[id]);
+  }
+};
diff --git a/public/admin/js/osmplayer/minplayer/src/minplayer.image.js b/public/admin/js/osmplayer/minplayer/src/minplayer.image.js
new file mode 100644
index 0000000000000000000000000000000000000000..9ace48fed7d80f0c262e7f36a7c42e12e5448b47
--- /dev/null
+++ b/public/admin/js/osmplayer/minplayer/src/minplayer.image.js
@@ -0,0 +1,145 @@
+/** The minplayer namespace. */
+var minplayer = minplayer || {};
+
+/**
+ * @constructor
+ * @class A class to easily handle images.
+ * @param {object} context The jQuery context.
+ * @param {object} options This components options.
+ */
+minplayer.image = function(context, options) {
+
+  // Determine if the image is loaded.
+  this.loaded = false;
+
+  // The image loader.
+  this.loader = null;
+
+  // The ratio of the image.
+  this.ratio = 0;
+
+  // The image element.
+  this.img = null;
+
+  // Derive from display
+  minplayer.display.call(this, 'image', context, options);
+};
+
+/** Derive from minplayer.display. */
+minplayer.image.prototype = new minplayer.display();
+
+/** Reset the constructor. */
+minplayer.image.prototype.constructor = minplayer.image;
+
+/**
+ * @see minplayer.plugin.construct
+ */
+minplayer.image.prototype.construct = function() {
+
+  // Call the media display constructor.
+  minplayer.display.prototype.construct.call(this);
+
+  // Set the plugin name within the options.
+  this.options.pluginName = 'image';
+
+  // Set the container to not show any overflow...
+  this.display.css('overflow', 'hidden');
+
+  /** The loader for the image. */
+  this.loader = new Image();
+
+  /** Register for when the image is loaded within the loader. */
+  this.loader.onload = (function(image) {
+    return function() {
+      image.loaded = true;
+      image.ratio = (image.loader.width / image.loader.height);
+      image.resize();
+      image.trigger('loaded');
+    };
+  })(this);
+
+  // We are now ready.
+  this.ready();
+};
+
+/**
+ * Loads an image.
+ *
+ * @param {string} src The source of the image to load.
+ */
+minplayer.image.prototype.load = function(src) {
+
+  // First clear the previous image.
+  this.clear(function() {
+
+    // Create the new image, and append to the display.
+    this.display.empty();
+    this.img = jQuery(document.createElement('img')).attr({src: ''}).hide();
+    this.display.append(this.img);
+    this.loader.src = src;
+    this.img.attr('src', src);
+  });
+};
+
+/**
+ * Clears an image.
+ *
+ * @param {function} callback Called when the image is done clearing.
+ */
+minplayer.image.prototype.clear = function(callback) {
+  this.loaded = false;
+  if (this.img) {
+    this.img.fadeOut((function(image) {
+      return function() {
+        image.img.attr('src', '');
+        image.loader.src = '';
+        jQuery(this).remove();
+        callback.call(image);
+      };
+    })(this));
+  }
+  else {
+    callback.call(this);
+  }
+};
+
+/**
+ * Resize the image provided a width and height or nothing.
+ *
+ * @param {integer} width (optional) The width of the container.
+ * @param {integer} height (optional) The height of the container.
+ */
+minplayer.image.prototype.resize = function(width, height) {
+  width = width || this.display.parent().width();
+  height = height || this.display.parent().height();
+  if (width && height && this.loaded) {
+
+    // Get the scaled rectangle.
+    var rect = this.getScaledRect(this.ratio, {
+      width: width,
+      height: height
+    });
+
+    // Now set this image to the new size.
+    if (this.img) {
+      this.img.attr('src', this.loader.src).css({
+        marginLeft: rect.x,
+        marginTop: rect.y,
+        width: rect.width,
+        height: rect.height
+      });
+    }
+
+    // Show the container.
+    this.img.fadeIn();
+  }
+};
+
+/**
+ * @see minplayer.display#onResize
+ */
+minplayer.image.prototype.onResize = function() {
+
+  // Resize the image to fit.
+  this.resize();
+};
diff --git a/public/admin/js/osmplayer/minplayer/src/minplayer.js b/public/admin/js/osmplayer/minplayer/src/minplayer.js
new file mode 100644
index 0000000000000000000000000000000000000000..02b6c7c887465d43a81e59c903e07a2a27b158fb
--- /dev/null
+++ b/public/admin/js/osmplayer/minplayer/src/minplayer.js
@@ -0,0 +1,417 @@
+// Add a way to instanciate using jQuery prototype.
+if (!jQuery.fn.minplayer) {
+
+  /**
+   * @constructor
+   *
+   * Define a jQuery minplayer prototype.
+   *
+   * @param {object} options The options for this jQuery prototype.
+   * @return {Array} jQuery object.
+   */
+  jQuery.fn.minplayer = function(options) {
+    return jQuery(this).each(function() {
+      options = options || {};
+      options.id = options.id || jQuery(this).attr('id') || Math.random();
+      if (!minplayer.plugins[options.id]) {
+        options.template = options.template || 'default';
+        if (minplayer[options.template]) {
+          new minplayer[options.template](jQuery(this), options);
+        }
+        else {
+          new minplayer(jQuery(this), options);
+        }
+      }
+    });
+  };
+}
+
+/**
+ * @constructor
+ * @extends minplayer.display
+ * @class The core media player class which governs the media player
+ * functionality.
+ *
+ * <p><strong>Usage:</strong>
+ * <pre><code>
+ *
+ *   // Create a media player.
+ *   var player = jQuery("#player").minplayer({
+ *
+ *   });
+ *
+ * </code></pre>
+ * </p>
+ *
+ * @param {object} context The jQuery context.
+ * @param {object} options This components options.
+ */
+minplayer = jQuery.extend(function(context, options) {
+
+  // Derive from display
+  minplayer.display.call(this, 'player', context, options);
+}, minplayer);
+
+/** Derive from minplayer.display. */
+minplayer.prototype = new minplayer.display();
+
+/** Reset the constructor. */
+minplayer.prototype.constructor = minplayer;
+
+/**
+ * @see minplayer.plugin.construct
+ */
+minplayer.prototype.construct = function() {
+
+  // Allow them to provide arguments based off of the DOM attributes.
+  jQuery.each(this.context[0].attributes, (function(player) {
+    return function(index, attr) {
+      player.options[attr.name] = player.options[attr.name] || attr.value;
+    };
+  })(this));
+
+  // Make sure we provide default options...
+  this.options = jQuery.extend({
+    id: 'player',
+    build: false,
+    wmode: 'transparent',
+    preload: true,
+    autoplay: false,
+    autoload: true,
+    loop: false,
+    width: '100%',
+    height: '350px',
+    debug: false,
+    volume: 80,
+    files: null,
+    file: '',
+    preview: '',
+    attributes: {},
+    logo: '',
+    link: '',
+    width: '100%',
+    height: '100%'
+  }, this.options);
+
+  // Call the minplayer display constructor.
+  minplayer.display.prototype.construct.call(this);
+
+  // Set the plugin name within the options.
+  this.options.pluginName = 'player';
+
+  /** The controller for this player. */
+  this.controller = this.create('controller');
+
+  /** The play loader for this player. */
+  this.playLoader = this.create('playLoader');
+
+  // Set the focus of the element based on if they click in or outside of it.
+  minplayer.click(document, (function(player) {
+    return function(event) {
+      var target = jQuery(event.target);
+      var focus = !(target.closest('#' + player.options.id).length == 0);
+      minplayer.get.call(this, player.options.id, null, function(plugin) {
+        plugin.onFocus(focus);
+      });
+    };
+  })(this));
+
+  /** Add the logo for the player. */
+  if (this.options.logo && this.elements.logo) {
+
+    var code = '';
+    if (this.options.link) {
+      code += '<a target="_blank" href="' + this.options.link + '">';
+    }
+    code += '<img src="' + this.options.logo + '" >';
+    if (this.options.link) {
+      code += '</a>';
+    }
+    this.logo = this.elements.logo.append(code);
+  }
+
+  /** Variable to store the current media player. */
+  this.currentPlayer = 'html5';
+
+  // Add key events to the window.
+  this.addKeyEvents();
+
+  // Called to add events.
+  this.addEvents();
+
+  // Now load these files.
+  this.load(this.getFiles());
+
+  // The player is ready.
+  this.ready();
+};
+
+/**
+ * Called when an error occurs.
+ *
+ * @param {object} plugin The plugin you wish to bind to.
+ */
+minplayer.prototype.bindTo = function(plugin) {
+  plugin.bind('error', (function(player) {
+    return function(event, data) {
+      if (player.currentPlayer == 'html5') {
+        minplayer.player = 'minplayer';
+        player.options.file.player = 'minplayer';
+        player.loadPlayer();
+      }
+      else {
+        player.showError(data);
+      }
+    };
+  })(this));
+
+  // Bind to the fullscreen event.
+  plugin.bind('fullscreen', (function(player) {
+    return function(event, data) {
+      player.resize();
+    };
+  })(this));
+};
+
+/**
+ * We need to bind to events we are interested in.
+ */
+minplayer.prototype.addEvents = function() {
+  minplayer.get.call(this, this.options.id, null, (function(player) {
+    return function(plugin) {
+      player.bindTo(plugin);
+    };
+  })(this));
+};
+
+/**
+ * Sets an error on the player.
+ *
+ * @param {string} error The error to display on the player.
+ */
+minplayer.prototype.showError = function(error) {
+  if (typeof error !== 'object') {
+    error = error || '';
+    if (this.elements.error) {
+
+      // Set the error text.
+      this.elements.error.text(error);
+      if (error) {
+        // Show the error message.
+        this.elements.error.show();
+
+        // Only show this error for a time interval.
+        setTimeout((function(player) {
+          return function() {
+            player.elements.error.hide('slow');
+          };
+        })(this), 5000);
+      }
+      else {
+        this.elements.error.hide();
+      }
+    }
+  }
+};
+
+/**
+ * Adds key events to the player.
+ */
+minplayer.prototype.addKeyEvents = function() {
+  jQuery(document).bind('keydown', (function(player) {
+    return function(event) {
+      switch (event.keyCode) {
+        case 113: // ESC
+        case 27:  // Q
+          if (player.isFullScreen()) {
+            player.fullscreen(false);
+          }
+          break;
+      }
+    };
+  })(this));
+};
+
+/**
+ * Returns all the media files available for this player.
+ *
+ * @return {array} All the media files for this player.
+ */
+minplayer.prototype.getFiles = function() {
+
+  // If they provide the files in the options, use those first.
+  if (this.options.files) {
+    return this.options.files;
+  }
+
+  if (this.options.file) {
+    return this.options.file;
+  }
+
+  var files = [];
+  var mediaSrc = null;
+
+  // Get the files involved...
+  if (this.elements.media) {
+    mediaSrc = this.elements.media.attr('src');
+    if (mediaSrc) {
+      files.push({'path': mediaSrc});
+    }
+    jQuery('source', this.elements.media).each(function() {
+      files.push({
+        'path': jQuery(this).attr('src'),
+        'mimetype': jQuery(this).attr('type'),
+        'codecs': jQuery(this).attr('codecs')
+      });
+    });
+  }
+
+  return files;
+};
+
+/**
+ * Returns the full media player object.
+ *
+ * @param {array} files An array of files to chose from.
+ * @return {object} The best media file to play in the current browser.
+ */
+minplayer.getMediaFile = function(files) {
+
+  // If there are no files then return null.
+  if (!files) {
+    return null;
+  }
+
+  // If the file is already a file object then just return.
+  if ((typeof files === 'string') || files.path || files.id) {
+    return new minplayer.file(files);
+  }
+
+  // Add the files and get the best player to play.
+  var bestPriority = 0, mFile = null, file = null;
+  for (var i in files) {
+    if (files.hasOwnProperty(i)) {
+      file = new minplayer.file(files[i]);
+      if (file.player && (file.priority > bestPriority)) {
+        mFile = file;
+      }
+    }
+  }
+
+  // Return the best minplayer file.
+  return mFile;
+};
+
+/**
+ * Loads a media player based on the current file.
+ *
+ * @return {boolean} If a new player was loaded.
+ */
+minplayer.prototype.loadPlayer = function() {
+
+  // Do nothing if there isn't a file or anywhere to put it.
+  if (!this.options.file || (this.elements.display.length == 0)) {
+    return false;
+  }
+
+  // If no player is set, then also return false.
+  if (!this.options.file.player) {
+    return false;
+  }
+
+  // Reset the error.
+  this.showError();
+
+  // Only destroy if the current player is different than the new player.
+  var player = this.options.file.player.toString();
+
+  // If there isn't media or if the players are different.
+  if (!this.media || (player !== this.currentPlayer)) {
+
+    // Set the current media player.
+    this.currentPlayer = player;
+
+    // Do nothing if we don't have a display.
+    if (!this.elements.display) {
+      this.showError('No media display found.');
+      return;
+    }
+
+    // Destroy the current media.
+    var queue = {};
+    if (this.media) {
+      queue = this.media.queue;
+      this.media.destroy();
+    }
+
+    // Get the class name and create the new player.
+    pClass = minplayer.players[this.options.file.player];
+
+    // Create the new media player.
+    this.options.mediaelement = this.elements.media;
+    this.media = new pClass(this.elements.display, this.options, queue);
+
+    // Now get the media when it is ready.
+    this.get('media', (function(player) {
+      return function(media) {
+
+        // Load the media.
+        media.load(player.options.file);
+        player.display.addClass('minplayer-player-' + media.mediaFile.player);
+      };
+    })(this));
+
+    // Return that a new player is loaded.
+    return true;
+  }
+  // If the media object already exists...
+  else if (this.media) {
+
+    // Now load the different media file.
+    this.media.options = this.options;
+    this.display.removeClass('minplayer-player-' + this.media.mediaFile.player);
+    this.media.load(this.options.file);
+    this.display.addClass('minplayer-player-' + this.media.mediaFile.player);
+    return false;
+  }
+};
+
+/**
+ * Load a set of files or a single file for the media player.
+ *
+ * @param {array} files An array of files to chose from to load.
+ */
+minplayer.prototype.load = function(files) {
+
+  // Set the id and class.
+  var id = '', pClass = '';
+
+  // If no file was provided, then get it.
+  this.options.files = files || this.options.files;
+  this.options.file = minplayer.getMediaFile(this.options.files);
+
+  // Now load the player.
+  if (this.loadPlayer()) {
+
+    // Add the events since we now have a player.
+    this.bindTo(this.media);
+
+    // If the player isn't valid, then show an error.
+    if (this.options.file.mimetype && !this.options.file.player) {
+      this.showError('Cannot play media: ' + this.options.file.mimetype);
+    }
+  }
+};
+
+/**
+ * Called when the player is resized.
+ */
+minplayer.prototype.resize = function() {
+
+  // Call onRezie for each plugin.
+  this.get(function(plugin) {
+    if (plugin.onResize) {
+      plugin.onResize();
+    }
+  });
+};
diff --git a/public/admin/js/osmplayer/minplayer/src/minplayer.playLoader.js b/public/admin/js/osmplayer/minplayer/src/minplayer.playLoader.js
new file mode 100644
index 0000000000000000000000000000000000000000..14072373f45bc70f1aa7b1a3861bbe470136b29f
--- /dev/null
+++ b/public/admin/js/osmplayer/minplayer/src/minplayer.playLoader.js
@@ -0,0 +1,220 @@
+/** The minplayer namespace. */
+var minplayer = minplayer || {};
+
+/**
+ * @constructor
+ * @extends minplayer.display
+ * @class The play loader base class, which is used to control the busy
+ * cursor, big play button, and the opaque background which shows when the
+ * player is paused.
+ *
+ * @param {object} context The jQuery context.
+ * @param {object} options This components options.
+ */
+minplayer.playLoader = function(context, options) {
+
+  // Define the flags that control the busy cursor.
+  this.busy = new minplayer.flags();
+
+  // Define the flags that control the big play button.
+  this.bigPlay = new minplayer.flags();
+
+  // Define the flags the control the preview.
+  this.previewFlag = new minplayer.flags();
+
+  /** The preview image. */
+  this.preview = null;
+
+  /** If the playLoader is enabled. */
+  this.enabled = true;
+
+  // Derive from display
+  minplayer.display.call(this, 'playLoader', context, options);
+};
+
+/** Derive from minplayer.display. */
+minplayer.playLoader.prototype = new minplayer.display();
+
+/** Reset the constructor. */
+minplayer.playLoader.prototype.constructor = minplayer.playLoader;
+
+/**
+ * The constructor.
+ */
+minplayer.playLoader.prototype.construct = function() {
+
+  // Call the media display constructor.
+  minplayer.display.prototype.construct.call(this);
+
+  // Set the plugin name within the options.
+  this.options.pluginName = 'playLoader';
+
+  // Get the media plugin.
+  this.initialize();
+
+  // We are now ready.
+  this.ready();
+};
+
+/**
+ * Initialize the playLoader.
+ */
+minplayer.playLoader.prototype.initialize = function() {
+
+  // Get the media plugin.
+  this.get('media', function(media) {
+
+    // Only bind if this player does not have its own play loader.
+    if (!media.hasPlayLoader(this.options.preview)) {
+
+      // Enable the playLoader.
+      this.enabled = true;
+
+      // Get the poster image.
+      if (!this.options.preview) {
+        this.options.preview = media.elements.media.attr('poster');
+      }
+
+      // Reset the media's poster image.
+      media.elements.media.attr('poster', '');
+
+      // Load the preview image.
+      this.loadPreview();
+
+      // Trigger a play event when someone clicks on the controller.
+      if (this.elements.bigPlay) {
+        minplayer.click(this.elements.bigPlay.unbind(), function(event) {
+          event.preventDefault();
+          minplayer.showAll();
+          jQuery(this).hide();
+          media.play();
+        });
+      }
+
+      // Bind to the player events to control the play loader.
+      media.unbind('loadstart').bind('loadstart', (function(playLoader) {
+        return function(event) {
+          playLoader.busy.setFlag('media', true);
+          playLoader.bigPlay.setFlag('media', true);
+          playLoader.previewFlag.setFlag('media', true);
+          playLoader.checkVisibility();
+        };
+      })(this));
+      media.bind('waiting', (function(playLoader) {
+        return function(event) {
+          playLoader.busy.setFlag('media', true);
+          playLoader.checkVisibility();
+        };
+      })(this));
+      media.bind('loadeddata', (function(playLoader) {
+        return function(event) {
+          playLoader.busy.setFlag('media', false);
+          playLoader.checkVisibility();
+        };
+      })(this));
+      media.bind('playing', (function(playLoader) {
+        return function(event) {
+          playLoader.busy.setFlag('media', false);
+          playLoader.bigPlay.setFlag('media', false);
+          if (media.mediaFile.type !== 'audio') {
+            playLoader.previewFlag.setFlag('media', false);
+          }
+          playLoader.checkVisibility();
+        };
+      })(this));
+      media.bind('pause', (function(playLoader) {
+        return function(event) {
+          playLoader.bigPlay.setFlag('media', true);
+          playLoader.checkVisibility();
+        };
+      })(this));
+    }
+    else {
+
+      // Hide the display.
+      this.enabled = false;
+      this.hide(this.elements.busy);
+      this.hide(this.elements.bigPlay);
+      this.hide(this.elements.preview);
+      this.hide();
+    }
+  });
+};
+
+/**
+ * Loads the preview image.
+ */
+minplayer.playLoader.prototype.loadPreview = function() {
+
+  // Ignore if disabled.
+  if (!this.enabled) {
+    return;
+  }
+
+  // If the preview element exists.
+  if (this.elements.preview) {
+
+    // If there is a preview to show...
+    if (this.options.preview) {
+
+      // Say that this has a preview.
+      this.elements.preview.addClass('has-preview').show();
+
+      // Create a new preview image.
+      this.preview = new minplayer.image(this.elements.preview, this.options);
+
+      // Create the image.
+      this.preview.load(this.options.preview);
+    }
+    else {
+
+      // Hide the preview.
+      this.elements.preview.hide();
+    }
+  }
+};
+
+/**
+ * Hide or show certain elements based on the state of the busy and big play
+ * button.
+ */
+minplayer.playLoader.prototype.checkVisibility = function() {
+
+  // Ignore if disabled.
+  if (!this.enabled) {
+    return;
+  }
+
+  // Hide or show the busy cursor based on the flags.
+  if (this.busy.flag) {
+    this.elements.busy.show();
+  }
+  else {
+    this.elements.busy.hide();
+  }
+
+  // Hide or show the big play button based on the flags.
+  if (this.bigPlay.flag) {
+    this.elements.bigPlay.show();
+  }
+  else {
+    this.elements.bigPlay.hide();
+  }
+
+  if (this.previewFlag.flag) {
+    this.elements.preview.show();
+  }
+  else {
+    this.elements.preview.hide();
+  }
+
+  // Show the control either flag is set.
+  if (this.bigPlay.flag || this.busy.flag || this.previewFlag.flag) {
+    this.display.show();
+  }
+
+  // Hide the whole control if both flags are 0.
+  if (!this.bigPlay.flag && !this.busy.flag && !this.previewFlag.flag) {
+    this.display.hide();
+  }
+};
diff --git a/public/admin/js/osmplayer/minplayer/src/minplayer.players.base.js b/public/admin/js/osmplayer/minplayer/src/minplayer.players.base.js
new file mode 100644
index 0000000000000000000000000000000000000000..2b885b88631c67a75f9bd0af913302431033caa9
--- /dev/null
+++ b/public/admin/js/osmplayer/minplayer/src/minplayer.players.base.js
@@ -0,0 +1,653 @@
+/** The minplayer namespace. */
+var minplayer = minplayer || {};
+
+/** All the media player implementations */
+minplayer.players = minplayer.players || {};
+
+/**
+ * @constructor
+ * @extends minplayer.display
+ * @class The base media player class where all media players derive from.
+ *
+ * @param {object} context The jQuery context.
+ * @param {object} options This components options.
+ * @param {object} queue The event queue to pass events around.
+ */
+minplayer.players.base = function(context, options, queue) {
+
+  // Derive from display
+  minplayer.display.call(this, 'media', context, options, queue);
+};
+
+/** Derive from minplayer.display. */
+minplayer.players.base.prototype = new minplayer.display();
+
+/** Reset the constructor. */
+minplayer.players.base.prototype.constructor = minplayer.players.base;
+
+/**
+ * @see minplayer.display.getElements
+ * @this minplayer.players.base
+ * @return {object} The elements for this display.
+ */
+minplayer.players.base.prototype.getElements = function() {
+  var elements = minplayer.display.prototype.getElements.call(this);
+  return jQuery.extend(elements, {
+    media: this.options.mediaelement
+  });
+};
+
+/**
+ * Get the priority of this media player.
+ *
+ * @return {number} The priority of this media player.
+ */
+minplayer.players.base.getPriority = function() {
+  return 0;
+};
+
+/**
+ * Returns the ID for the media being played.
+ *
+ * @param {object} file A {@link minplayer.file} object.
+ * @return {string} The ID for the provided media.
+ */
+minplayer.players.base.getMediaId = function(file) {
+  return '';
+};
+
+/**
+ * Determine if we can play the media file.
+ *
+ * @param {object} file A {@link minplayer.file} object.
+ * @return {boolean} If this player can play this media type.
+ */
+minplayer.players.base.canPlay = function(file) {
+  return false;
+};
+
+/**
+ * @see minplayer.plugin.construct
+ * @this minplayer.players.base
+ */
+minplayer.players.base.prototype.construct = function() {
+
+  // Call the media display constructor.
+  minplayer.display.prototype.construct.call(this);
+
+  // Set the plugin name within the options.
+  this.options.pluginName = 'basePlayer';
+
+  /** The currently loaded media file. */
+  this.mediaFile = this.options.file;
+
+  // Clear the media player.
+  this.clear();
+
+  // Get the player display object.
+  if (!this.playerFound()) {
+
+    // Add the new player.
+    this.addPlayer();
+  }
+
+  // Get the player object...
+  this.player = this.getPlayer();
+
+  // Toggle playing if they click.
+  minplayer.click(this.display, (function(player) {
+    return function() {
+      minplayer.showAll();
+      if (player.playing) {
+        player.pause();
+      }
+      else {
+        player.play();
+      }
+    };
+  })(this));
+
+  // Bind to key events...
+  jQuery(document).bind('keydown', (function(player) {
+    return function(event) {
+      if (player.hasFocus) {
+        event.preventDefault();
+        switch (event.keyCode) {
+          case 32:  // SPACE
+          case 179: // GOOGLE play/pause button.
+            if (player.playing) {
+              player.pause();
+            }
+            else {
+              player.play();
+            }
+            break;
+          case 38:  // UP
+            player.setVolumeRelative(0.1);
+            break;
+          case 40:  // DOWN
+            player.setVolumeRelative(-0.1);
+            break;
+          case 37:  // LEFT
+          case 227: // GOOGLE TV REW
+            player.seekRelative(-0.05);
+            break;
+          case 39:  // RIGHT
+          case 228: // GOOGLE TV FW
+            player.seekRelative(0.05);
+            break;
+        }
+      }
+    };
+  })(this));
+};
+
+/**
+ * Adds the media player.
+ */
+minplayer.players.base.prototype.addPlayer = function() {
+
+  // Remove the media element if found
+  if (this.elements.media) {
+    this.elements.media.remove();
+  }
+
+  // Create a new media player element.
+  this.elements.media = jQuery(this.create());
+  this.display.html(this.elements.media);
+};
+
+/**
+ * @see minplayer.plugin.destroy.
+ */
+minplayer.players.base.prototype.destroy = function() {
+  minplayer.plugin.prototype.destroy.call(this);
+  this.clear();
+};
+
+/**
+ * Clears the media player.
+ */
+minplayer.players.base.prototype.clear = function() {
+
+  // Reset the ready flag.
+  this.playerReady = false;
+
+  // Reset the player.
+  this.reset();
+
+  // If the player exists, then unbind all events.
+  if (this.player) {
+    jQuery(this.player).unbind();
+  }
+};
+
+/**
+ * Resets all variables.
+ */
+minplayer.players.base.prototype.reset = function() {
+
+  // The duration of the player.
+  this.duration = new minplayer.async();
+
+  // The current play time of the player.
+  this.currentTime = new minplayer.async();
+
+  // The amount of bytes loaded in the player.
+  this.bytesLoaded = new minplayer.async();
+
+  // The total amount of bytes for the media.
+  this.bytesTotal = new minplayer.async();
+
+  // The bytes that the download started with.
+  this.bytesStart = new minplayer.async();
+
+  // The current volume of the player.
+  this.volume = new minplayer.async();
+
+  // Reset focus.
+  this.hasFocus = false;
+
+  // We are not playing.
+  this.playing = false;
+
+  // We are not loading.
+  this.loading = false;
+
+  // Tell everyone else we reset.
+  this.trigger('pause');
+  this.trigger('waiting');
+  this.trigger('progress', {loaded: 0, total: 0, start: 0});
+  this.trigger('timeupdate', {currentTime: 0, duration: 0});
+};
+
+/**
+ * Called when the player is ready to recieve events and commands.
+ */
+minplayer.players.base.prototype.onReady = function() {
+
+  // Only continue if we are not already ready.
+  if (this.playerReady) {
+    return;
+  }
+
+  // Set the ready flag.
+  this.playerReady = true;
+
+  // Set the volume to the default.
+  this.setVolume(this.options.volume / 100);
+
+  // Setup the progress interval.
+  this.loading = true;
+
+  // Create a poll to get the progress.
+  this.poll((function(player) {
+    return function() {
+
+      // Only do this if the play interval is set.
+      if (player.loading) {
+
+        // Get the bytes loaded asynchronously.
+        player.getBytesLoaded(function(bytesLoaded) {
+
+          // Get the bytes total asynchronously.
+          player.getBytesTotal(function(bytesTotal) {
+
+            // Trigger an event about the progress.
+            if (bytesLoaded || bytesTotal) {
+
+              // Get the bytes start, but don't require it.
+              var bytesStart = 0;
+              player.getBytesStart(function(val) {
+                bytesStart = val;
+              });
+
+              // Trigger a progress event.
+              player.trigger('progress', {
+                loaded: bytesLoaded,
+                total: bytesTotal,
+                start: bytesStart
+              });
+
+              // Say we are not longer loading if they are equal.
+              if (bytesLoaded >= bytesTotal) {
+                player.loading = false;
+              }
+            }
+          });
+        });
+      }
+
+      // Keep polling as long as its loading...
+      return player.loading;
+    };
+  })(this), 1000);
+
+  // We are now ready.
+  this.ready();
+
+  // Trigger that the load has started.
+  this.trigger('loadstart');
+};
+
+/**
+ * Should be called when the media is playing.
+ */
+minplayer.players.base.prototype.onPlaying = function() {
+
+  // Trigger an event that we are playing.
+  this.trigger('playing');
+
+  // Say that this player has focus.
+  this.hasFocus = true;
+
+  // Set the playInterval to true.
+  this.playing = true;
+
+  // Create a poll to get the timeupate.
+  this.poll((function(player) {
+    return function() {
+
+      // Only do this if the play interval is set.
+      if (player.playing) {
+
+        // Get the current time asyncrhonously.
+        player.getCurrentTime(function(currentTime) {
+
+          // Get the duration asynchronously.
+          player.getDuration(function(duration) {
+
+            // Convert these to floats.
+            currentTime = parseFloat(currentTime);
+            duration = parseFloat(duration);
+
+            // Trigger an event about the progress.
+            if (currentTime || duration) {
+
+              // Trigger an update event.
+              player.trigger('timeupdate', {
+                currentTime: currentTime,
+                duration: duration
+              });
+            }
+          });
+        });
+      }
+
+      // Keep polling as long as it is playing.
+      return player.playing;
+    };
+  })(this), 1000);
+};
+
+/**
+ * Should be called when the media is paused.
+ */
+minplayer.players.base.prototype.onPaused = function() {
+
+  // Trigger an event that we are paused.
+  this.trigger('pause');
+
+  // Remove focus.
+  this.hasFocus = false;
+
+  // Say we are not playing.
+  this.playing = false;
+};
+
+/**
+ * Should be called when the media is complete.
+ */
+minplayer.players.base.prototype.onComplete = function() {
+  if (this.playing) {
+    this.onPaused();
+  }
+
+  // Stop the intervals.
+  this.playing = false;
+  this.loading = false;
+  this.hasFocus = false;
+  this.trigger('ended');
+};
+
+/**
+ * Should be called when the media is done loading.
+ */
+minplayer.players.base.prototype.onLoaded = function() {
+
+  // If we should autoplay, then just play now.
+  if (this.options.autoplay) {
+    this.play();
+  }
+
+  this.trigger('loadeddata');
+};
+
+/**
+ * Should be called when the player is waiting.
+ */
+minplayer.players.base.prototype.onWaiting = function() {
+  this.trigger('waiting');
+};
+
+/**
+ * Called when an error occurs.
+ *
+ * @param {string} errorCode The error that was triggered.
+ */
+minplayer.players.base.prototype.onError = function(errorCode) {
+  this.hasFocus = false;
+  this.trigger('error', errorCode);
+};
+
+/**
+ * @see minplayer.players.base#isReady
+ * @return {boolean} Checks to see if the Flash is ready.
+ */
+minplayer.players.base.prototype.isReady = function() {
+
+  // Return that the player is set and the ready flag is good.
+  return (this.player && this.playerReady);
+};
+
+/**
+ * Determines if the player should show the playloader.
+ *
+ * @param {string} preview The preview image.
+ * @return {bool} If this player implements its own playLoader.
+ */
+minplayer.players.base.prototype.hasPlayLoader = function(preview) {
+  return false;
+};
+
+/**
+ * Determines if the player should show the controller.
+ *
+ * @return {bool} If this player implements its own controller.
+ */
+minplayer.players.base.prototype.hasController = function() {
+  return false;
+};
+
+/**
+ * Returns if the media player is already within the DOM.
+ *
+ * @return {boolean} TRUE - if the player is in the DOM, FALSE otherwise.
+ */
+minplayer.players.base.prototype.playerFound = function() {
+  return false;
+};
+
+/**
+ * Creates the media player and inserts it in the DOM.
+ *
+ * @return {object} The media player entity.
+ */
+minplayer.players.base.prototype.create = function() {
+  this.reset();
+  return null;
+};
+
+/**
+ * Returns the media player object.
+ *
+ * @return {object} The media player object.
+ */
+minplayer.players.base.prototype.getPlayer = function() {
+  return this.player;
+};
+
+/**
+ * Loads a new media player.
+ *
+ * @param {object} file A {@link minplayer.file} object.
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.base.prototype.load = function(file) {
+
+  // Store the media file for future lookup.
+  var isString = (typeof this.mediaFile == 'string');
+  var path = isString ? this.mediaFile : this.mediaFile.path;
+  if (file && this.isReady() && (file.path != path)) {
+    this.reset();
+    this.mediaFile = file;
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * Play the loaded media file.
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.base.prototype.play = function() {
+  return this.isReady();
+};
+
+/**
+ * Pause the loaded media file.
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.base.prototype.pause = function() {
+  return this.isReady();
+};
+
+/**
+ * Stop the loaded media file.
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.base.prototype.stop = function() {
+  this.playing = false;
+  this.loading = false;
+  this.hasFocus = false;
+  return this.isReady();
+};
+
+/**
+ * Seeks to relative position.
+ *
+ * @param {number} pos Relative position.  -1 to 1 (percent), > 1 (seconds).
+ */
+minplayer.players.base.prototype.seekRelative = function(pos) {
+
+  // Get the current time asyncrhonously.
+  this.getCurrentTime((function(player) {
+    return function(currentTime) {
+
+      // Get the duration asynchronously.
+      player.getDuration(function(duration) {
+
+        // Only do this if we have a duration.
+        if (duration) {
+
+          // Get the position.
+          var seekPos = 0;
+          if ((pos > -1) && (pos < 1)) {
+            seekPos = ((currentTime / duration) + parseFloat(pos)) * duration;
+          }
+          else {
+            seekPos = (currentTime + parseFloat(pos));
+          }
+
+          // Set the seek value.
+          player.seek(seekPos);
+        }
+      });
+    };
+  })(this));
+};
+
+/**
+ * Seek the loaded media.
+ *
+ * @param {number} pos The position to seek the minplayer. 0 to 1.
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.base.prototype.seek = function(pos) {
+  return this.isReady();
+};
+
+/**
+ * Gets a value from the player.
+ *
+ * @param {string} getter The getter method on the player.
+ * @param {function} callback The callback function.
+ */
+minplayer.players.base.prototype.getValue = function(getter, callback) {
+  if (this.isReady()) {
+    var value = this.player[getter]();
+    if ((value !== undefined) && (value !== null)) {
+      callback(value);
+    }
+  }
+};
+
+/**
+ * Set the volume of the loaded minplayer.
+ *
+ * @param {number} vol -1 to 1 - The relative amount to increase or decrease.
+ */
+minplayer.players.base.prototype.setVolumeRelative = function(vol) {
+
+  // Get the volume
+  this.getVolume((function(player) {
+    return function(newVol) {
+      newVol += parseFloat(vol);
+      newVol = (newVol < 0) ? 0 : newVol;
+      newVol = (newVol > 1) ? 1 : newVol;
+      player.setVolume(newVol);
+    };
+  })(this));
+};
+
+/**
+ * Set the volume of the loaded minplayer.
+ *
+ * @param {number} vol The volume to set the media. 0 to 1.
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.base.prototype.setVolume = function(vol) {
+  this.trigger('volumeupdate', vol);
+  return this.isReady();
+};
+
+/**
+ * Get the volume from the loaded media.
+ *
+ * @param {function} callback Called when the volume is determined.
+ * @return {number} The volume of the media; 0 to 1.
+ */
+minplayer.players.base.prototype.getVolume = function(callback) {
+  return this.volume.get(callback);
+};
+
+/**
+ * Get the current time for the media being played.
+ *
+ * @param {function} callback Called when the time is determined.
+ * @return {number} The volume of the media; 0 to 1.
+ */
+minplayer.players.base.prototype.getCurrentTime = function(callback) {
+  return this.currentTime.get(callback);
+};
+
+/**
+ * Return the duration of the loaded media.
+ *
+ * @param {function} callback Called when the duration is determined.
+ * @return {number} The duration of the loaded media.
+ */
+minplayer.players.base.prototype.getDuration = function(callback) {
+  return this.duration.get(callback);
+};
+
+/**
+ * Return the start bytes for the loaded media.
+ *
+ * @param {function} callback Called when the start bytes is determined.
+ * @return {int} The bytes that were started.
+ */
+minplayer.players.base.prototype.getBytesStart = function(callback) {
+  return this.bytesStart.get(callback);
+};
+
+/**
+ * Return the bytes of media loaded.
+ *
+ * @param {function} callback Called when the bytes loaded is determined.
+ * @return {int} The amount of bytes loaded.
+ */
+minplayer.players.base.prototype.getBytesLoaded = function(callback) {
+  return this.bytesLoaded.get(callback);
+};
+
+/**
+ * Return the total amount of bytes.
+ *
+ * @param {function} callback Called when the bytes total is determined.
+ * @return {int} The total amount of bytes for this media.
+ */
+minplayer.players.base.prototype.getBytesTotal = function(callback) {
+  return this.bytesTotal.get(callback);
+};
diff --git a/public/admin/js/osmplayer/minplayer/src/minplayer.players.flash.js b/public/admin/js/osmplayer/minplayer/src/minplayer.players.flash.js
new file mode 100644
index 0000000000000000000000000000000000000000..1a2a9a7d4ce0f0b3fcf70e1aff4d55f92c9dc926
--- /dev/null
+++ b/public/admin/js/osmplayer/minplayer/src/minplayer.players.flash.js
@@ -0,0 +1,124 @@
+/** The minplayer namespace. */
+var minplayer = minplayer || {};
+
+/** All the media player implementations */
+minplayer.players = minplayer.players || {};
+
+/**
+ * @constructor
+ * @extends minplayer.display
+ * @class The Flash media player class to control the flash fallback.
+ *
+ * @param {object} context The jQuery context.
+ * @param {object} options This components options.
+ * @param {object} queue The event queue to pass events around.
+ */
+minplayer.players.flash = function(context, options, queue) {
+
+  // Derive from players base.
+  minplayer.players.base.call(this, context, options, queue);
+};
+
+/** Derive from minplayer.players.base. */
+minplayer.players.flash.prototype = new minplayer.players.base();
+
+/** Reset the constructor. */
+minplayer.players.flash.prototype.constructor = minplayer.players.flash;
+
+/**
+ * @see minplayer.plugin.construct
+ * @this minplayer.players.flash
+ */
+minplayer.players.flash.prototype.construct = function() {
+
+  // Call the players.base constructor.
+  minplayer.players.base.prototype.construct.call(this);
+
+  // Set the plugin name within the options.
+  this.options.pluginName = 'flash';
+};
+
+/**
+ * @see minplayer.players.base#getPriority
+ * @return {number} The priority of this media player.
+ */
+minplayer.players.flash.getPriority = function() {
+  return 0;
+};
+
+/**
+ * @see minplayer.players.base#canPlay
+ * @return {boolean} If this player can play this media type.
+ */
+minplayer.players.flash.canPlay = function(file) {
+  return false;
+};
+
+/**
+ * API to return the Flash player code provided params.
+ *
+ * @param {object} params The params used to populate the Flash code.
+ * @return {object} A Flash DOM element.
+ */
+minplayer.players.flash.prototype.getFlash = function(params) {
+  // Get the protocol.
+  var protocol = window.location.protocol;
+  if (protocol.charAt(protocol.length - 1) == ':') {
+    protocol = protocol.substring(0, protocol.length - 1);
+  }
+
+  // Insert the swfobject javascript.
+  var tag = document.createElement('script');
+  var src = protocol;
+  src += '://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js';
+  tag.src = src;
+  var firstScriptTag = document.getElementsByTagName('script')[0];
+  firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
+
+  // Create the swfobject.
+  setTimeout((function(player) {
+    return function tryAgain() {
+      if (typeof swfobject !== 'undefined') {
+        swfobject.embedSWF(
+          params.swf,
+          params.id,
+          params.width,
+          params.height,
+          '9.0.0',
+          false,
+          params.flashvars,
+          {
+            allowscriptaccess: 'always',
+            allowfullscreen: 'true',
+            wmode: params.wmode,
+            quality: 'high'
+          },
+          {
+            id: params.id,
+            name: params.id,
+            playerType: 'flash'
+          },
+          function(e) {
+            player.player = e.ref;
+          }
+        );
+      }
+      else {
+
+        // Try again after 200 ms.
+        setTimeout(tryAgain, 200);
+      }
+    };
+  })(this), 200);
+
+  // Return the div tag...
+  return '<div id="' + params.id + '"></div>';
+};
+
+/**
+ * @see minplayer.players.base#playerFound
+ * @return {boolean} TRUE - if the player is in the DOM, FALSE otherwise.
+ */
+minplayer.players.flash.prototype.playerFound = function() {
+  return (this.display.find('object[playerType="flash"]').length > 0);
+};
diff --git a/public/admin/js/osmplayer/minplayer/src/minplayer.players.html5.js b/public/admin/js/osmplayer/minplayer/src/minplayer.players.html5.js
new file mode 100644
index 0000000000000000000000000000000000000000..0376dd0098a37f1bb9a96cc490a6939bcdaff68b
--- /dev/null
+++ b/public/admin/js/osmplayer/minplayer/src/minplayer.players.html5.js
@@ -0,0 +1,421 @@
+/** The minplayer namespace. */
+var minplayer = minplayer || {};
+
+/** All the media player implementations */
+minplayer.players = minplayer.players || {};
+
+/**
+ * @constructor
+ * @extends minplayer.display
+ * @class The HTML5 media player implementation.
+ *
+ * @param {object} context The jQuery context.
+ * @param {object} options This components options.
+ * @param {object} queue The event queue to pass events around.
+ */
+minplayer.players.html5 = function(context, options, queue) {
+
+  // Derive players base.
+  minplayer.players.base.call(this, context, options, queue);
+};
+
+/** Derive from minplayer.players.base. */
+minplayer.players.html5.prototype = new minplayer.players.base();
+
+/** Reset the constructor. */
+minplayer.players.html5.prototype.constructor = minplayer.players.html5;
+
+/**
+ * @see minplayer.players.base#getPriority
+ * @return {number} The priority of this media player.
+ */
+minplayer.players.html5.getPriority = function() {
+  return 10;
+};
+
+/**
+ * @see minplayer.players.base#canPlay
+ * @return {boolean} If this player can play this media type.
+ */
+minplayer.players.html5.canPlay = function(file) {
+  switch (file.mimetype) {
+    case 'video/ogg':
+      return !!minplayer.playTypes.videoOGG;
+    case 'video/mp4':
+    case 'video/x-mp4':
+    case 'video/m4v':
+    case 'video/x-m4v':
+      return !!minplayer.playTypes.videoH264;
+    case 'video/x-webm':
+    case 'video/webm':
+    case 'application/octet-stream':
+      return !!minplayer.playTypes.videoWEBM;
+    case 'audio/ogg':
+      return !!minplayer.playTypes.audioOGG;
+    case 'audio/mpeg':
+      return !!minplayer.playTypes.audioMP3;
+    case 'audio/mp4':
+      return !!minplayer.playTypes.audioMP4;
+    default:
+      return false;
+  }
+};
+
+/**
+ * @see minplayer.plugin.construct
+ */
+minplayer.players.html5.prototype.construct = function() {
+
+  // Call base constructor.
+  minplayer.players.base.prototype.construct.call(this);
+
+  // Set the plugin name within the options.
+  this.options.pluginName = 'html5';
+
+  // Add the player events.
+  this.addPlayerEvents();
+};
+
+/**
+ * Adds a new player event.
+ *
+ * @param {string} type The type of event being fired.
+ * @param {function} callback Called when the event is fired.
+ */
+minplayer.players.html5.prototype.addPlayerEvent = function(type, callback) {
+  if (this.player) {
+
+    // Add an event listener for this event type.
+    this.player.addEventListener(type, (function(player) {
+
+      // Get the function name.
+      var func = type + 'Event';
+
+      // If the callback already exists, then remove it from the player.
+      if (player[func]) {
+        player.player.removeEventListener(type, player[func], false);
+      }
+
+      // Create a new callback.
+      player[func] = function(event) {
+        callback.call(player, event);
+      };
+
+      // Return the callback.
+      return player[func];
+
+    })(this), false);
+  }
+};
+
+/**
+ * Add events.
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.html5.prototype.addPlayerEvents = function() {
+
+  // Check if the player exists.
+  if (this.player) {
+
+    this.addPlayerEvent('abort', function() {
+      this.trigger('abort');
+    });
+    this.addPlayerEvent('loadstart', function() {
+      this.onReady();
+    });
+    this.addPlayerEvent('loadeddata', function() {
+      this.onLoaded();
+    });
+    this.addPlayerEvent('loadedmetadata', function() {
+      this.onLoaded();
+    });
+    this.addPlayerEvent('canplaythrough', function() {
+      this.onLoaded();
+    });
+    this.addPlayerEvent('ended', function() {
+      this.onComplete();
+    });
+    this.addPlayerEvent('pause', function() {
+      this.onPaused();
+    });
+    this.addPlayerEvent('play', function() {
+      this.onPlaying();
+    });
+    this.addPlayerEvent('playing', function() {
+      this.onPlaying();
+    });
+
+    var errorSent = false;
+    this.addPlayerEvent('error', function() {
+      if (!errorSent) {
+        errorSent = true;
+        this.trigger('error', 'An error occured - ' + this.player.error.code);
+      }
+    });
+
+    this.addPlayerEvent('waiting', function() {
+      this.onWaiting();
+    });
+    this.addPlayerEvent('durationchange', function() {
+      this.duration.set(this.player.duration);
+      this.trigger('durationchange', {duration: this.player.duration});
+    });
+    this.addPlayerEvent('progress', function(event) {
+      this.bytesTotal.set(event.total);
+      this.bytesLoaded.set(event.loaded);
+    });
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#onReady
+ */
+minplayer.players.html5.prototype.onReady = function() {
+  minplayer.players.base.prototype.onReady.call(this);
+
+  // Android just say we are loaded here.
+  if (minplayer.isAndroid) {
+    this.onLoaded();
+  }
+
+  // iOS devices are strange in that they don't autoload.
+  if (minplayer.isIDevice) {
+    this.play();
+    setTimeout((function(player) {
+      return function() {
+        player.pause();
+        player.onLoaded();
+      };
+    })(this), 1);
+  }
+};
+
+/**
+ * @see minplayer.players.base#playerFound
+ * @return {boolean} TRUE - if the player is in the DOM, FALSE otherwise.
+ */
+minplayer.players.html5.prototype.playerFound = function() {
+  return (this.display.find(this.mediaFile.type).length > 0);
+};
+
+/**
+ * @see minplayer.players.base#create
+ * @return {object} The media player entity.
+ */
+minplayer.players.html5.prototype.create = function() {
+  minplayer.players.base.prototype.create.call(this);
+  var element = jQuery(document.createElement(this.mediaFile.type))
+  .attr(this.options.attributes)
+  .append(
+    jQuery(document.createElement('source')).attr({
+      'src': this.mediaFile.path
+    })
+  );
+
+  // Fix the fluid width and height.
+  element.eq(0)[0].setAttribute('width', '100%');
+  element.eq(0)[0].setAttribute('height', '100%');
+  element.eq(0)[0].setAttribute('autobuffer', true);
+  var option = this.options.autoload ? 'auto' : 'metadata';
+  option = minplayer.isIDevice ? 'metadata' : option;
+  element.eq(0)[0].setAttribute('preload', option);
+  return element;
+};
+
+/**
+ * @see minplayer.players.base#getPlayer
+ * @return {object} The media player object.
+ */
+minplayer.players.html5.prototype.getPlayer = function() {
+  return this.elements.media.eq(0)[0];
+};
+
+/**
+ * @see minplayer.players.base#load
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.html5.prototype.load = function(file) {
+
+  // See if a load is even necessary.
+  if (minplayer.players.base.prototype.load.call(this, file)) {
+
+    // Get the current source.
+    var src = this.elements.media.attr('src');
+    if (!src) {
+      src = jQuery('source', this.elements.media).eq(0).attr('src');
+    }
+
+    // Only swap out if the new file is different from the source.
+    if (src != file.path) {
+
+      // Add a new player.
+      this.addPlayer();
+
+      // Set the new player.
+      this.player = this.getPlayer();
+
+      // Add the events again.
+      this.addPlayerEvents();
+
+      // Change the source...
+      var code = '<source src="' + file.path + '"></source>';
+      this.elements.media.removeAttr('src').empty().html(code);
+      return true;
+    }
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#play
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.html5.prototype.play = function() {
+  if (minplayer.players.base.prototype.play.call(this)) {
+    this.player.play();
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#pause
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.html5.prototype.pause = function() {
+  if (minplayer.players.base.prototype.pause.call(this)) {
+    this.player.pause();
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#stop
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.html5.prototype.stop = function() {
+  if (minplayer.players.base.prototype.stop.call(this)) {
+    this.player.pause();
+    this.player.src = '';
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#seek
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.html5.prototype.seek = function(pos) {
+  if (minplayer.players.base.prototype.seek.call(this, pos)) {
+    this.player.currentTime = pos;
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#setVolume
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.html5.prototype.setVolume = function(vol) {
+  if (minplayer.players.base.prototype.setVolume.call(this, vol)) {
+    this.player.volume = vol;
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#getVolume
+ */
+minplayer.players.html5.prototype.getVolume = function(callback) {
+  if (this.isReady()) {
+    callback(this.player.volume);
+  }
+};
+
+/**
+ * @see minplayer.players.base#getDuration
+ */
+minplayer.players.html5.prototype.getDuration = function(callback) {
+  if (this.isReady()) {
+    callback(this.player.duration);
+  }
+};
+
+/**
+ * @see minplayer.players.base#getCurrentTime
+ */
+minplayer.players.html5.prototype.getCurrentTime = function(callback) {
+  if (this.isReady()) {
+    callback(this.player.currentTime);
+  }
+};
+
+/**
+ * @see minplayer.players.base#getBytesLoaded
+ */
+minplayer.players.html5.prototype.getBytesLoaded = function(callback) {
+  if (this.isReady()) {
+    var loaded = 0;
+
+    // Check several different possibilities.
+    if (this.bytesLoaded.value) {
+      loaded = this.bytesLoaded.value;
+    }
+    else if (this.player.buffered &&
+        this.player.buffered.length > 0 &&
+        this.player.buffered.end &&
+        this.player.duration) {
+      loaded = this.player.buffered.end(0);
+    }
+    else if (this.player.bytesTotal != undefined &&
+             this.player.bytesTotal > 0 &&
+             this.player.bufferedBytes != undefined) {
+      loaded = this.player.bufferedBytes;
+    }
+
+    // Return the loaded amount.
+    callback(loaded);
+  }
+};
+
+/**
+ * @see minplayer.players.base#getBytesTotal
+ */
+minplayer.players.html5.prototype.getBytesTotal = function(callback) {
+  if (this.isReady()) {
+
+    var total = 0;
+
+    // Check several different possibilities.
+    if (this.bytesTotal.value) {
+      total = this.bytesTotal.value;
+    }
+    else if (this.player.buffered &&
+        this.player.buffered.length > 0 &&
+        this.player.buffered.end &&
+        this.player.duration) {
+      total = this.player.duration;
+    }
+    else if (this.player.bytesTotal != undefined &&
+             this.player.bytesTotal > 0 &&
+             this.player.bufferedBytes != undefined) {
+      total = this.player.bytesTotal;
+    }
+
+    // Return the loaded amount.
+    callback(total);
+  }
+};
diff --git a/public/admin/js/osmplayer/minplayer/src/minplayer.players.minplayer.js b/public/admin/js/osmplayer/minplayer/src/minplayer.players.minplayer.js
new file mode 100644
index 0000000000000000000000000000000000000000..38dcd2e7c41a4a08e8e3aecbf033a1a491c5bdef
--- /dev/null
+++ b/public/admin/js/osmplayer/minplayer/src/minplayer.players.minplayer.js
@@ -0,0 +1,317 @@
+/** The minplayer namespace. */
+var minplayer = minplayer || {};
+
+/** All the media player implementations */
+minplayer.players = minplayer.players || {};
+
+/**
+ * @constructor
+ * @extends minplayer.display
+ * @class The Flash media player class to control the flash fallback.
+ *
+ * @param {object} context The jQuery context.
+ * @param {object} options This components options.
+ * @param {object} queue The event queue to pass events around.
+ */
+minplayer.players.minplayer = function(context, options, queue) {
+
+  // Derive from players flash.
+  minplayer.players.flash.call(this, context, options, queue);
+};
+
+/** Derive from minplayer.players.flash. */
+minplayer.players.minplayer.prototype = new minplayer.players.flash();
+
+/** Reset the constructor. */
+minplayer.players.minplayer.prototype.constructor = minplayer.players.minplayer;
+
+/**
+ * @see minplayer.plugin.construct
+ * @this minplayer.players.minplayer
+ */
+minplayer.players.minplayer.prototype.construct = function() {
+
+  // Call the players.flash constructor.
+  minplayer.players.flash.prototype.construct.call(this);
+
+  // Set the plugin name within the options.
+  this.options.pluginName = 'minplayer';
+};
+
+/**
+ * Called when the Flash player is ready.
+ *
+ * @param {string} id The media player ID.
+ */
+window.onFlashPlayerReady = function(id) {
+  var media = minplayer.get(id, 'media');
+  var i = media.length;
+  while (i--) {
+    media[i].onReady();
+  }
+};
+
+/**
+ * Called when the Flash player updates.
+ *
+ * @param {string} id The media player ID.
+ * @param {string} eventType The event type that was triggered.
+ */
+window.onFlashPlayerUpdate = function(id, eventType) {
+  var media = minplayer.get(id, 'media');
+  var i = media.length;
+  while (i--) {
+    media[i].onMediaUpdate(eventType);
+  }
+};
+
+/**
+ * Used to debug from the Flash player to the browser console.
+ *
+ * @param {string} debug The debug string.
+ */
+window.onFlashPlayerDebug = function(debug) {
+  if (console && console.log) {
+    console.log(debug);
+  }
+};
+
+/**
+ * @see minplayer.players.base#getPriority
+ * @return {number} The priority of this media player.
+ */
+minplayer.players.minplayer.getPriority = function() {
+  return 1;
+};
+
+/**
+ * @see minplayer.players.base#canPlay
+ * @return {boolean} If this player can play this media type.
+ */
+minplayer.players.minplayer.canPlay = function(file) {
+  var isWEBM = jQuery.inArray(file.mimetype, ['video/x-webm',
+    'video/webm',
+    'application/octet-stream'
+  ]) >= 0;
+  return !isWEBM && (file.type == 'video' || file.type == 'audio');
+};
+
+/**
+ * @see minplayer.players.base#create
+ * @return {object} The media player entity.
+ */
+minplayer.players.minplayer.prototype.create = function() {
+
+  // Make sure we provide default options...
+  this.options = jQuery.extend({
+    swfplayer: 'flash/minplayer.swf'
+  }, this.options);
+
+  minplayer.players.flash.prototype.create.call(this);
+
+  // The flash variables for this flash player.
+  var flashVars = {
+    'id': this.options.id,
+    'debug': this.options.debug,
+    'config': 'nocontrols',
+    'file': this.mediaFile.path,
+    'autostart': this.options.autoplay,
+    'autoload': this.options.autoload
+  };
+
+  // Return a flash media player object.
+  return this.getFlash({
+    swf: this.options.swfplayer,
+    id: this.options.id + '_player',
+    width: '100%',
+    height: '100%',
+    flashvars: flashVars,
+    wmode: this.options.wmode
+  });
+};
+
+/**
+ * Called when the Flash player has an update.
+ *
+ * @param {string} eventType The event that was triggered in the player.
+ */
+minplayer.players.minplayer.prototype.onMediaUpdate = function(eventType) {
+  switch (eventType) {
+    case 'mediaMeta':
+      this.onLoaded();
+      break;
+    case 'mediaPlaying':
+      if (this.minplayerloaded) {
+        this.onPlaying();
+      }
+      break;
+    case 'mediaPaused':
+      this.minplayerloaded = true;
+      this.onPaused();
+      break;
+    case 'mediaComplete':
+      this.onComplete();
+      break;
+  }
+};
+
+/**
+ * Resets all variables.
+ */
+minplayer.players.minplayer.prototype.clear = function() {
+  minplayer.players.flash.prototype.clear.call(this);
+  this.minplayerloaded = this.options.autoplay;
+};
+
+/**
+ * @see minplayer.players.base#load
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.minplayer.prototype.load = function(file) {
+  if (minplayer.players.flash.prototype.load.call(this, file)) {
+    this.player.loadMedia(file.path, file.stream);
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#play
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.minplayer.prototype.play = function() {
+  if (minplayer.players.flash.prototype.play.call(this)) {
+    this.player.playMedia();
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#pause
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.minplayer.prototype.pause = function() {
+  if (minplayer.players.flash.prototype.pause.call(this)) {
+    this.player.pauseMedia();
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#stop
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.minplayer.prototype.stop = function() {
+  if (minplayer.players.flash.prototype.stop.call(this)) {
+    this.player.stopMedia();
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#seek
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.minplayer.prototype.seek = function(pos) {
+  if (minplayer.players.flash.prototype.seek.call(this, pos)) {
+    this.player.seekMedia(pos);
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#setVolume
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.minplayer.prototype.setVolume = function(vol) {
+  if (minplayer.players.flash.prototype.setVolume.call(this, vol)) {
+    this.player.setVolume(vol);
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#getVolume
+ */
+minplayer.players.minplayer.prototype.getVolume = function(callback) {
+  if (this.isReady()) {
+    var vol = 0;
+    var tries = 5;
+    setTimeout((function(player) {
+      return function tryAgain() {
+        vol = player.player.getVolume();
+        if (!vol && (tries-- > 0)) {
+          setTimeout(tryAgain, 200);
+        }
+        else {
+          callback(vol);
+        }
+      };
+    })(this), 200);
+  }
+};
+
+/**
+ * @see minplayer.players.flash#getDuration
+ */
+minplayer.players.minplayer.prototype.getDuration = function(callback) {
+  if (this.isReady()) {
+
+    // Check to see if it is immediately available.
+    var duration = this.player.getDuration();
+    if (duration) {
+      callback(duration);
+    }
+    else {
+
+      // If not, then poll every second for the duration.
+      this.poll((function(player) {
+        return function() {
+          duration = player.player.getDuration();
+          if (duration) {
+            callback(duration);
+          }
+          return !duration;
+        };
+      })(this), 1000);
+    }
+  }
+};
+
+/**
+ * @see minplayer.players.base#getCurrentTime
+ */
+minplayer.players.minplayer.prototype.getCurrentTime = function(callback) {
+  if (this.isReady()) {
+    callback(this.player.getCurrentTime());
+  }
+};
+
+/**
+ * @see minplayer.players.base#getBytesLoaded
+ */
+minplayer.players.minplayer.prototype.getBytesLoaded = function(callback) {
+  if (this.isReady()) {
+    callback(this.player.getMediaBytesLoaded());
+  }
+};
+
+/**
+ * @see minplayer.players.base#getBytesTotal.
+ */
+minplayer.players.minplayer.prototype.getBytesTotal = function(callback) {
+  if (this.isReady()) {
+    callback(this.player.getMediaBytesTotal());
+  }
+};
diff --git a/public/admin/js/osmplayer/minplayer/src/minplayer.players.vimeo.js b/public/admin/js/osmplayer/minplayer/src/minplayer.players.vimeo.js
new file mode 100644
index 0000000000000000000000000000000000000000..2fcd5a43a23b1b43bb7f4b21d32d7f73a5340518
--- /dev/null
+++ b/public/admin/js/osmplayer/minplayer/src/minplayer.players.vimeo.js
@@ -0,0 +1,347 @@
+/** The minplayer namespace. */
+var minplayer = minplayer || {};
+
+/** All the media player implementations */
+minplayer.players = minplayer.players || {};
+
+/**
+ * @constructor
+ * @extends minplayer.players.base
+ * @class The vimeo media player.
+ *
+ * @param {object} context The jQuery context.
+ * @param {object} options This components options.
+ * @param {object} queue The event queue to pass events around.
+ */
+minplayer.players.vimeo = function(context, options, queue) {
+
+  // Derive from players base.
+  minplayer.players.base.call(this, context, options, queue);
+};
+
+/** Derive from minplayer.players.base. */
+minplayer.players.vimeo.prototype = new minplayer.players.base();
+
+/** Reset the constructor. */
+minplayer.players.vimeo.prototype.constructor = minplayer.players.vimeo;
+
+/**
+ * @see minplayer.plugin.construct
+ * @this minplayer.players.vimeo
+ */
+minplayer.players.vimeo.prototype.construct = function() {
+
+  // Call the players.flash constructor.
+  minplayer.players.base.prototype.construct.call(this);
+
+  // Set the plugin name within the options.
+  this.options.pluginName = 'vimeo';
+};
+
+/**
+ * @see minplayer.players.base#getPriority
+ * @return {number} The priority of this media player.
+ */
+minplayer.players.vimeo.getPriority = function() {
+  return 10;
+};
+
+/**
+ * @see minplayer.players.base#canPlay
+ * @return {boolean} If this player can play this media type.
+ */
+minplayer.players.vimeo.canPlay = function(file) {
+
+  // Check for the mimetype for vimeo.
+  if (file.mimetype === 'video/vimeo') {
+    return true;
+  }
+
+  // If the path is a vimeo path, then return true.
+  return (file.path.search(/^http(s)?\:\/\/(www\.)?vimeo\.com/i) === 0);
+};
+
+/**
+ * Determines if the player should show the playloader.
+ *
+ * @param {string} preview The preview image.
+ * @return {bool} If this player implements its own playLoader.
+ */
+minplayer.players.vimeo.prototype.hasPlayLoader = function(preview) {
+  return minplayer.hasTouch || !preview;
+};
+
+/**
+ * Determines if the player should show the playloader.
+ *
+ * @return {bool} If this player implements its own playLoader.
+ */
+minplayer.players.vimeo.prototype.hasController = function() {
+  return minplayer.hasTouch;
+};
+
+/**
+ * Return the ID for a provided media file.
+ *
+ * @param {object} file A {@link minplayer.file} object.
+ * @return {string} The ID for the provided media.
+ */
+minplayer.players.vimeo.getMediaId = function(file) {
+  var regex = /^http[s]?\:\/\/(www\.)?vimeo\.com\/(\?v\=)?([0-9]+)/i;
+  if (file.path.search(regex) === 0) {
+    return file.path.match(regex)[3];
+  }
+  else {
+    return file.path;
+  }
+};
+
+/**
+ * Returns a preview image for this media player.
+ *
+ * @param {object} file A {@link minplayer.file} object.
+ * @param {string} type The type of image.
+ * @param {function} callback Called when the image is retrieved.
+ */
+minplayer.players.vimeo.getImage = function(file, type, callback) {
+  jQuery.ajax({
+    url: 'http://vimeo.com/api/v2/video/' + file.id + '.json',
+    dataType: 'jsonp',
+    success: function(data) {
+      callback(data[0].thumbnail_large);
+    }
+  });
+};
+
+/**
+ * @see minplayer.players.base#reset
+ */
+minplayer.players.vimeo.prototype.reset = function() {
+
+  // Reset the flash variables..
+  minplayer.players.base.prototype.reset.call(this);
+};
+
+/**
+ * @see minplayer.players.base#create
+ * @return {object} The media player entity.
+ */
+minplayer.players.vimeo.prototype.create = function() {
+  minplayer.players.base.prototype.create.call(this);
+
+  // Insert the Vimeo Froogaloop player.
+  var tag = document.createElement('script');
+  tag.src = 'http://a.vimeocdn.com/js/froogaloop2.min.js';
+  var firstScriptTag = document.getElementsByTagName('script')[0];
+  firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
+
+  // Create the iframe for this player.
+  var iframe = document.createElement('iframe');
+  iframe.setAttribute('id', this.options.id + '-player');
+  iframe.setAttribute('type', 'text/html');
+  iframe.setAttribute('width', '100%');
+  iframe.setAttribute('height', '100%');
+  iframe.setAttribute('frameborder', '0');
+  jQuery(iframe).addClass('vimeo-player');
+
+  // Get the source.
+  var src = 'http://player.vimeo.com/video/';
+  src += this.mediaFile.id + '?';
+
+  // Add the parameters to the src.
+  src += jQuery.param({
+    'wmode': 'opaque',
+    'api': 1,
+    'player_id': this.options.id + '-player',
+    'title': 0,
+    'byline': 0,
+    'portrait': 0,
+    'autoplay': this.options.autoplay,
+    'loop': this.options.loop
+  });
+
+  // Set the source of the iframe.
+  iframe.setAttribute('src', src);
+
+  // Now register this player when the froogaloop code is loaded.
+  this.poll((function(player) {
+    return function() {
+      if (window.Froogaloop) {
+        player.player = window.Froogaloop(iframe);
+        var playerTimeout = 0;
+        player.player.addEvent('ready', function() {
+          clearTimeout(playerTimeout);
+          player.onReady();
+          player.onError('');
+        });
+        playerTimeout = setTimeout(function() {
+          player.onReady();
+          player.onError('Unable to play video.');
+        }, 2000);
+      }
+      return !window.Froogaloop;
+    };
+  })(this), 200);
+
+  // Trigger that the load has started.
+  this.trigger('loadstart');
+
+  // Return the player.
+  return iframe;
+};
+
+/**
+ * @see minplayer.players.base#onReady
+ */
+minplayer.players.vimeo.prototype.onReady = function(player_id) {
+
+  // Add the other listeners.
+  this.player.addEvent('loadProgress', (function(player) {
+    return function(progress) {
+      player.duration.set(parseFloat(progress.duration));
+      player.bytesLoaded.set(progress.bytesLoaded);
+      player.bytesTotal.set(progress.bytesTotal);
+    };
+  })(this));
+
+  this.player.addEvent('playProgress', (function(player) {
+    return function(progress) {
+      player.duration.set(parseFloat(progress.duration));
+      player.currentTime.set(parseFloat(progress.seconds));
+    };
+  })(this));
+
+  this.player.addEvent('play', (function(player) {
+    return function() {
+      player.onPlaying();
+    };
+  })(this));
+
+  this.player.addEvent('pause', (function(player) {
+    return function() {
+      player.onPaused();
+    };
+  })(this));
+
+  this.player.addEvent('finish', (function(player) {
+    return function() {
+      player.onComplete();
+    };
+  })(this));
+
+  minplayer.players.base.prototype.onReady.call(this);
+  this.onLoaded();
+};
+
+/**
+ * Clears the media player.
+ */
+minplayer.players.vimeo.prototype.clear = function() {
+  if (this.player) {
+    this.player.api('unload');
+  }
+  minplayer.players.base.prototype.clear.call(this);
+};
+
+/**
+ * @see minplayer.players.base#load
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.vimeo.prototype.load = function(file) {
+  if (minplayer.players.base.prototype.load.call(this, file)) {
+    this.construct();
+    return true;
+  }
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#play
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.vimeo.prototype.play = function() {
+  if (minplayer.players.base.prototype.play.call(this)) {
+    this.player.api('play');
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#pause
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.vimeo.prototype.pause = function() {
+  if (minplayer.players.base.prototype.pause.call(this)) {
+    this.player.api('pause');
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#stop
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.vimeo.prototype.stop = function() {
+  if (minplayer.players.base.prototype.stop.call(this)) {
+    this.player.api('unload');
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#seek
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.vimeo.prototype.seek = function(pos) {
+  if (minplayer.players.base.prototype.seek.call(this, pos)) {
+    this.player.api('seekTo', pos);
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#setVolume
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.vimeo.prototype.setVolume = function(vol) {
+  if (minplayer.players.base.prototype.setVolume.call(this, vol)) {
+    this.volume.set(vol);
+    this.player.api('setVolume', vol);
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#getVolume
+ */
+minplayer.players.vimeo.prototype.getVolume = function(callback) {
+  this.player.api('getVolume', function(vol) {
+    callback(vol);
+  });
+};
+
+/**
+ * @see minplayer.players.base#getDuration.
+ */
+minplayer.players.vimeo.prototype.getDuration = function(callback) {
+  if (this.isReady()) {
+    if (this.duration.value) {
+      callback(this.duration.value);
+    }
+    else {
+      this.player.api('getDuration', function(duration) {
+        callback(duration);
+      });
+    }
+  }
+};
diff --git a/public/admin/js/osmplayer/minplayer/src/minplayer.players.youtube.js b/public/admin/js/osmplayer/minplayer/src/minplayer.players.youtube.js
new file mode 100644
index 0000000000000000000000000000000000000000..edaf8b55b88a822d1bcbfde8e22325579b30f5d8
--- /dev/null
+++ b/public/admin/js/osmplayer/minplayer/src/minplayer.players.youtube.js
@@ -0,0 +1,376 @@
+/** The minplayer namespace. */
+var minplayer = minplayer || {};
+
+/** All the media player implementations */
+minplayer.players = minplayer.players || {};
+
+/**
+ * @constructor
+ * @extends minplayer.players.base
+ * @class The YouTube media player.
+ *
+ * @param {object} context The jQuery context.
+ * @param {object} options This components options.
+ * @param {object} queue The event queue to pass events around.
+ */
+minplayer.players.youtube = function(context, options, queue) {
+
+  /** The quality of the YouTube stream. */
+  this.quality = 'default';
+
+  // Derive from players base.
+  minplayer.players.base.call(this, context, options, queue);
+};
+
+/** Derive from minplayer.players.base. */
+minplayer.players.youtube.prototype = new minplayer.players.base();
+
+/** Reset the constructor. */
+minplayer.players.youtube.prototype.constructor = minplayer.players.youtube;
+
+/**
+ * @see minplayer.plugin.construct
+ * @this minplayer.players.youtube
+ */
+minplayer.players.youtube.prototype.construct = function() {
+
+  // Call the players.flash constructor.
+  minplayer.players.base.prototype.construct.call(this);
+
+  // Set the plugin name within the options.
+  this.options.pluginName = 'youtube';
+};
+
+/**
+ * @see minplayer.players.base#getPriority
+ * @return {number} The priority of this media player.
+ */
+minplayer.players.youtube.getPriority = function() {
+  return 10;
+};
+
+/**
+ * @see minplayer.players.base#canPlay
+ * @return {boolean} If this player can play this media type.
+ */
+minplayer.players.youtube.canPlay = function(file) {
+
+  // Check for the mimetype for youtube.
+  if (file.mimetype === 'video/youtube') {
+    return true;
+  }
+
+  // If the path is a YouTube path, then return true.
+  return (file.path.search(/^http(s)?\:\/\/(www\.)?youtube\.com/i) === 0);
+};
+
+/**
+ * Return the ID for a provided media file.
+ *
+ * @param {object} file A {@link minplayer.file} object.
+ * @return {string} The ID for the provided media.
+ */
+minplayer.players.youtube.getMediaId = function(file) {
+  var reg = /^http[s]?\:\/\/(www\.)?youtube\.com\/watch\?v=([a-zA-Z0-9_\-]+)/i;
+  if (file.path.search(reg) === 0) {
+    return file.path.match(reg)[2];
+  }
+  else {
+    return file.path;
+  }
+};
+
+/**
+ * Returns a preview image for this media player.
+ *
+ * @param {object} file A {@link minplayer.file} object.
+ * @param {string} type The type of image.
+ * @param {function} callback Called when the image is retrieved.
+ */
+minplayer.players.youtube.getImage = function(file, type, callback) {
+  type = (type == 'thumbnail') ? '1' : '0';
+  callback('http://img.youtube.com/vi/' + file.id + '/' + type + '.jpg');
+};
+
+/**
+ * Translates the player state for the YouTube API player.
+ *
+ * @param {number} playerState The YouTube player state.
+ */
+minplayer.players.youtube.prototype.setPlayerState = function(playerState) {
+  switch (playerState) {
+    case YT.PlayerState.CUED:
+      break;
+    case YT.PlayerState.BUFFERING:
+      this.onWaiting();
+      break;
+    case YT.PlayerState.PAUSED:
+      this.onPaused();
+      break;
+    case YT.PlayerState.PLAYING:
+      this.onPlaying();
+      break;
+    case YT.PlayerState.ENDED:
+      this.onComplete();
+      break;
+    default:
+      break;
+  }
+};
+
+/**
+ * Called when an error occurs.
+ *
+ * @param {string} event The onReady event that was triggered.
+ */
+minplayer.players.youtube.prototype.onReady = function(event) {
+  minplayer.players.base.prototype.onReady.call(this);
+  if (!this.options.autoplay) {
+    this.pause();
+  }
+  this.onLoaded();
+};
+
+/**
+ * Checks to see if this player can be found.
+ * @return {bool} TRUE - Player is found, FALSE - otherwise.
+ */
+minplayer.players.youtube.prototype.playerFound = function() {
+  var id = 'iframe#' + this.options.id + '-player.youtube-player';
+  var iframe = this.display.find(id);
+  return (iframe.length > 0);
+};
+
+/**
+ * Called when the player state changes.
+ *
+ * @param {object} event A JavaScript Event.
+ */
+minplayer.players.youtube.prototype.onPlayerStateChange = function(event) {
+  this.setPlayerState(event.data);
+};
+
+/**
+ * Called when the player quality changes.
+ *
+ * @param {string} newQuality The new quality for the change.
+ */
+minplayer.players.youtube.prototype.onQualityChange = function(newQuality) {
+  this.quality = newQuality.data;
+};
+
+/**
+ * Determines if the player should show the playloader.
+ *
+ * @param {string} preview The preview image.
+ * @return {bool} If this player implements its own playLoader.
+ */
+minplayer.players.youtube.prototype.hasPlayLoader = function(preview) {
+  return minplayer.hasTouch || !preview;
+};
+
+/**
+ * Determines if the player should show the controller.
+ *
+ * @return {bool} If this player implements its own playLoader.
+ */
+minplayer.players.youtube.prototype.hasController = function() {
+  return minplayer.isIDevice;
+};
+
+/**
+ * @see minplayer.players.base#create
+ * @return {object} The media player entity.
+ */
+minplayer.players.youtube.prototype.create = function() {
+  minplayer.players.base.prototype.create.call(this);
+
+  // Insert the YouTube iframe API player.
+  var tag = document.createElement('script');
+  tag.src = 'https://www.youtube.com/player_api';
+  var firstScriptTag = document.getElementsByTagName('script')[0];
+  firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
+
+  // Get the player ID.
+  this.playerId = this.options.id + '-player';
+
+  // Poll until the YouTube API is ready.
+  this.poll((function(player) {
+    return function() {
+      var ready = jQuery('#' + player.playerId).length > 0;
+      ready = ready && ('YT' in window);
+      ready = ready && (typeof YT.Player == 'function');
+      if (ready) {
+        // Determine the origin of this script.
+        jQuery('#' + player.playerId).addClass('youtube-player');
+        var origin = location.protocol;
+        origin += '//' + location.hostname;
+        origin += (location.port && ':' + location.port);
+
+        var playerVars = {};
+        if (minplayer.isIDevice) {
+          playerVars.origin = origin;
+        }
+        else {
+          playerVars = {
+            enablejsapi: minplayer.isIDevice ? 0 : 1,
+            origin: origin,
+            wmode: 'opaque',
+            controls: minplayer.isAndroid ? 1 : 0
+          };
+        }
+
+        // Create the player.
+        player.player = new YT.Player(player.playerId, {
+          height: '100%',
+          width: '100%',
+          frameborder: 0,
+          videoId: player.mediaFile.id,
+          playerVars: playerVars,
+          events: {
+            'onReady': function(event) {
+              player.onReady(event);
+            },
+            'onStateChange': function(event) {
+              player.onPlayerStateChange(event);
+            },
+            'onPlaybackQualityChange': function(newQuality) {
+              player.onQualityChange(newQuality);
+            },
+            'onError': function(errorCode) {
+              player.onError(errorCode);
+            }
+          }
+        });
+      }
+      return !ready;
+    };
+  })(this), 200);
+
+  // Return the player.
+  return jQuery(document.createElement('div')).attr({
+    id: this.playerId
+  });
+};
+
+/**
+ * @see minplayer.players.base#load
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.youtube.prototype.load = function(file) {
+  if (minplayer.players.base.prototype.load.call(this, file)) {
+    this.player.loadVideoById(file.id, 0, this.quality);
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#play
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.youtube.prototype.play = function() {
+  if (minplayer.players.base.prototype.play.call(this)) {
+    this.onWaiting();
+    this.player.playVideo();
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#pause
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.youtube.prototype.pause = function() {
+  if (minplayer.players.base.prototype.pause.call(this)) {
+    this.player.pauseVideo();
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#stop
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.youtube.prototype.stop = function() {
+  if (minplayer.players.base.prototype.stop.call(this)) {
+    this.player.stopVideo();
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#seek
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.youtube.prototype.seek = function(pos) {
+  if (minplayer.players.base.prototype.seek.call(this, pos)) {
+    this.onWaiting();
+    this.player.seekTo(pos, true);
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#setVolume
+ * @return {boolean} If this action was performed.
+ */
+minplayer.players.youtube.prototype.setVolume = function(vol) {
+  if (minplayer.players.base.prototype.setVolume.call(this, vol)) {
+    this.player.setVolume(vol * 100);
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * @see minplayer.players.base#getVolume
+ */
+minplayer.players.youtube.prototype.getVolume = function(callback) {
+  this.getValue('getVolume', callback);
+};
+
+/**
+ * @see minplayer.players.base#getDuration.
+ */
+minplayer.players.youtube.prototype.getDuration = function(callback) {
+  this.getValue('getDuration', callback);
+};
+
+/**
+ * @see minplayer.players.base#getCurrentTime
+ */
+minplayer.players.youtube.prototype.getCurrentTime = function(callback) {
+  this.getValue('getCurrentTime', callback);
+};
+
+/**
+ * @see minplayer.players.base#getBytesStart.
+ */
+minplayer.players.youtube.prototype.getBytesStart = function(callback) {
+  this.getValue('getVideoStartBytes', callback);
+};
+
+/**
+ * @see minplayer.players.base#getBytesLoaded.
+ */
+minplayer.players.youtube.prototype.getBytesLoaded = function(callback) {
+  this.getValue('getVideoBytesLoaded', callback);
+};
+
+/**
+ * @see minplayer.players.base#getBytesTotal.
+ */
+minplayer.players.youtube.prototype.getBytesTotal = function(callback) {
+  this.getValue('getVideoBytesTotal', callback);
+};
diff --git a/public/admin/js/osmplayer/minplayer/src/minplayer.plugin.js b/public/admin/js/osmplayer/minplayer/src/minplayer.plugin.js
new file mode 100644
index 0000000000000000000000000000000000000000..d3e9fa9141cca95dc7b666133ed4c051d4b4f282
--- /dev/null
+++ b/public/admin/js/osmplayer/minplayer/src/minplayer.plugin.js
@@ -0,0 +1,631 @@
+/** The minplayer namespace. */
+minplayer = minplayer || {};
+
+/** Static array to keep track of all plugins. */
+minplayer.plugins = minplayer.plugins || {};
+
+/** Static array to keep track of queues. */
+minplayer.queue = minplayer.queue || [];
+
+/** Mutex lock to keep multiple triggers from occuring. */
+minplayer.lock = false;
+
+/**
+ * @constructor
+ * @class The base class for all plugins.
+ *
+ * @param {string} name The name of this plugin.
+ * @param {object} context The jQuery context.
+ * @param {object} options This components options.
+ * @param {object} queue The event queue to pass events around.
+ */
+minplayer.plugin = function(name, context, options, queue) {
+
+  /** The name of this plugin. */
+  this.name = name;
+
+  /** The ready flag. */
+  this.pluginReady = false;
+
+  /** The options for this plugin. */
+  this.options = options || {};
+
+  /** The event queue. */
+  this.queue = queue || {};
+
+  /** Keep track of already triggered events. */
+  this.triggered = {};
+
+  /** Create a queue lock. */
+  this.lock = false;
+
+  // Only call the constructor if we have a context.
+  if (context) {
+
+    /** Say that we are active. */
+    this.active = true;
+
+    /** Keep track of the context. */
+    this.context = jQuery(context);
+
+    // Construct this plugin.
+    this.construct();
+  }
+};
+
+/**
+ * The constructor which is called once the context is set.
+ * Any class deriving from the plugin class should place all context
+ * dependant functionality within this function instead of the standard
+ * constructor function since it is called on object derivation as well
+ * as object creation.
+ */
+minplayer.plugin.prototype.construct = function() {
+
+  // Adds this as a plugin.
+  this.addPlugin();
+};
+
+/**
+ * Destructor.
+ */
+minplayer.plugin.prototype.destroy = function() {
+
+  // Unbind all events.
+  this.active = false;
+  this.unbind();
+};
+
+/**
+ * Creates a new plugin within this context.
+ *
+ * @param {string} name The name of the plugin you wish to create.
+ * @param {object} base The base object for this plugin.
+ * @param {object} context The context which you would like to create.
+ * @return {object} The new plugin object.
+ */
+minplayer.plugin.prototype.create = function(name, base, context) {
+  var plugin = null;
+
+  // Make sure we have a base object.
+  base = base || 'minplayer';
+  if (!window[base][name]) {
+    base = 'minplayer';
+  }
+
+  // Make sure there is a context.
+  context = context || this.display;
+
+  // See if this plugin exists within this object.
+  if (window[base][name]) {
+
+    // Set the plugin.
+    plugin = window[base][name];
+
+    // See if a template version of the plugin exists.
+    if (plugin[this.options.template]) {
+
+      plugin = plugin[this.options.template];
+    }
+
+    // Make sure the plugin is a function.
+    if (typeof plugin !== 'function') {
+      plugin = window['minplayer'][name];
+    }
+
+    // Make sure it is a function.
+    if (typeof plugin === 'function') {
+      return new plugin(context, this.options);
+    }
+  }
+
+  return null;
+};
+
+/**
+ * Plugins should call this method when they are ready.
+ */
+minplayer.plugin.prototype.ready = function() {
+
+  // Keep this plugin from triggering multiple ready events.
+  if (!this.pluginReady) {
+
+    // Set the ready flag.
+    this.pluginReady = true;
+
+    // Now trigger that I am ready.
+    this.trigger('ready');
+
+    // Check the queue.
+    this.checkQueue();
+  }
+};
+
+/**
+ * Returns if this component is valid.
+ *
+ * @return {boolean} TRUE if the plugin display is valid.
+ */
+minplayer.plugin.prototype.isValid = function() {
+  return !!this.options.id && this.active;
+};
+
+/**
+ * Adds a new plugin to this player.
+ *
+ * @param {string} name The name of this plugin.
+ * @param {object} plugin A new plugin object, derived from media.plugin.
+ */
+minplayer.plugin.prototype.addPlugin = function(name, plugin) {
+  name = name || this.name;
+  plugin = plugin || this;
+
+  // Make sure the plugin is valid.
+  if (plugin.isValid()) {
+
+    // If the plugins for this instance do not exist.
+    if (!minplayer.plugins[this.options.id]) {
+
+      // Initialize the plugins.
+      minplayer.plugins[this.options.id] = {};
+    }
+
+    if (!minplayer.plugins[this.options.id][name]) {
+
+      // Add the plugins array.
+      minplayer.plugins[this.options.id][name] = [];
+    }
+
+    // Add this plugin.
+    minplayer.plugins[this.options.id][name].push(plugin);
+
+    // Now check the queue for this plugin.
+    this.checkQueue(plugin);
+  }
+};
+
+/**
+ * Create a polling timer.
+ *
+ * @param {function} callback The function to call when you poll.
+ * @param {integer} interval The interval you would like to poll.
+ */
+minplayer.plugin.prototype.poll = function(callback, interval) {
+  setTimeout((function(context) {
+    return function callLater() {
+      if (callback.call(context)) {
+        setTimeout(callLater, interval);
+      }
+    };
+  })(this), interval);
+};
+
+/**
+ * Gets a plugin by name and calls callback when it is ready.
+ *
+ * @param {string} plugin The plugin of the plugin.
+ * @param {function} callback Called when the plugin is ready.
+ * @return {object} The plugin if no callback is provided.
+ */
+minplayer.plugin.prototype.get = function(plugin, callback) {
+
+  // If they pass just a callback, then return all plugins when ready.
+  if (typeof plugin === 'function') {
+    callback = plugin;
+    plugin = null;
+  }
+
+  // Return the minplayer.get equivalent.
+  return minplayer.get.call(this, this.options.id, plugin, callback);
+};
+
+/**
+ * Check the queue and execute it.
+ *
+ * @param {object} plugin The plugin object to check the queue against.
+ */
+minplayer.plugin.prototype.checkQueue = function(plugin) {
+
+  // Initialize our variables.
+  var q = null, i = 0, check = false, newqueue = [];
+
+  // Normalize the plugin variable.
+  plugin = plugin || this;
+
+  // Set the lock.
+  minplayer.lock = true;
+
+  // Iterate through all the queues.
+  var length = minplayer.queue.length;
+  for (i = 0; i < length; i++) {
+    if (minplayer.queue.hasOwnProperty(i)) {
+      // Get the queue.
+      q = minplayer.queue[i];
+
+      // Now check to see if this queue is about us.
+      check = !q.id && !q.plugin;
+      check |= (q.plugin == plugin.name);
+      check &= (!q.id || (q.id == this.options.id));
+
+      // If the check passes...
+      if (check) {
+        check = minplayer.bind.call(
+          q.context,
+          q.event,
+          this.options.id,
+          plugin.name,
+          q.callback
+        );
+      }
+
+      // Add the queue back if it doesn't check out.
+      if (!check) {
+
+        // Add this back to the queue.
+        newqueue.push(q);
+      }
+    }
+  }
+
+  // Set the old queue to the new queue.
+  minplayer.queue = newqueue;
+
+  // Release the lock.
+  minplayer.lock = false;
+};
+
+/**
+ * Trigger a media event.
+ *
+ * @param {string} type The event type.
+ * @param {object} data The event data object.
+ * @return {object} The plugin object.
+ */
+minplayer.plugin.prototype.trigger = function(type, data) {
+
+  // Don't trigger if this plugin is inactive.
+  if (!this.active) {
+    return this;
+  }
+
+  // Add this to our triggered array.
+  this.triggered[type] = data;
+
+  // Check to make sure the queue for this type exists.
+  if (this.queue.hasOwnProperty(type)) {
+
+    var i = 0, queue = {}, queuetype = this.queue[type];
+
+    // Iterate through all the callbacks in this queue.
+    for (i in queuetype) {
+
+      // Check to make sure the queue index exists.
+      if (queuetype.hasOwnProperty(i)) {
+
+        // Setup the event object, and call the callback.
+        queue = queuetype[i];
+        queue.callback({target: this, data: queue.data}, data);
+      }
+    }
+  }
+
+  // Return the plugin object.
+  return this;
+};
+
+/**
+ * Bind to a media event.
+ *
+ * @param {string} type The event type.
+ * @param {object} data The data to bind with the event.
+ * @param {function} fn The callback function.
+ * @return {object} The plugin object.
+ **/
+minplayer.plugin.prototype.bind = function(type, data, fn) {
+
+  // Only bind if active.
+  if (!this.active) {
+    return this;
+  }
+
+  // Allow the data to be the callback.
+  if (typeof data === 'function') {
+    fn = data;
+    data = null;
+  }
+
+  // You must bind to a specific event and have a callback.
+  if (!type || !fn) {
+    return;
+  }
+
+  // Initialize the queue for this type.
+  this.queue[type] = this.queue[type] || [];
+
+  // Unbind any existing equivalent events.
+  this.unbind(type, fn);
+
+  // Now add this event to the queue.
+  this.queue[type].push({
+    callback: fn,
+    data: data
+  });
+
+  // Now see if this event has already been triggered.
+  if (this.triggered.hasOwnProperty(type)) {
+
+    // Go ahead and trigger the event.
+    fn({target: this, data: data}, this.triggered[type]);
+  }
+
+  // Return the plugin.
+  return this;
+};
+
+/**
+ * Unbind a media event.
+ *
+ * @param {string} type The event type.
+ * @param {function} fn The callback function.
+ * @return {object} The plugin object.
+ **/
+minplayer.plugin.prototype.unbind = function(type, fn) {
+
+  // If this is locked then try again after 10ms.
+  if (this.lock) {
+    setTimeout((function(plugin) {
+      return function() {
+        plugin.unbind(type, fn);
+      };
+    })(this), 10);
+  }
+
+  // Set the lock.
+  this.lock = true;
+
+  // Get the queue type.
+  var queuetype = this.queue.hasOwnProperty(type) ? this.queue[type] : null;
+
+  if (!type) {
+    this.queue = {};
+  }
+  else if (!fn) {
+    this.queue[type] = [];
+  }
+  else if (queuetype) {
+    // Iterate through all the callbacks and search for equal callbacks.
+    var i = 0, queue = {};
+    for (i in queuetype) {
+      if (queuetype.hasOwnProperty(i)) {
+        if (queuetype[i].callback === fn) {
+          queue = this.queue[type].splice(i, 1);
+          delete queue;
+        }
+      }
+    }
+  }
+
+  // Reset the lock.
+  this.lock = false;
+
+  // Return the plugin.
+  return this;
+};
+
+/**
+ * Adds an item to the queue.
+ *
+ * @param {object} context The context which this is called within.
+ * @param {string} event The event to trigger on.
+ * @param {string} id The player ID.
+ * @param {string} plugin The name of the plugin.
+ * @param {function} callback Called when the event occurs.
+ */
+minplayer.addQueue = function(context, event, id, plugin, callback) {
+
+  // See if it is locked...
+  if (!minplayer.lock) {
+    minplayer.queue.push({
+      context: context,
+      id: id,
+      event: event,
+      plugin: plugin,
+      callback: callback
+    });
+  }
+  else {
+
+    // If so, then try again after 10 milliseconds.
+    setTimeout(function() {
+      minplayer.addQueue(context, id, event, plugin, callback);
+    }, 10);
+  }
+};
+
+/**
+ * Binds an event to a plugin instance, and if it doesn't exist, then caches
+ * it for a later time.
+ *
+ * @param {string} event The event to trigger on.
+ * @param {string} id The player ID.
+ * @param {string} plugin The name of the plugin.
+ * @param {function} callback Called when the event occurs.
+ * @return {boolean} If the bind was successful.
+ * @this The object in context who called this method.
+ */
+minplayer.bind = function(event, id, plugin, callback) {
+
+  // If no callback exists, then just return false.
+  if (!callback) {
+    return false;
+  }
+
+  // Get the plugins.
+  var plugins = minplayer.plugins;
+
+  // Determine the selected plugins.
+  var selected = [];
+
+  // Create a quick add.
+  var addSelected = function(id, plugin) {
+    if (plugins.hasOwnProperty(id) && plugins[id].hasOwnProperty(plugin)) {
+      var i = plugins[id][plugin].length;
+      while (i--) {
+        selected.push(plugins[id][plugin][i]);
+      }
+    }
+  };
+
+  // If they provide id && plugin
+  if (id && plugin) {
+    addSelected(id, plugin);
+  }
+
+  // If they provide no id but a plugin.
+  else if (!id && plugin) {
+    for (var id in plugins) {
+      addSelected(id, plugin);
+    }
+  }
+
+  // If they provide an id but no plugin.
+  else if (id && !plugin && plugins[id]) {
+    for (var plugin in plugins[id]) {
+      addSelected(id, plugin);
+    }
+  }
+
+  // If they provide niether an id or a plugin.
+  else if (!id && !plugin) {
+    for (var id in plugins) {
+      for (var plugin in plugins[id]) {
+        addSelected(id, plugin);
+      }
+    }
+  }
+
+  // Iterate through the selected plugins and bind.
+  var i = selected.length;
+  while (i--) {
+    selected[i].bind(event, (function(context) {
+      return function(event) {
+        callback.call(context, event.target);
+      };
+    })(this));
+  }
+
+  // Add it to the queue for post bindings...
+  minplayer.addQueue(this, event, id, plugin, callback);
+
+  // Return that this wasn't handled.
+  return (selected.length > 0);
+};
+
+/**
+ * The main API for minPlayer.
+ *
+ * Provided that this function takes three parameters, there are 8 different
+ * ways to use this api.
+ *
+ *   id (0x100) - You want a specific player.
+ *   plugin (0x010) - You want a specific plugin.
+ *   callback (0x001) - You only want it when it is ready.
+ *
+ *   000 - You want all plugins from all players, ready or not.
+ *
+ *          var plugins = minplayer.get();
+ *
+ *   001 - You want all plugins from all players, but only when ready.
+ *
+ *          minplayer.get(function(plugin) {
+ *            // Code goes here.
+ *          });
+ *
+ *   010 - You want a specific plugin from all players, ready or not...
+ *
+ *          var medias = minplayer.get(null, 'media');
+ *
+ *   011 - You want a specific plugin from all players, but only when ready.
+ *
+ *          minplayer.get('player', function(player) {
+ *            // Code goes here.
+ *          });
+ *
+ *   100 - You want all plugins from a specific player, ready or not.
+ *
+ *          var plugins = minplayer.get('player_id');
+ *
+ *   101 - You want all plugins from a specific player, but only when ready.
+ *
+ *          minplayer.get('player_id', null, function(plugin) {
+ *            // Code goes here.
+ *          });
+ *
+ *   110 - You want a specific plugin from a specific player, ready or not.
+ *
+ *          var plugin = minplayer.get('player_id', 'media');
+ *
+ *   111 - You want a specific plugin from a specific player, only when ready.
+ *
+ *          minplayer.get('player_id', 'media', function(media) {
+ *            // Code goes here.
+ *          });
+ *
+ * @this The context in which this function was called.
+ * @param {string} id The ID of the widget to get the plugins from.
+ * @param {string} plugin The name of the plugin.
+ * @param {function} callback Called when the plugin is ready.
+ * @return {object} The plugin object if it is immediately available.
+ */
+minplayer.get = function(id, plugin, callback) {
+
+  // Normalize the arguments for a better interface.
+  if (typeof id === 'function') {
+    callback = id;
+    plugin = id = null;
+  }
+
+  if (typeof plugin === 'function') {
+    callback = plugin;
+    plugin = id;
+    id = null;
+  }
+
+  // Make sure the callback is a callback.
+  callback = (typeof callback === 'function') ? callback : null;
+
+  // If a callback was provided, then just go ahead and bind.
+  if (callback) {
+    minplayer.bind.call(this, 'ready', id, plugin, callback);
+    return;
+  }
+
+  // Get the plugins.
+  var plugins = minplayer.plugins;
+
+  // 0x000
+  if (!id && !plugin && !callback) {
+    return plugins;
+  }
+  // 0x100
+  else if (id && !plugin && !callback) {
+    return plugins[id];
+  }
+  // 0x110
+  else if (id && plugin && !callback) {
+    return plugins[id][plugin];
+  }
+  // 0x010
+  else if (!id && plugin && !callback) {
+    var plugin_types = [];
+    for (var id in plugins) {
+      if (plugins.hasOwnProperty(id) && plugins[id].hasOwnProperty(plugin)) {
+        var i = plugins[id][plugin].length;
+        while (i--) {
+          plugin_types.push(plugins[id][plugin][i]);
+        }
+      }
+    }
+    return plugin_types;
+  }
+};
diff --git a/public/admin/js/osmplayer/minplayer/stylesheets/pygment_trac.css b/public/admin/js/osmplayer/minplayer/stylesheets/pygment_trac.css
new file mode 100644
index 0000000000000000000000000000000000000000..e65cedff6e7f3938aa740bd0db3b0177fa4512ef
--- /dev/null
+++ b/public/admin/js/osmplayer/minplayer/stylesheets/pygment_trac.css
@@ -0,0 +1,70 @@
+.highlight .hll { background-color: #ffffcc }
+.highlight  { background: #f0f3f3; }
+.highlight .c { color: #0099FF; font-style: italic } /* Comment */
+.highlight .err { color: #AA0000; background-color: #FFAAAA } /* Error */
+.highlight .k { color: #006699; font-weight: bold } /* Keyword */
+.highlight .o { color: #555555 } /* Operator */
+.highlight .cm { color: #0099FF; font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: #009999 } /* Comment.Preproc */
+.highlight .c1 { color: #0099FF; font-style: italic } /* Comment.Single */
+.highlight .cs { color: #0099FF; font-weight: bold; font-style: italic } /* Comment.Special */
+.highlight .gd { background-color: #FFCCCC; border: 1px solid #CC0000 } /* Generic.Deleted */
+.highlight .ge { font-style: italic } /* Generic.Emph */
+.highlight .gr { color: #FF0000 } /* Generic.Error */
+.highlight .gh { color: #003300; font-weight: bold } /* Generic.Heading */
+.highlight .gi { background-color: #CCFFCC; border: 1px solid #00CC00 } /* Generic.Inserted */
+.highlight .go { color: #AAAAAA } /* Generic.Output */
+.highlight .gp { color: #000099; font-weight: bold } /* Generic.Prompt */
+.highlight .gs { font-weight: bold } /* Generic.Strong */
+.highlight .gu { color: #003300; font-weight: bold } /* Generic.Subheading */
+.highlight .gt { color: #99CC66 } /* Generic.Traceback */
+.highlight .kc { color: #006699; font-weight: bold } /* Keyword.Constant */
+.highlight .kd { color: #006699; font-weight: bold } /* Keyword.Declaration */
+.highlight .kn { color: #006699; font-weight: bold } /* Keyword.Namespace */
+.highlight .kp { color: #006699 } /* Keyword.Pseudo */
+.highlight .kr { color: #006699; font-weight: bold } /* Keyword.Reserved */
+.highlight .kt { color: #007788; font-weight: bold } /* Keyword.Type */
+.highlight .m { color: #FF6600 } /* Literal.Number */
+.highlight .s { color: #CC3300 } /* Literal.String */
+.highlight .na { color: #330099 } /* Name.Attribute */
+.highlight .nb { color: #336666 } /* Name.Builtin */
+.highlight .nc { color: #00AA88; font-weight: bold } /* Name.Class */
+.highlight .no { color: #336600 } /* Name.Constant */
+.highlight .nd { color: #9999FF } /* Name.Decorator */
+.highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */
+.highlight .ne { color: #CC0000; font-weight: bold } /* Name.Exception */
+.highlight .nf { color: #CC00FF } /* Name.Function */
+.highlight .nl { color: #9999FF } /* Name.Label */
+.highlight .nn { color: #00CCFF; font-weight: bold } /* Name.Namespace */
+.highlight .nt { color: #330099; font-weight: bold } /* Name.Tag */
+.highlight .nv { color: #003333 } /* Name.Variable */
+.highlight .ow { color: #000000; font-weight: bold } /* Operator.Word */
+.highlight .w { color: #bbbbbb } /* Text.Whitespace */
+.highlight .mf { color: #FF6600 } /* Literal.Number.Float */
+.highlight .mh { color: #FF6600 } /* Literal.Number.Hex */
+.highlight .mi { color: #FF6600 } /* Literal.Number.Integer */
+.highlight .mo { color: #FF6600 } /* Literal.Number.Oct */
+.highlight .sb { color: #CC3300 } /* Literal.String.Backtick */
+.highlight .sc { color: #CC3300 } /* Literal.String.Char */
+.highlight .sd { color: #CC3300; font-style: italic } /* Literal.String.Doc */
+.highlight .s2 { color: #CC3300 } /* Literal.String.Double */
+.highlight .se { color: #CC3300; font-weight: bold } /* Literal.String.Escape */
+.highlight .sh { color: #CC3300 } /* Literal.String.Heredoc */
+.highlight .si { color: #AA0000 } /* Literal.String.Interpol */
+.highlight .sx { color: #CC3300 } /* Literal.String.Other */
+.highlight .sr { color: #33AAAA } /* Literal.String.Regex */
+.highlight .s1 { color: #CC3300 } /* Literal.String.Single */
+.highlight .ss { color: #FFCC33 } /* Literal.String.Symbol */
+.highlight .bp { color: #336666 } /* Name.Builtin.Pseudo */
+.highlight .vc { color: #003333 } /* Name.Variable.Class */
+.highlight .vg { color: #003333 } /* Name.Variable.Global */
+.highlight .vi { color: #003333 } /* Name.Variable.Instance */
+.highlight .il { color: #FF6600 } /* Literal.Number.Integer.Long */
+
+.type-csharp .highlight .k { color: #0000FF }
+.type-csharp .highlight .kt { color: #0000FF }
+.type-csharp .highlight .nf { color: #000000; font-weight: normal }
+.type-csharp .highlight .nc { color: #2B91AF }
+.type-csharp .highlight .nn { color: #000000 }
+.type-csharp .highlight .s { color: #A31515 }
+.type-csharp .highlight .sc { color: #A31515 }
diff --git a/public/admin/js/osmplayer/minplayer/stylesheets/stylesheet.css b/public/admin/js/osmplayer/minplayer/stylesheets/stylesheet.css
new file mode 100644
index 0000000000000000000000000000000000000000..418975160d716e4d17c71f5ad2389fd7742936e9
--- /dev/null
+++ b/public/admin/js/osmplayer/minplayer/stylesheets/stylesheet.css
@@ -0,0 +1,431 @@
+/*******************************************************************************
+Slate Theme for Github Pages
+by Jason Costello, @jsncostello
+*******************************************************************************/
+
+@import url(pygment_trac.css);
+
+/*******************************************************************************
+MeyerWeb Reset
+*******************************************************************************/
+
+html, body, div, span, applet, object, iframe,
+h1, h2, h3, h4, h5, h6, p, blockquote, pre,
+a, abbr, acronym, address, big, cite, code,
+del, dfn, em, img, ins, kbd, q, s, samp,
+small, strike, strong, sub, sup, tt, var,
+b, u, i, center,
+dl, dt, dd, ol, ul, li,
+fieldset, form, label, legend,
+table, caption, tbody, tfoot, thead, tr, th, td,
+article, aside, canvas, details, embed,
+figure, figcaption, footer, header, hgroup,
+menu, nav, output, ruby, section, summary,
+time, mark, audio, video {
+  margin: 0;
+  padding: 0;
+  border: 0;
+  font: inherit;
+  vertical-align: baseline;
+}
+
+/* HTML5 display-role reset for older browsers */
+article, aside, details, figcaption, figure,
+footer, header, hgroup, menu, nav, section {
+  display: block;
+}
+
+ol, ul {
+  list-style: none;
+}
+
+blockquote, q {
+}
+
+table {
+  border-collapse: collapse;
+  border-spacing: 0;
+}
+
+a:focus {
+  outline: none;
+}
+
+/*******************************************************************************
+Theme Styles
+*******************************************************************************/
+
+body {
+  box-sizing: border-box;
+  color:#373737;
+  background: #212121;
+  font-size: 16px;
+  font-family: 'Myriad Pro', Calibri, Helvetica, Arial, sans-serif;
+  line-height: 1.5;
+  -webkit-font-smoothing: antialiased;
+}
+
+h1, h2, h3, h4, h5, h6 {
+  margin: 10px 0;
+  font-weight: 700;
+  color:#222222;
+  font-family: 'Lucida Grande', 'Calibri', Helvetica, Arial, sans-serif;
+  letter-spacing: -1px;
+}
+
+h1 {
+  font-size: 36px;
+  font-weight: 700;
+}
+
+h2 {
+  padding-bottom: 10px;
+  font-size: 32px;
+  background: url('../images/bg_hr.png') repeat-x bottom;
+}
+
+h3 {
+  font-size: 24px;
+}
+
+h4 {
+  font-size: 21px;
+}
+
+h5 {
+  font-size: 18px;
+}
+
+h6 {
+  font-size: 16px;
+}
+
+p {
+  margin: 10px 0 15px 0;
+}
+
+footer p {
+  color: #f2f2f2;
+}
+
+a {
+  text-decoration: none;
+  color: #007edf;
+  text-shadow: none;
+
+  transition: color 0.5s ease;
+  transition: text-shadow 0.5s ease;
+  -webkit-transition: color 0.5s ease;
+  -webkit-transition: text-shadow 0.5s ease;
+  -moz-transition: color 0.5s ease;
+  -moz-transition: text-shadow 0.5s ease;
+  -o-transition: color 0.5s ease;
+  -o-transition: text-shadow 0.5s ease;
+  -ms-transition: color 0.5s ease;
+  -ms-transition: text-shadow 0.5s ease;
+}
+
+#main_content a:hover {
+  color: #0069ba;
+  text-shadow: #0090ff 0px 0px 2px;
+}
+
+footer a:hover {
+  color: #43adff;
+  text-shadow: #0090ff 0px 0px 2px;
+}
+
+em {
+  font-style: italic;
+}
+
+strong {
+  font-weight: bold;
+}
+
+img {
+  position: relative;
+  margin: 0 auto;
+  max-width: 739px;
+  padding: 5px;
+  margin: 10px 0 10px 0;
+  border: 1px solid #ebebeb;
+
+  box-shadow: 0 0 5px #ebebeb;
+  -webkit-box-shadow: 0 0 5px #ebebeb;
+  -moz-box-shadow: 0 0 5px #ebebeb;
+  -o-box-shadow: 0 0 5px #ebebeb;
+  -ms-box-shadow: 0 0 5px #ebebeb;
+}
+
+pre, code {
+  width: 100%;
+  color: #222;
+  background-color: #fff;
+
+  font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace;
+  font-size: 14px;
+
+  border-radius: 2px;
+  -moz-border-radius: 2px;
+  -webkit-border-radius: 2px;
+
+
+
+}
+
+pre {
+  width: 100%;
+  padding: 10px;
+  box-shadow: 0 0 10px rgba(0,0,0,.1);
+  overflow: auto;
+}
+
+code {
+  padding: 3px;
+  margin: 0 3px;
+  box-shadow: 0 0 10px rgba(0,0,0,.1);
+}
+
+pre code {
+  display: block;
+  box-shadow: none;
+}
+
+blockquote {
+  color: #666;
+  margin-bottom: 20px;
+  padding: 0 0 0 20px;
+  border-left: 3px solid #bbb;
+}
+
+ul, ol, dl {
+  margin-bottom: 15px
+}
+
+ul li {
+  list-style: inside;
+  padding-left: 20px;
+}
+
+ol li {
+  list-style: decimal inside;
+  padding-left: 20px;
+}
+
+dl dt {
+  font-weight: bold;
+}
+
+dl dd {
+  padding-left: 20px;
+  font-style: italic;
+}
+
+dl p {
+  padding-left: 20px;
+  font-style: italic;
+}
+
+hr {
+  height: 1px;
+  margin-bottom: 5px;
+  border: none;
+  background: url('../images/bg_hr.png') repeat-x center;
+}
+
+table {
+  border: 1px solid #373737;
+  margin-bottom: 20px;
+  text-align: left;
+ }
+
+th {
+  font-family: 'Lucida Grande', 'Helvetica Neue', Helvetica, Arial, sans-serif;
+  padding: 10px;
+  background: #373737;
+  color: #fff;
+ }
+
+td {
+  padding: 10px;
+  border: 1px solid #373737;
+ }
+
+form {
+  background: #f2f2f2;
+  padding: 20px;
+}
+
+img {
+  width: 100%;
+  max-width: 100%;
+}
+
+/*******************************************************************************
+Full-Width Styles
+*******************************************************************************/
+
+.outer {
+  width: 100%;
+}
+
+.inner {
+  position: relative;
+  max-width: 640px;
+  padding: 20px 10px;
+  margin: 0 auto;
+}
+
+#forkme_banner {
+  display: block;
+  position: absolute;
+  top:0;
+  right: 10px;
+  z-index: 10;
+  padding: 10px 50px 10px 10px;
+  color: #fff;
+  background: url('../images/blacktocat.png') #0090ff no-repeat 95% 50%;
+  font-weight: 700;
+  box-shadow: 0 0 10px rgba(0,0,0,.5);
+  border-bottom-left-radius: 2px;
+  border-bottom-right-radius: 2px;
+}
+
+#header_wrap {
+  background: #212121;
+  background: -moz-linear-gradient(top, #373737, #212121);
+  background: -webkit-linear-gradient(top, #373737, #212121);
+  background: -ms-linear-gradient(top, #373737, #212121);
+  background: -o-linear-gradient(top, #373737, #212121);
+  background: linear-gradient(top, #373737, #212121);
+}
+
+#header_wrap .inner {
+  padding: 50px 10px 30px 10px;
+}
+
+#project_title {
+  margin: 0;
+  color: #fff;
+  font-size: 42px;
+  font-weight: 700;
+  text-shadow: #111 0px 0px 10px;
+}
+
+#project_tagline {
+  color: #fff;
+  font-size: 24px;
+  font-weight: 300;
+  background: none;
+  text-shadow: #111 0px 0px 10px;
+}
+
+#downloads {
+  position: absolute;
+  width: 210px;
+  z-index: 10;
+  bottom: -40px;
+  right: 0;
+  height: 70px;
+  background: url('../images/icon_download.png') no-repeat 0% 90%;
+}
+
+.zip_download_link {
+  display: block;
+  float: right;
+  width: 90px;
+  height:70px;
+  text-indent: -5000px;
+  overflow: hidden;
+  background: url(../images/sprite_download.png) no-repeat bottom left;
+}
+
+.tar_download_link {
+  display: block;
+  float: right;
+  width: 90px;
+  height:70px;
+  text-indent: -5000px;
+  overflow: hidden;
+  background: url(../images/sprite_download.png) no-repeat bottom right;
+  margin-left: 10px;
+}
+
+.zip_download_link:hover {
+  background: url(../images/sprite_download.png) no-repeat top left;
+}
+
+.tar_download_link:hover {
+  background: url(../images/sprite_download.png) no-repeat top right;
+}
+
+#main_content_wrap {
+  background: #f2f2f2;
+  border-top: 1px solid #111;
+  border-bottom: 1px solid #111;
+}
+
+#main_content {
+  padding-top: 40px;
+}
+
+#footer_wrap {
+  background: #212121;
+}
+
+
+
+/*******************************************************************************
+Small Device Styles
+*******************************************************************************/
+
+@media screen and (max-width: 480px) {
+  body {
+    font-size:14px;
+  }
+
+  #downloads {
+    display: none;
+  }
+
+  .inner {
+    min-width: 320px;
+    max-width: 480px;
+  }
+
+  #project_title {
+  font-size: 32px;
+  }
+
+  h1 {
+    font-size: 28px;
+  }
+
+  h2 {
+    font-size: 24px;
+  }
+
+  h3 {
+    font-size: 21px;
+  }
+
+  h4 {
+    font-size: 18px;
+  }
+
+  h5 {
+    font-size: 14px;
+  }
+
+  h6 {
+    font-size: 12px;
+  }
+
+  code, pre {
+    min-width: 320px;
+    max-width: 480px;
+    font-size: 11px;
+  }
+
+}
diff --git a/public/admin/js/osmplayer/minplayer/templates/default/css/images/loader.gif b/public/admin/js/osmplayer/minplayer/templates/default/css/images/loader.gif
new file mode 100644
index 0000000000000000000000000000000000000000..5e2d16730415c52b18d085af4b497b6f9d009666
Binary files /dev/null and b/public/admin/js/osmplayer/minplayer/templates/default/css/images/loader.gif differ
diff --git a/public/admin/js/osmplayer/minplayer/templates/default/css/minplayer_default.css b/public/admin/js/osmplayer/minplayer/templates/default/css/minplayer_default.css
new file mode 100644
index 0000000000000000000000000000000000000000..dd0c486035258b9447cc20fc5251d24267446cbe
--- /dev/null
+++ b/public/admin/js/osmplayer/minplayer/templates/default/css/minplayer_default.css
@@ -0,0 +1,436 @@
+/* base styles */
+.minplayer-default {
+  position: relative;
+  font-family:"Trebuchet MS", Helvetica, sans-serif;
+  -moz-box-shadow:0px 5px 10px #333;/*no-important moz*/
+  -webkit-box-shadow:0px 5px 10px #333;/*no-important chrome*/
+}
+
+.player-ui .minplayer-default-error {
+  display:none;
+  color: #eee;
+  position: absolute;
+  top: 80%;
+  left: 50%;
+  width: 320px;
+  height: 40px;
+  line-height: 40px;
+  margin: -20px 0 0 -160px;
+  text-align: center;
+  vertical-align: center;
+  border: none;
+  z-index:1000;
+  opacity: 0.9;
+  border-radius: 10px;
+  -webkit-border-radius: 10px;
+  -moz-border-radius: 10px;
+  background: rgba(23, 35, 34, 0.9);
+  box-shadow: 2px 2px 4px #000;
+  -webkit-box-shadow: 2px 2px 4px #000;
+  -moz-box-shadow: 2px 2px 4px #000;
+}
+
+.player-ui .minplayer-default-display {
+  width:100%;
+  height:100%;
+}
+
+.player-ui .minplayer-default-display video {
+  width: 100%;
+  height: 100%;
+}
+
+.player-ui .minplayer-default-preview {
+  width:100%;
+  height:100%;
+  position:absolute;
+  z-index:1;
+}
+
+.player-ui .minplayer-default-loader-wrapper {
+  width:100%;
+  height:100%;
+  position:absolute;
+  z-index:2;
+  background: rgb(0, 0, 0);
+  background: rgba(0, 0, 0, 0.3);
+  filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#55000000, endColorstr=#55000000);
+  -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#55000000, endColorstr=#55000000)";
+}
+
+.player-ui .minplayer-default-loader {
+  width:42px;
+  height:10px;
+  position: absolute;
+  z-index: 4;
+  top: 50%;
+  left: 50%;
+  margin: -5px 0 0 -21px;
+  text-align:center;
+  vertical-align:center;
+  background: url(images/loader.gif) no-repeat;
+}
+
+/* Big play button */
+.player-ui .minplayer-default-big-play {
+  position: absolute;
+  top: 50%;
+  left: 50%;
+  width: 80px;
+  height: 80px;
+  margin: -40px 0 0 -40px;
+  text-align: center;
+  vertical-align: center;
+  cursor: pointer !important;
+  border: none;
+  opacity: 0.9;
+  z-index:3;
+  border-radius: 10px;
+  -webkit-border-radius: 10px;
+  -moz-border-radius: 10px;
+  background: rgba(23, 35, 34, 0.746094);
+  box-shadow: 2px 2px 4px #000;
+  -webkit-box-shadow: 2px 2px 4px #000;
+  -moz-box-shadow: 2px 2px 4px #000;
+}
+
+.player-ui .minplayer-default-big-play span {
+  margin: 22px 0 0 48px;
+  border-left: 36px solid white;
+  border-top: 18px solid transparent;
+  border-bottom: 18px solid transparent;
+}
+
+.player-ui .minplayer-default-big-play span {
+  display: block;
+  font-size: 0;
+  line-height: 0;
+  width: 0;
+  height: 0;
+  margin: 20px 0 0 23px;
+  border-left: 40px solid white;
+  border-top: 20px solid transparent;
+  border-bottom: 20px solid transparent;
+}
+
+.player-ui .minplayer-default.fullscreen, .player-ui .minplayer-default.fullscreen .minplayer-default-display, .player-ui .minplayer-default.fullscreen .minplayer-default-loader-wrapper {
+  position: fixed;
+  left: 0;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  overflow: hidden;
+  z-index:1000;
+  width: 100% !important;
+  height: 100% !important;
+}
+
+.player-ui .minplayer-default.fullscreen .minplayer-default-play-loader {
+  z-index:1001;
+}
+
+.player-ui .minplayer-default-controls {
+  position: absolute;
+  display: block;
+  z-index:3;
+  bottom:0px;
+  left:0px;
+  right:0px;
+  height:30px;
+}
+
+.player-ui .minplayer-default-controls-left {
+  float:left;
+  width:29px;
+  margin: 3px;
+  border-right:1px solid #888;
+}
+
+.player-ui .minplayer-default.fullscreen .minplayer-default-controls-left {
+  width:40px;
+  border:none;
+}
+
+.player-ui .minplayer-default-controls-right {
+  float:right;
+  width:120px;
+  height:30px;
+  margin: 3px;
+}
+
+.player-ui .minplayer-default.fullscreen .minplayer-default-controls-right {
+  width:110px;
+}
+
+.player-ui .minplayer-default-controls-mid {
+  position:absolute;
+  left:40px;
+  right:130px;
+  height:30px;
+  margin: 3px;
+}
+
+.player-ui .minplayer-default.fullscreen .minplayer-default-controls-mid {
+  left:50px;
+}
+
+.player-ui .minplayer-default-play, .minplayer-default-volume, .player-ui .minplayer-default-timer, .player-ui .minplayer-default-mute, .player-ui .minplayer-default-unmute {
+  float: left;
+}
+
+.player-ui .minplayer-default-play, .minplayer-default-fullscreen, .minplayer-default-mute, .minplayer-default-unmute {
+  cursor: pointer;
+}
+
+.player-ui .minplayer-default-timer {
+  cursor: default;
+}
+
+/* play, pause */
+.player-ui .minplayer-default-button {
+  display: block;
+  width: 24px;
+  height: 24px;
+  opacity: 0.7;
+  -moz-transition: all 0.2s ease-in-out; /* Firefox */
+  -webkit-transition: all 0.2s ease-in-out; /* Safari and Chrome */
+  -o-transition: all 0.2s ease-in-out;  /* Opera */
+  transition: all 0.2s ease-in-out;
+}
+
+.player-ui .minplayer-default-button:hover {
+  opacity: 1;
+}
+
+.player-ui .minplayer-default-button span {
+  margin: 4px 0 0 4px;
+}
+
+.player-ui .minplayer-default-pause {
+  display:none;
+}
+
+/* seek */
+.player-ui .minplayer-default-seek {
+  position:relative;
+  height: 10px;
+  margin-top: 7px;
+  -moz-border-radius:4px;
+  -webkit-border-radius:4px;
+  border-radius:4px;
+  background: #535353;
+  background-image: -moz-linear-gradient(top, #535353, #333333);
+  background-image: -webkit-gradient(linear,left top,left bottom,color-stop(0, #535353),color-stop(1, #333333));
+  box-shadow: inset 0 -3px 3px #333333;
+}
+
+.player-ui .minplayer-default-seek .ui-slider-handle {
+  position: absolute;
+  width: 16px;
+  height: 16px;
+  border: 1px solid #333;
+  z-index:20;
+  -moz-border-radius:10px;
+  -webkit-border-radius:10px;
+  border-radius:10px;
+  background: #e6e6e6;
+  background-image: -moz-linear-gradient(top, #e6e6e6, #d5d5d5);
+  background-image: -webkit-gradient(linear,left top,left bottom,color-stop(0, #e6e6e6),color-stop(1, #d5d5d5));
+  box-shadow: inset 0 -3px 3px #d5d5d5;
+}
+
+.player-ui .minplayer-default-seek .ui-slider-handle.ui-state-hover {
+  background: #fff;
+}
+
+.player-ui .minplayer-default-seek .ui-slider-range {
+  position: absolute;
+  height: 10px;
+  -moz-border-radius:15px;
+  -webkit-border-radius:15px;
+  z-index:10px;
+  border-radius:15px;
+}
+
+.player-ui .minplayer-default-progress {
+  position: absolute;
+  width:0px;
+  height:10px;
+  -moz-border-radius:15px;
+  -webkit-border-radius:15px;
+  z-index:8px;
+  border-radius:15px;
+  border: 0 !important;
+}
+
+/* timer */
+.player-ui .minplayer-default-timer {
+  position:relative;
+  height: 22px;
+  float:left;
+  padding-top:3px;
+  padding-right:6px;
+  font-size: 16px;
+  font-weight: bold;
+  border-right:1px solid #888;
+}
+
+.player-ui .minplayer-default.fullscreen .minplayer-default-timer {
+  border:none;
+}
+
+/* volume */
+.player-ui .minplayer-default-volume {
+  position: absolute;
+  right:38px;
+  bottom:1px;
+  overflow: hidden;
+  width: 26px;
+  height: 26px;
+  -moz-transition: all 0.1s ease-in-out; /* Firefox */
+  -webkit-transition: all 0.1s ease-in-out; /* Safari and Chrome */
+  -o-transition: all 0.2s ease-in-out;  /* Opera */
+  transition: all 0.1s ease-in-out;
+}
+
+.player-ui .minplayer-default.fullscreen .minplayer-default-volume {
+  right:44px;
+  bottom:12px;
+}
+
+.player-ui .minplayer-default-volume:hover {
+  height: 135px;
+}
+
+
+.player-ui .minplayer-default-volume:hover .minplayer-default-volume-slider {
+  position: relative;
+  visibility: visible;
+  opacity: 1;
+}
+
+.player-ui .minplayer-default-volume-slider {
+  position: relative;
+  height: 100px;
+  width: 7px;
+  left: 8px;
+  visiblity: hidden;
+  opacity: 0;
+  border: 1px solid #444;
+  -moz-border-radius:15px;
+  -webkit-border-radius:15px;
+  border-radius:15px;
+  -moz-transition: all 0.1s ease-in-out; /* Firefox */
+  -webkit-transition: all 0.1s ease-in-out; /* Safari and Chrome */
+  -o-transition: all 0.1s ease-in-out;  /* Opera */
+  transition: all 0.1s ease-in-out;
+}
+
+.player-ui .minplayer-default-volume-slider .ui-slider-handle {
+  position: absolute;
+  z-index: 20;
+  width: 12px;
+  height: 12px;
+  left: -4px;
+  margin-bottom:-0.6em;
+  margin-left:0;
+  border: 1px solid #333;
+  -moz-border-radius:10px;
+  -webkit-border-radius:10px;
+  border-radius:10px;
+  background: #e6e6e6;
+  background-image: -moz-linear-gradient(top, #e6e6e6, #d5d5d5);
+  background-image: -webkit-gradient(linear,left top,left bottom,color-stop(0, #e6e6e6),color-stop(1, #d5d5d5));
+  box-shadow: inset 0 3px 3px #d5d5d5;
+}
+
+.player-ui .minplayer-default-volume-slider .ui-slider-handle.ui-state-hover {
+  background: #fff;
+}
+
+.player-ui .minplayer-default-volume-slider .ui-slider-range {
+  position: absolute;
+  bottom: 0;
+  left: 0;
+  width: 100%;
+  z-index: 1;
+  -moz-border-radius:15px;
+  -webkit-border-radius:15px;
+  border-radius:15px;
+}
+
+/* volume button */
+.player-ui .minplayer-default-volume-mute, .player-ui .minplayer-default-volume-unmute {
+  position: absolute;
+  bottom: 0px;
+}
+
+.player-ui .minplayer-default-volume-unmute {
+  display: none;
+}
+
+/* Fullscreen button */
+.player-ui .minplayer-default-fullscreen {
+  position: absolute;
+  right:6px;
+  bottom:7px;
+  width: 22px;
+  height: 14px;
+}
+
+.player-ui .minplayer-default.fullscreen .minplayer-default-fullscreen {
+  right:14px;
+  bottom:16px;
+}
+
+.player-ui .minplayer-default-fullscreen-inner, .player-ui .minplayer-default.fullscreen .minplayer-default-fullscreen:hover .minplayer-default-fullscreen-inner {
+  position:absolute;
+  bottom:0;
+  width:16px;
+  height:8px;
+  -moz-transition: all 0.1s ease-in-out; /* Firefox */
+  -webkit-transition: all 0.1s ease-in-out; /* Safari and Chrome */
+  -o-transition: all 0.1s ease-in-out;  /* Opera */
+  transition: all 0.1s ease-in-out;
+}
+
+.player-ui .minplayer-default-fullscreen:hover .minplayer-default-fullscreen-inner, .player-ui .minplayer-default.fullscreen .minplayer-default-fullscreen-inner {
+  width:20px;
+  height:12px;
+}
+
+.player-ui .minplayer-default.fullscreen .minplayer-default-controls {
+  position: absolute;
+  z-index:1002;
+  width:500px;
+  left: 50%;
+  bottom:10px;
+  margin: 0 0 0 -260px;
+  padding: 10px;
+  border: 1px solid #2E2E2E;
+  -moz-border-radius: 5px; /* FF1+ */
+  -webkit-border-radius: 5px; /* Saf3+, Chrome */
+  border-radius: 5px; /* Opera 10.5, IE 9 */
+  -moz-transition: all 0.1s ease-in-out; /* Firefox */
+  -webkit-transition: all 0.1s ease-in-out; /* Safari and Chrome */
+  -o-transition: all 0.1s ease-in-out;  /* Opera */
+  transition: all 0.1s ease-in-out;
+}
+
+.player-ui .minplayer-default-logo {
+  z-index: 200;
+  line-height: 0px;
+  position: absolute;
+  bottom: 3px;
+  left: 3px;
+}
+
+.player-ui .minplayer-default.fullscreen .minplayer-default-logo {
+  z-index: 1002;
+}
+
+.with-controller .minplayer-default-logo {
+  bottom: 34px;
+}
+
+.player-ui .ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
diff --git a/public/admin/js/osmplayer/minplayer/templates/default/js/minplayer.controller.default.js b/public/admin/js/osmplayer/minplayer/templates/default/js/minplayer.controller.default.js
new file mode 100644
index 0000000000000000000000000000000000000000..e6951c5be63987a01dfe6466fc03744d82250fba
--- /dev/null
+++ b/public/admin/js/osmplayer/minplayer/templates/default/js/minplayer.controller.default.js
@@ -0,0 +1,96 @@
+/** The minplayer namespace. */
+var minplayer = minplayer || {};
+
+// Define the controller object.
+minplayer.controller = minplayer.controller || {};
+
+/**
+ * Constructor for the minplayer.controller
+ */
+minplayer.controller["default"] = function(context, options) {
+
+  // Derive from base controller
+  minplayer.controller.call(this, context, options);
+};
+
+/** Derive from controller. */
+minplayer.controller["default"].prototype = new minplayer.controller();
+minplayer.controller["default"].prototype.constructor = minplayer.controller["default"];
+
+/**
+ * @see minplayer.plugin#construct
+ */
+minplayer.controller["default"].prototype.construct = function() {
+  minplayer.controller.prototype.construct.call(this);
+  this.get('player', function(player) {
+    minplayer.showThenHide(this.display, 5000, function(shown) {
+      var op = shown ? 'addClass' : 'removeClass';
+      player.display[op]('with-controller');
+    });
+  });
+}
+
+/**
+ * Return the display for this plugin.
+ */
+minplayer.controller["default"].prototype.getDisplay = function() {
+
+  // See if we need to build out the controller.
+  if (this.options.build) {
+
+    // Prepend the control template.
+    this.context.prepend('\
+    <div class="minplayer-default-controls ui-widget-header">\
+      <div class="minplayer-default-controls-left">\
+        <a class="minplayer-default-play minplayer-default-button ui-state-default ui-corner-all" title="Play">\
+          <span class="ui-icon ui-icon-play"></span>\
+        </a>\
+        <a class="minplayer-default-pause minplayer-default-button ui-state-default ui-corner-all" title="Pause">\
+          <span class="ui-icon ui-icon-pause"></span>\
+        </a>\
+      </div>\
+      <div class="minplayer-default-controls-right">\
+        <div class="minplayer-default-timer">00:00</div>\
+        <div class="minplayer-default-fullscreen ui-widget-content">\
+          <div class="minplayer-default-fullscreen-inner ui-state-default"></div>\
+        </div>\
+        <div class="minplayer-default-volume">\
+          <div class="minplayer-default-volume-slider"></div>\
+          <a class="minplayer-default-volume-mute minplayer-default-button ui-state-default ui-corner-all" title="Mute">\
+            <span class="ui-icon ui-icon-volume-on"></span>\
+          </a>\
+          <a class="minplayer-default-volume-unmute minplayer-default-button ui-state-default ui-corner-all" title="Unmute">\
+            <span class="ui-icon ui-icon-volume-off"></span>\
+          </a>\
+        </div>\
+      </div>\
+      <div class="minplayer-default-controls-mid">\
+        <div class="minplayer-default-seek">\
+          <div class="minplayer-default-progress ui-state-default"></div>\
+        </div>\
+      </div>\
+    </div>');
+  }
+
+  // Let our template know we have a controller.
+  this.context.addClass('with-controller');
+
+  return jQuery('.minplayer-default-controls', this.context);
+}
+
+// Return the elements
+minplayer.controller["default"].prototype.getElements = function() {
+  var elements = minplayer.controller.prototype.getElements.call(this);
+  var timer = jQuery(".minplayer-default-timer", this.display);
+  return jQuery.extend(elements, {
+    play: jQuery(".minplayer-default-play", this.display),
+    pause: jQuery(".minplayer-default-pause", this.display),
+    fullscreen: jQuery(".minplayer-default-fullscreen", this.display),
+    seek: jQuery(".minplayer-default-seek", this.display),
+    progress: jQuery(".minplayer-default-progress", this.display),
+    volume: jQuery(".minplayer-default-volume-slider", this.display),
+    mute: jQuery('.minplayer-default-volume-mute', this.display),
+    timer:timer,
+    duration:timer
+  });
+};
diff --git a/public/admin/js/osmplayer/minplayer/templates/default/js/minplayer.default.js b/public/admin/js/osmplayer/minplayer/templates/default/js/minplayer.default.js
new file mode 100644
index 0000000000000000000000000000000000000000..9f9e6dc8087f03632f298fd98f20ed65d147af8c
--- /dev/null
+++ b/public/admin/js/osmplayer/minplayer/templates/default/js/minplayer.default.js
@@ -0,0 +1,66 @@
+/** The minplayer namespace. */
+var minplayer = minplayer || {};
+
+// Default player.
+minplayer["default"] = function(context, options) {
+
+  // Derive from minplayer.
+  minplayer.call(this, context, options);
+};
+
+/**
+ * Define this template prototype.
+ */
+minplayer["default"].prototype = new minplayer();
+minplayer["default"].prototype.constructor = minplayer["default"];
+
+/**
+ * Return the display for this plugin.
+ */
+minplayer["default"].prototype.getDisplay = function() {
+
+  // If this is the bottom element, then build the player.
+  if (this.context.children().length == 0) {
+
+    // Build out the player provided the base tag.
+    this.context = this.context.attr({
+      'id': this.options.id + '-player',
+      'class': 'minplayer-default-media'
+    })
+    .wrap(jQuery(document.createElement('div')).attr({
+      'class': 'minplayer-default-display ui-widget-content'
+    })).parent('.minplayer-default-display')
+    .wrap(jQuery(document.createElement('div')).attr({
+      'id': this.options.id,
+      'class': 'minplayer-default player-ui'
+    })).parent('.minplayer-default')
+    .append('\
+      <div class="minplayer-default-logo"></div>\
+      <div class="minplayer-default-error"></div>'
+    );
+
+    // Mark a flag that says this display needs to be built.
+    this.options.build = true;
+  }
+
+  // Return the display.
+  return this.context;
+}
+
+// Get the elements for this player.
+minplayer["default"].prototype.getElements = function() {
+  var elements = minplayer.prototype.getElements.call(this);
+
+  // Set the width and height of this element.
+  this.display.width(this.options.width);
+  this.display.height(this.options.height);
+
+  // Return the jQuery elements.
+  return jQuery.extend(elements, {
+    player:this.display,
+    display:jQuery(".minplayer-default-display", this.display),
+    media:jQuery(".minplayer-default-media", this.display),
+    error:jQuery('.minplayer-default-error', this.display),
+    logo:jQuery('.minplayer-default-logo', this.display)
+  });
+};
diff --git a/public/admin/js/osmplayer/minplayer/templates/default/js/minplayer.playLoader.default.js b/public/admin/js/osmplayer/minplayer/templates/default/js/minplayer.playLoader.default.js
new file mode 100644
index 0000000000000000000000000000000000000000..6fce70fcc5da02592ba113254a06f3b8390723fa
--- /dev/null
+++ b/public/admin/js/osmplayer/minplayer/templates/default/js/minplayer.playLoader.default.js
@@ -0,0 +1,46 @@
+/** The minplayer namespace. */
+var minplayer = minplayer || {};
+
+// Define the busy object.
+minplayer.playLoader = minplayer.playLoader || {};
+
+// constructor.
+minplayer.playLoader["default"] = function(context, options) {
+
+  // Derive from busy
+  minplayer.playLoader.call(this, context, options);
+};
+
+// Define the prototype for all controllers.
+minplayer.playLoader["default"].prototype = new minplayer.playLoader();
+minplayer.playLoader["default"].prototype.constructor = minplayer.playLoader["default"];
+
+/**
+ * Return the display for this plugin.
+ */
+minplayer.playLoader["default"].prototype.getDisplay = function() {
+
+  // See if we need to build out the controller.
+  if (this.options.build) {
+
+    // Prepend the playloader template.
+    this.context.prepend('\
+    <div class="minplayer-default-loader-wrapper">\
+      <div class="minplayer-default-big-play ui-state-default"><span></span></div>\
+      <div class="minplayer-default-loader">&nbsp;</div>\
+      <div class="minplayer-default-preview ui-widget-content"></div>\
+    </div>');
+  }
+
+  return jQuery('.minplayer-default-loader-wrapper', this.context);
+}
+
+// Return the elements
+minplayer.playLoader["default"].prototype.getElements = function() {
+  var elements = minplayer.playLoader.prototype.getElements.call(this);
+  return jQuery.extend(elements, {
+    busy:jQuery(".minplayer-default-loader", this.display),
+    bigPlay:jQuery(".minplayer-default-big-play", this.display),
+    preview:jQuery(".minplayer-default-preview", this.display)
+  });
+};
diff --git a/public/admin/js/osmplayer/minplayer/templates/default/minplayer_default.tpl.php b/public/admin/js/osmplayer/minplayer/templates/default/minplayer_default.tpl.php
new file mode 100644
index 0000000000000000000000000000000000000000..8aceaae0f5727eb99f0fcd27455d502e326ee751
--- /dev/null
+++ b/public/admin/js/osmplayer/minplayer/templates/default/minplayer_default.tpl.php
@@ -0,0 +1,40 @@
+<div id="<?php print $params['id']; ?>" class="minplayer-default player-ui">
+  <div class="minplayer-default-loader-wrapper">
+    <div class="minplayer-default-big-play ui-state-default"><span></span></div>
+    <div class="minplayer-default-loader">&nbsp;</div>
+    <div class="minplayer-default-preview ui-widget-content"></div>
+  </div>
+  <div class="minplayer-default-controls ui-widget-header">
+    <div class="minplayer-default-controls-left">
+      <a class="minplayer-default-play minplayer-default-button ui-state-default ui-corner-all" title="Play">
+        <span class="ui-icon ui-icon-play"></span>
+      </a>
+      <a class="minplayer-default-pause minplayer-default-button ui-state-default ui-corner-all" title="Pause">
+        <span class="ui-icon ui-icon-pause"></span>
+      </a>
+    </div>
+    <div class="minplayer-default-controls-right">
+      <div class="minplayer-default-timer">00:00</div>
+      <div class="minplayer-default-fullscreen ui-widget-content">
+        <div class="minplayer-default-fullscreen-inner ui-state-default"></div>
+      </div>
+      <div class="minplayer-default-volume">
+        <div class="minplayer-default-volume-slider"></div>
+        <a class="minplayer-default-volume-mute minplayer-default-button ui-state-default ui-corner-all" title="Mute">
+          <span class="ui-icon ui-icon-volume-on"></span>
+        </a>
+        <a class="minplayer-default-volume-unmute minplayer-default-button ui-state-default ui-corner-all" title="Unmute">
+          <span class="ui-icon ui-icon-volume-off"></span>
+        </a>
+      </div>
+    </div>
+    <div class="minplayer-default-controls-mid">
+      <div class="minplayer-default-seek">
+        <div class="minplayer-default-progress ui-state-default"></div>
+      </div>
+    </div>
+  </div>
+  <div class="minplayer-default-logo"></div>
+  <div class="minplayer-default-error"></div>
+  <div class="minplayer-default-display ui-widget-content"></div>
+</div>
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/playlist.xml b/public/admin/js/osmplayer/playlist.xml
new file mode 100644
index 0000000000000000000000000000000000000000..dc921addf81ad9d9d227bdde800c1433369abb87
--- /dev/null
+++ b/public/admin/js/osmplayer/playlist.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<playlist version="1" xmlns="http://xspf.org/ns/0/">
+   <trackList>
+      <track>
+         <title>The Dark Knight Rises</title>
+         <!--<location>http://progressive.totaleclips.com.edgesuite.net/105/e105947_257.mp4</location>-->
+         <location>http://www.youtube.com/watch?v=g8evyE9TuYk</location>
+         <image>http://www.movieposter.com/posters/archive/main/141/MPW-70758</image>
+      </track>
+      <track>
+         <title>The Amazing Spiderman</title>
+         <location>http://progressive.totaleclips.com.edgesuite.net/108/e108011_257.mp4</location>
+         <image>http://www.movieposter.com/posters/archive/main/143/MPW-71679</image>
+      </track>
+      <track>
+         <title>Matagascar III</title>
+         <location>http://progressive.totaleclips.com.edgesuite.net/105/e105598_257.mp4</location>
+         <image>http://www.movieposter.com/posters/archive/main/143/MPW-71686</image>
+      </track>
+      <track>
+         <title>Snow White and the Huntsman</title>
+         <location>http://progressive.totaleclips.com.edgesuite.net/103/e103981_257.mp4</location>
+         <image>http://www.movieposter.com/posters/archive/main/142/MPW-71148</image>
+      </track>
+      <track>
+         <title>Men in Black III</title>
+         <location>http://progressive.totaleclips.com.edgesuite.net/105/e105857_257.mp4</location>
+         <image>http://www.movieposter.com/posters/archive/main/146/MPW-73434</image>
+      </track>
+      <track>
+         <title>The Three Stooges</title>
+         <location>http://progressive.totaleclips.com.edgesuite.net/105/e105408_227.mp4</location>
+         <image>http://www.movieposter.com/posters/archive/main/143/MPW-71689</image>
+      </track>
+      <track>
+         <title>The Hunger Games</title>
+         <location>http://progressive.totaleclips.com.edgesuite.net/107/e107950_227.mp4</location>
+         <image>http://collider.com/wp-content/uploads/the-hunger-games-poster1.jpg</image>
+      </track>
+      <track>
+         <title>Se7en</title>
+         <location>http://progressive.totaleclips.com.edgesuite.net/102/e10278_301.mp4</location>
+         <image>http://www.movieposter.com/posters/archive/main/84/MPW-42060</image>
+      </track>
+      <track>
+         <title>The Matrix</title>
+         <location>http://progressive.totaleclips.com.edgesuite.net/445/e44573_301.mp4</location>
+         <image>http://www.movieposter.com/posters/archive/main/9/A70-4902</image>
+      </track>
+      <track>
+         <title>Amelie</title>
+         <location>http://progressive.totaleclips.com.edgesuite.net/203/e20379_301.mp4</location>
+         <image>http://www.movieposter.com/posters/archive/main/91/MPW-45860</image>
+      </track>
+      <track>
+         <title>The Prestige</title>
+         <location>http://progressive.totaleclips.com.edgesuite.net/308/e30871_257.mp4</location>
+         <image>http://www.movieposter.com/posters/archive/main/76/MPW-38403</image>
+      </track>
+   </trackList>
+</playlist>
diff --git a/public/admin/js/osmplayer/src/iscroll/README.md b/public/admin/js/osmplayer/src/iscroll/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..baa4edfaca80d7cb0b8019727d5e6e9fc33fd0a8
--- /dev/null
+++ b/public/admin/js/osmplayer/src/iscroll/README.md
@@ -0,0 +1,36 @@
+iScroll v4.1.9 - 2011-09-22
+===========================
+
+The overflow:scroll for mobile webkit. Project started because webkit for iPhone does not provide a native way to scroll content inside a fixed size (width/height) div. So basically it was impossible to have a fixed header/footer and a scrolling central area. Until now. Read more at [cubiq.org](http://cubiq.org).
+
+## Ender support
+Using [Ender](http://ender.no.de), add it to your existing build
+
+    $ ender add iscroll
+
+Use it like this:
+
+``` js
+var myScroll = $('#doc').iScroll(options)
+```
+
+## Credits and Special thanks
+iScroll is evolving thank to the help of all those who sent suggestions, bug reports and ideas on [github](https://github.com/cubiq/iscroll), my [blog](http://cubiq.org) and [googlecode](http://code.google.com/p/iscroll-js/). This is by no means the work of a sole man.
+
+In completely random order:
+
+- All Github [contributors](https://github.com/cubiq/iscroll/contributors)
+- [beedesk](http://beedesk.com) for bug squashing in the pull to refresh feature
+- [Daniel J. Pinter](http://twitter.com/#!/HeadDZombie) for continued support, bug reports and for killing zombies
+- [Aseem Kishore](http://about.me/aseemk) for help with the zoom functionality
+- [Alex Gibson](http://miniapps.co.uk/) for continued support and bug reports
+- [Christoph Pojer](http://cpojer.net) for ideas, suggestions and bug reports
+- [Shimon Dookdin](https://github.com/shimondoodkin) for help with wheel support
+- [Will Bailey](http://blog.thirtymontgomery.com/) for commonJS compatibility
+- [Aaron Infidel](https://github.com/lifeiscontent) for bug reports and continued support
+- [David Haslem](https://github.com/therabidbanana) for suggestions and bug reports
+- [gingertom](https://github.com/gingertom) for suggestions and bug reports
+- [David Alan Hjelle](https://github.com/dahjelle) for bug squashing
+- [iangilman](https://github.com/iangilman) for help with the zoom functionality
+- All those who supported, linked, loved the iScroll
+- I'm sure I'm missing someone, sorry about that. If you helped in the script development and you don't see your name here, please drop me a line
diff --git a/public/admin/js/osmplayer/src/iscroll/bin/make-dist b/public/admin/js/osmplayer/src/iscroll/bin/make-dist
new file mode 100755
index 0000000000000000000000000000000000000000..47cba908003a53d799f63872a9ac998e504c9aa9
--- /dev/null
+++ b/public/admin/js/osmplayer/src/iscroll/bin/make-dist
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+java -jar /usr/local/bin/yuicompressor-2.4.6.jar -v --charset utf-8 ../src/iscroll.js -o ../dist/iscroll-min.js
+java -jar /usr/local/bin/yuicompressor-2.4.6.jar -v --charset utf-8 ../src/iscroll-lite.js -o ../dist/iscroll-lite-min.js
diff --git a/public/admin/js/osmplayer/src/iscroll/examples/carousel/index.html b/public/admin/js/osmplayer/src/iscroll/examples/carousel/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..a975797a96ec059b7222e0caba14c622f40f9dcb
--- /dev/null
+++ b/public/admin/js/osmplayer/src/iscroll/examples/carousel/index.html
@@ -0,0 +1,170 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0">
+<meta name="apple-mobile-web-app-capable" content="yes">
+<meta name="apple-mobile-web-app-status-bar-style" content="black">
+<title>iScroll demo: Carousel</title>
+
+<script type="text/javascript" src="../../src/iscroll.js"></script>
+
+<script type="text/javascript">
+var myScroll;
+
+function loaded() {
+	myScroll = new iScroll('wrapper', {
+		snap: true,
+		momentum: false,
+		hScrollbar: false,
+		onScrollEnd: function () {
+			document.querySelector('#indicator > li.active').className = '';
+			document.querySelector('#indicator > li:nth-child(' + (this.currPageX+1) + ')').className = 'active';
+		}
+	 });
+}
+
+document.addEventListener('DOMContentLoaded', loaded, false);
+</script>
+
+<style type="text/css" media="all">
+body,ul,li {
+	padding:10px;
+	margin:0;
+}
+
+body {
+	font-size:12px;
+	-webkit-user-select:none;
+    -webkit-text-size-adjust:none;
+	font-family:helvetica;
+}
+
+#wrapper {
+	width:300px;
+	height:160px;
+
+	float:left;
+	position:relative;	/* On older OS versions "position" and "z-index" must be defined, */
+	z-index:1;			/* it seems that recent webkit is less picky and works anyway. */
+	overflow:hidden;
+
+	background:#aaa;
+	-webkit-border-radius:10px;
+	-moz-border-radius:10px;
+	-o-border-radius:10px;
+	border-radius:10px;
+	background:#e3e3e3;
+}
+
+#scroller {
+	width:2100px;
+	height:100%;
+	float:left;
+	padding:0;
+}
+
+#scroller ul {
+	list-style:none;
+	display:block;
+	float:left;
+	width:100%;
+	height:100%;
+	padding:0;
+	margin:0;
+	text-align:left;
+}
+
+#scroller li {
+	-webkit-box-sizing:border-box;
+	-moz-box-sizing:border-box;
+	-o-box-sizing:border-box;
+	box-sizing:border-box;
+	display:block; float:left;
+	width:300px; height:160px;
+	text-align:center;
+	font-family:georgia;
+	font-size:18px;
+	line-height:140%;
+}
+
+#nav {
+	width:300px;
+	float:left;
+}
+
+#prev, #next {
+	float:left;
+	font-weight:bold;
+	font-size:14px;
+	padding:5px 0;
+	width:80px;
+}
+
+#next {
+	float:right;
+	text-align:right;
+}
+
+#indicator, #indicator > li {
+	display:block; float:left;
+	list-style:none;
+	padding:0; margin:0;
+}
+
+#indicator {
+	width:110px;
+	padding:12px 0 0 30px;
+}
+
+#indicator > li {
+	text-indent:-9999em;
+	width:8px; height:8px;
+	-webkit-border-radius:4px;
+	-moz-border-radius:4px;
+	-o-border-radius:4px;
+	border-radius:4px;
+	background:#ddd;
+	overflow:hidden;
+	margin-right:4px;
+}
+
+#indicator > li.active {
+	background:#888;
+}
+
+#indicator > li:last-child {
+	margin:0;
+}
+
+</style>
+</head>
+<body>
+<div id="wrapper">
+	<div id="scroller">
+		<ul id="thelist">
+			<li><strong>1.</strong> <em>A robot may not injure a human being or, through inaction, allow a human being to come to harm.</em></li>
+			<li><strong>2.</strong> <em>A robot must obey any orders given to it by human beings, except where such orders would conflict with the First Law.</em></li>
+			<li><strong>3.</strong> <em>A robot must protect its own existence as long as such protection does not conflict with the First or Second Law.</em></li>
+			<li><strong>Zeroth Law:</strong> <em>A robot may not harm humanity, or, by inaction, allow humanity to come to harm.</em></li>
+			<li><strong>Lyuben Dilov's Forth law:</strong> <em>A robot must establish its identity as a robot in all cases.</em></li>
+			<li><strong>Harry Harrison's Forth law:</strong> <em>A robot must reproduce. As long as such reproduction does not interfere with the First or Second or Third Law.</em></li>
+			<li><strong>Nikola Kesarovski's Fifth law:</strong> <em>A robot must know it is a robot.</em></li>
+		</ul>
+	</div>
+</div>
+<div id="nav">
+	<div id="prev" onclick="myScroll.scrollToPage('prev', 0);return false">&larr; prev</div>
+	<ul id="indicator">
+		<li class="active">1</li>
+		<li>2</li>
+		<li>3</li>
+		<li>4</li>
+		<li>5</li>
+		<li>6</li>
+		<li>7</li>
+	</ul>
+	<div id="next" onclick="myScroll.scrollToPage('next', 0);return false">next &rarr;</div>
+</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/src/iscroll/examples/check-dom-changes/index.html b/public/admin/js/osmplayer/src/iscroll/examples/check-dom-changes/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..0895bc78e28da72276cd4a07fb56126db2088c91
--- /dev/null
+++ b/public/admin/js/osmplayer/src/iscroll/examples/check-dom-changes/index.html
@@ -0,0 +1,172 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0">
+<meta name="apple-mobile-web-app-capable" content="yes">
+<meta name="apple-mobile-web-app-status-bar-style" content="black">
+<title>iScroll demo: Check DOM Changes</title>
+
+<script type="text/javascript" src="../../src/iscroll.js"></script>
+
+<script type="text/javascript">
+
+var myScroll;
+function loaded() {
+	myScroll = new iScroll('wrapper', { checkDOMChanges: true });
+	
+	setInterval(function () {
+		if (myScroll.isReady())
+			document.getElementById('thelist').innerHTML += '<li>new row</li>';
+	}, 2000);
+}
+
+document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false);
+document.addEventListener('DOMContentLoaded', loaded, false);
+
+</script>
+
+<style type="text/css" media="all">
+body,ul,li {
+	padding:0;
+	margin:0;
+	border:0;
+}
+
+body {
+	font-size:12px;
+	-webkit-user-select:none;
+    -webkit-text-size-adjust:none;
+	font-family:helvetica;
+}
+
+#header {
+	position:absolute; z-index:2;
+	top:0; left:0;
+	width:100%;
+	height:45px;
+	line-height:45px;
+	background-color:#d51875;
+	background-image:-webkit-gradient(linear, 0 0, 0 100%, color-stop(0, #fe96c9), color-stop(0.05, #d51875), color-stop(1, #7b0a2e));
+	background-image:-moz-linear-gradient(top, #fe96c9, #d51875 5%, #7b0a2e);
+	background-image:-o-linear-gradient(top, #fe96c9, #d51875 5%, #7b0a2e);
+	padding:0;
+	color:#eee;
+	font-size:20px;
+	text-align:center;
+}
+
+#header a {
+	color:#f3f3f3;
+	text-decoration:none;
+	font-weight:bold;
+	text-shadow:0 -1px 0 rgba(0,0,0,0.5);
+}
+
+#footer {
+	position:absolute; z-index:2;
+	bottom:0; left:0;
+	width:100%;
+	height:48px;
+	background-color:#222;
+	background-image:-webkit-gradient(linear, 0 0, 0 100%, color-stop(0, #999), color-stop(0.02, #666), color-stop(1, #222));
+	background-image:-moz-linear-gradient(top, #999, #666 2%, #222);
+	background-image:-o-linear-gradient(top, #999, #666 2%, #222);
+	padding:0;
+	border-top:1px solid #444;
+}
+
+#wrapper {
+	position:absolute; z-index:1;
+	top:45px; bottom:48px; left:0;
+	width:100%;
+	background:#aaa;
+	overflow:auto;
+}
+
+#scroller {
+	position:absolute; z-index:1;
+/*	-webkit-touch-callout:none;*/
+	-webkit-tap-highlight-color:rgba(0,0,0,0);
+	width:100%;
+	padding:0;
+}
+
+#scroller ul {
+	list-style:none;
+	padding:0;
+	margin:0;
+	width:100%;
+	text-align:left;
+}
+
+#scroller li {
+	padding:0 10px;
+	height:40px;
+	line-height:40px;
+	border-bottom:1px solid #ccc;
+	border-top:1px solid #fff;
+	background-color:#fafafa;
+	font-size:14px;
+}
+
+#myFrame {
+	position:absolute;
+	top:0; left:0;
+}
+
+</style>
+</head>
+<body>
+
+<div id="header"><a href="http://cubiq.org/iscroll">iScroll</a></div>
+<div id="wrapper">
+	<div id="scroller">
+		<ul id="thelist">
+			<li>Pretty row 1</li>
+			<li>Pretty row 2</li>
+			<li>Pretty row 3</li>
+			<li>Pretty row 4</li>
+			<li>Pretty row 5</li>
+			<li>Pretty row 6</li>
+			<li>Pretty row 7</li>
+			<li>Pretty row 8</li>
+			<li>Pretty row 9</li>
+			<li>Pretty row 10</li>
+			<li>Pretty row 11</li>
+			<li>Pretty row 12</li>
+			<li>Pretty row 13</li>
+			<li>Pretty row 14</li>
+			<li>Pretty row 15</li>
+			<li>Pretty row 16</li>
+			<li>Pretty row 17</li>
+			<li>Pretty row 18</li>
+			<li>Pretty row 19</li>
+			<li>Pretty row 20</li>
+			<li>Pretty row 21</li>
+			<li>Pretty row 22</li>
+			<li>Pretty row 23</li>
+			<li>Pretty row 24</li>
+			<li>Pretty row 25</li>
+			<li>Pretty row 26</li>
+			<li>Pretty row 27</li>
+			<li>Pretty row 28</li>
+			<li>Pretty row 29</li>
+			<li>Pretty row 30</li>
+			<li>Pretty row 31</li>
+			<li>Pretty row 32</li>
+			<li>Pretty row 33</li>
+			<li>Pretty row 34</li>
+			<li>Pretty row 35</li>
+			<li>Pretty row 36</li>
+			<li>Pretty row 37</li>
+			<li>Pretty row 38</li>
+			<li>Pretty row 39</li>
+			<li>Pretty row 40</li>
+		</ul>
+	</div>
+</div>
+<div id="footer"></div>
+
+</body>
+</html>
diff --git a/public/admin/js/osmplayer/src/iscroll/examples/custom-scrollbar/index.html b/public/admin/js/osmplayer/src/iscroll/examples/custom-scrollbar/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..6cfff61b22edc1d981ebcba40958aa86177a980f
--- /dev/null
+++ b/public/admin/js/osmplayer/src/iscroll/examples/custom-scrollbar/index.html
@@ -0,0 +1,172 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0">
+<meta name="apple-mobile-web-app-capable" content="yes">
+<meta name="apple-mobile-web-app-status-bar-style" content="black">
+<title>iScroll demo: custom scrollbar</title>
+
+<link rel="stylesheet" type="text/css" href="scrollbar.css">
+
+<script type="application/javascript" src="../../src/iscroll.js?v4"></script>
+
+<script type="text/javascript">
+
+var myScroll;
+function loaded() {
+	myScroll = new iScroll('wrapper', { scrollbarClass: 'myScrollbar' });
+}
+
+document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false);
+
+document.addEventListener('DOMContentLoaded', loaded, false);
+
+</script>
+
+<style type="text/css" media="all">
+body,ul,li {
+	padding:0;
+	margin:0;
+	border:0;
+}
+
+body {
+	font-size:12px;
+	-webkit-user-select:none;
+    -webkit-text-size-adjust:none;
+	font-family:helvetica;
+}
+
+#header {
+	position:absolute;
+	top:0; left:0;
+	width:100%;
+	height:45px;
+	line-height:45px;
+	background-color:#d51875;
+	background-image:-webkit-gradient(linear, 0 0, 0 100%, color-stop(0, #fe96c9), color-stop(0.05, #d51875), color-stop(1, #7b0a2e));
+	background-image:-moz-linear-gradient(top, #fe96c9, #d51875 5%, #7b0a2e);
+	background-image:-o-linear-gradient(top, #fe96c9, #d51875 5%, #7b0a2e);
+	padding:0;
+	color:#eee;
+	font-size:20px;
+	text-align:center;
+}
+
+#header a {
+	color:#f3f3f3;
+	text-decoration:none;
+	font-weight:bold;
+	text-shadow:0 -1px 0 rgba(0,0,0,0.5);
+}
+
+#footer {
+	position:absolute;
+	bottom:0; left:0;
+	width:100%;
+	height:48px;
+	background-color:#222;
+	background-image:-webkit-gradient(linear, 0 0, 0 100%, color-stop(0, #999), color-stop(0.02, #666), color-stop(1, #222));
+	background-image:-moz-linear-gradient(top, #999, #666 2%, #222);
+	background-image:-o-linear-gradient(top, #999, #666 2%, #222);
+	padding:0;
+	border-top:1px solid #444;
+}
+
+#wrapper {
+	position:absolute; z-index:1;
+	top:45px; bottom:48px; left:0;
+	width:100%;
+	background:#aaa;
+	overflow:auto;
+}
+
+#scroller {
+	position:relative;
+/*	-webkit-touch-callout:none;*/
+	-webkit-tap-highlight-color:rgba(0,0,0,0);
+
+	float:left;
+	width:100%;
+	padding:0;
+}
+
+#scroller ul {
+	position:relative;
+	list-style:none;
+	padding:0;
+	margin:0;
+	width:100%;
+	text-align:left;
+}
+
+#scroller li {
+	padding:0 10px;
+	height:40px;
+	line-height:40px;
+	border-bottom:1px solid #ccc;
+	border-top:1px solid #fff;
+	background-color:#fafafa;
+	font-size:14px;
+}
+
+#scroller li > a {
+	display:block;
+}
+
+</style>
+</head>
+<body>
+<div id="header"><a href="http://cubiq.org/iscroll">iScroll</a></div>
+<div id="wrapper">
+	<div id="scroller">
+		<ul id="thelist">
+			<li>Pretty row 1</li>
+			<li id="aaa">Pretty row 2</li>
+			<li>Pretty row 3</li>
+			<li>Pretty row 4</li>
+			<li>Pretty row 5</li>
+			<li>Pretty row 6</li>
+			<li>Pretty row 7</li>
+			<li>Pretty row 8</li>
+			<li>Pretty row 9</li>
+			<li>Pretty row 10</li>
+			<li>Pretty row 11</li>
+			<li>Pretty row 12</li>
+			<li>Pretty row 13</li>
+			<li>Pretty row 14</li>
+			<li>Pretty row 15</li>
+			<li>Pretty row 16</li>
+			<li>Pretty row 17</li>
+			<li>Pretty row 18</li>
+			<li>Pretty row 19</li>
+			<li>Pretty row 20</li>
+			<li>Pretty row 21</li>
+			<li>Pretty row 22</li>
+			<li>Pretty row 23</li>
+			<li>Pretty row 24</li>
+			<li>Pretty row 25</li>
+			<li>Pretty row 26</li>
+			<li>Pretty row 27</li>
+			<li>Pretty row 28</li>
+			<li>Pretty row 29</li>
+			<li>Pretty row 30</li>
+			<li>Pretty row 31</li>
+			<li>Pretty row 32</li>
+			<li>Pretty row 33</li>
+			<li>Pretty row 34</li>
+			<li>Pretty row 35</li>
+			<li>Pretty row 36</li>
+			<li>Pretty row 37</li>
+			<li>Pretty row 38</li>
+			<li>Pretty row 39</li>
+			<li>Pretty row 40</li>
+		</ul>
+	</div>
+</div>
+
+<div id="footer"></div>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/src/iscroll/examples/custom-scrollbar/scrollbar.css b/public/admin/js/osmplayer/src/iscroll/examples/custom-scrollbar/scrollbar.css
new file mode 100644
index 0000000000000000000000000000000000000000..a5384818845f612335c7688e2c3c6ecbcbf334d1
--- /dev/null
+++ b/public/admin/js/osmplayer/src/iscroll/examples/custom-scrollbar/scrollbar.css
@@ -0,0 +1,91 @@
+
+/**
+ *
+ * Horizontal Scrollbar
+ *
+ */
+.myScrollbarH {
+	position:absolute;
+	z-index:100;
+	height:8px;
+	bottom:1px;
+	left:2px;
+	right:7px
+}
+
+.myScrollbarH > div {
+	position:absolute;
+	z-index:100;
+	height:100%;
+
+	/* The following is probably what you want to customize */
+	background-image:-webkit-gradient(linear, 0 0, 100% 0, from(#a00), to(#f00));
+	background-image:-moz-linear-gradient(top, #f00, #900);
+	background-image:-o-linear-gradient(top, #f00, #900);
+
+	border:1px solid #900;
+	-webkit-background-clip:padding-box;
+	-moz-background-clip:padding-box;
+	-o-background-clip:padding-box;
+	background-clip:padding-box;
+	
+	-webkit-box-sizing:border-box;
+	-moz-box-sizing:border-box;
+	-o-box-sizing:border-box;
+	box-sizing:border-box;
+	
+	-webkit-border-radius:4px;
+	-moz-border-radius:4px;
+	-o-border-radius:4px;
+	border-radius:4px;
+	
+	-webkit-box-shadow:inset 1px 1px 0 rgba(255,255,255,0.5);
+	-moz-box-shadow:inset 1px 1px 0 rgba(255,255,255,0.5);
+	-o-box-shadow:inset 1px 1px 0 rgba(255,255,255,0.5);
+	box-shadow:inset 1px 1px 0 rgba(255,255,255,0.5);
+}
+
+
+/**
+ *
+ * Vertical Scrollbar
+ *
+ */
+.myScrollbarV {
+	position:absolute;
+	z-index:100;
+	width:8px;bottom:7px;top:2px;right:1px
+}
+
+.myScrollbarV > div {
+	position:absolute;
+	z-index:100;
+	width:100%;
+
+	/* The following is probably what you want to customize */
+	background:-webkit-gradient(linear, 0 0, 100% 0, from(#f00), to(#900));
+	background-image:-moz-linear-gradient(top, #f00, #900);
+	background-image:-o-linear-gradient(top, #f00, #900);
+
+	border:1px solid #900;
+
+	-webkit-background-clip:padding-box;
+	-moz-background-clip:padding-box;
+	-o-background-clip:padding-box;
+	background-clip:padding-box;
+	
+	-webkit-box-sizing:border-box;
+	-moz-box-sizing:border-box;
+	-o-box-sizing:border-box;
+	box-sizing:border-box;
+	
+	-webkit-border-radius:4px;
+	-moz-border-radius:4px;
+	-o-border-radius:4px;
+	border-radius:4px;
+	
+	-webkit-box-shadow:inset 1px 1px 0 rgba(255,255,255,0.5);
+	-moz-box-shadow:inset 1px 1px 0 rgba(255,255,255,0.5);
+	-o-box-shadow:inset 1px 1px 0 rgba(255,255,255,0.5);
+	box-shadow:inset 1px 1px 0 rgba(255,255,255,0.5);
+}
diff --git a/public/admin/js/osmplayer/src/iscroll/examples/ender/ender.js b/public/admin/js/osmplayer/src/iscroll/examples/ender/ender.js
new file mode 100644
index 0000000000000000000000000000000000000000..bb99e0c0d0368b680cc256e7aab68d62008be3b8
--- /dev/null
+++ b/public/admin/js/osmplayer/src/iscroll/examples/ender/ender.js
@@ -0,0 +1,1602 @@
+/*!
+  * =============================================================
+  * Ender: open module JavaScript framework (https://ender.no.de)
+  * Build: ender build qwery domready ../../
+  * =============================================================
+  */
+
+/*!
+  * Ender-JS: open module JavaScript framework (client-lib)
+  * copyright Dustin Diaz & Jacob Thornton 2011 (@ded @fat)
+  * https://ender.no.de
+  * License MIT
+  */
+!function (context) {
+
+  // a global object for node.js module compatiblity
+  // ============================================
+
+  context['global'] = context;
+
+  // Implements simple module system
+  // losely based on CommonJS Modules spec v1.1.1
+  // ============================================
+
+  var modules = {};
+
+  function require (identifier) {
+    var module = modules[identifier] || window[identifier];
+    if (!module) throw new Error("Requested module '" + identifier + "' has not been defined.");
+    return module;
+  }
+
+  function provide (name, what) {
+    return modules[name] = what;
+  }
+
+  context['provide'] = provide;
+  context['require'] = require;
+
+  // Implements Ender's $ global access object
+  // =========================================
+
+  function aug(o, o2) {
+    for (var k in o2) {
+      k != 'noConflict' && k != '_VERSION' && (o[k] = o2[k]);
+    }
+    return o;
+  }
+
+  function boosh(s, r, els) {
+                          // string || node || nodelist || window
+    if (ender._select && (typeof s == 'string' || s.nodeName || s.length && 'item' in s || s == window)) {
+      els = ender._select(s, r);
+      els.selector = s;
+    } else {
+      els = isFinite(s.length) ? s : [s];
+    }
+    return aug(els, boosh);
+  }
+
+  function ender(s, r) {
+    return boosh(s, r);
+  }
+
+  aug(ender, {
+    _VERSION: '0.2.5',
+    ender: function (o, chain) {
+      aug(chain ? boosh : ender, o);
+    },
+    fn: context.$ && context.$.fn || {} // for easy compat to jQuery plugins
+  });
+
+  aug(boosh, {
+    forEach: function (fn, scope, i) {
+      // opt out of native forEach so we can intentionally call our own scope
+      // defaulting to the current item and be able to return self
+      for (i = 0, l = this.length; i < l; ++i) {
+        i in this && fn.call(scope || this[i], this[i], i, this);
+      }
+      // return self for chaining
+      return this;
+    },
+    $: ender // handy reference to self
+  });
+
+  var old = context.$;
+  ender.noConflict = function () {
+    context.$ = old;
+    return this;
+  };
+
+  (typeof module !== 'undefined') && module.exports && (module.exports = ender);
+  // use subscript notation as extern for Closure compilation
+  context['ender'] = context['$'] = context['ender'] || ender;
+
+}(this);
+
+!function () {
+
+  var module = { exports: {} }, exports = module.exports;
+
+  /*!
+    * Qwery - A Blazing Fast query selector engine
+    * https://github.com/ded/qwery
+    * copyright Dustin Diaz & Jacob Thornton 2011
+    * MIT License
+    */
+  
+  !function (name, definition) {
+    if (typeof define == 'function') define(definition)
+    else if (typeof module != 'undefined') module.exports = definition()
+    else this[name] = definition()
+  }('qwery', function () {
+    var context = this
+      , doc = document
+      , c, i, j, k, l, m, o, p, r, v
+      , el, node, found, classes, item, items, token
+      , html = doc.documentElement
+      , id = /#([\w\-]+)/
+      , clas = /\.[\w\-]+/g
+      , idOnly = /^#([\w\-]+$)/
+      , classOnly = /^\.([\w\-]+)$/
+      , tagOnly = /^([\w\-]+)$/
+      , tagAndOrClass = /^([\w]+)?\.([\w\-]+)$/
+      , normalizr = /\s*([\s\+\~>])\s*/g
+      , splitters = /[\s\>\+\~]/
+      , splittersMore = /(?![\s\w\-\/\?\&\=\:\.\(\)\!,@#%<>\{\}\$\*\^'"]*\]|[\s\w\+\-]*\))/
+      , specialChars = /([.*+?\^=!:${}()|\[\]\/\\])/g
+      , simple = /^([a-z0-9]+)?(?:([\.\#]+[\w\-\.#]+)?)/
+      , attr = /\[([\w\-]+)(?:([\|\^\$\*\~]?\=)['"]?([ \w\-\/\?\&\=\:\.\(\)\!,@#%<>\{\}\$\*\^]+)["']?)?\]/
+      , pseudo = /:([\w\-]+)(\(['"]?([\s\w\+\-]+)['"]?\))?/
+      , dividers = new RegExp('(' + splitters.source + ')' + splittersMore.source, 'g')
+      , tokenizr = new RegExp(splitters.source + splittersMore.source)
+      , chunker = new RegExp(simple.source + '(' + attr.source + ')?' + '(' + pseudo.source + ')?')
+      , walker = {
+        ' ': function (node) {
+          return node && node !== html && node.parentNode
+        }
+      , '>': function (node, contestant) {
+          return node && node.parentNode == contestant.parentNode && node.parentNode;
+        }
+      , '~': function (node) {
+          return node && node.previousSibling;
+        }
+      , '+': function (node, contestant, p1, p2) {
+          if (!node) {
+            return false;
+          }
+          p1 = previous(node);
+          p2 = previous(contestant);
+          return p1 && p2 && p1 == p2 && p1;
+        }
+    }
+    function cache() {
+      this.c = {}
+    }
+    cache.prototype = {
+        g: function (k) {
+          return this.c[k] || undefined
+        }
+      , s: function (k, v) {
+          this.c[k] = v
+          return v
+        }
+    }
+  
+    var classCache = new cache()
+      , cleanCache = new cache()
+      , attrCache = new cache()
+      , tokenCache = new cache()
+  
+    function flatten(ar) {
+      r = []
+      for (i = 0, l = ar.length; i < l; i++) {
+        if (arrayLike(ar[i])) {
+          r = r.concat(ar[i])
+        } else {
+          r.push(ar[i])
+        }
+      }
+      return r
+    }
+  
+    function previous(n) {
+      while (n = n.previousSibling) {
+        if (n.nodeType == 1) {
+          break;
+        }
+      }
+      return n
+    }
+  
+    function q(query) {
+      return query.match(chunker)
+    }
+  
+    // this next method expect at most these args
+    // given => div.hello[title="world"]:foo('bar')
+  
+    // div.hello[title="world"]:foo('bar'), div, .hello, [title="world"], title, =, world, :foo('bar'), foo, ('bar'), bar]
+  
+    function interpret(whole, tag, idsAndClasses, wholeAttribute, attribute, qualifier, value, wholePseudo, pseudo, wholePseudoVal, pseudoVal) {
+      var m, c, k;
+      if (tag && this.tagName.toLowerCase() !== tag) {
+        return false
+      }
+      if (idsAndClasses && (m = idsAndClasses.match(id)) && m[1] !== this.id) {
+        return false
+      }
+      if (idsAndClasses && (classes = idsAndClasses.match(clas))) {
+        for (i = classes.length; i--;) {
+          c = classes[i].slice(1)
+          if (!(classCache.g(c) || classCache.s(c, new RegExp('(^|\\s+)' + c + '(\\s+|$)'))).test(this.className)) {
+            return false
+          }
+        }
+      }
+      if (pseudo && qwery.pseudos[pseudo] && !qwery.pseudos[pseudo](this, pseudoVal)) {
+        return false
+      }
+      if (wholeAttribute && !value) {
+        o = this.attributes
+        for (k in o) {
+          if (Object.prototype.hasOwnProperty.call(o, k) && (o[k].name || k) == attribute) {
+            return this
+          }
+        }
+      }
+      if (wholeAttribute && !checkAttr(qualifier, this.getAttribute(attribute) || '', value)) {
+        return false
+      }
+      return this
+    }
+  
+    function clean(s) {
+      return cleanCache.g(s) || cleanCache.s(s, s.replace(specialChars, '\\$1'))
+    }
+  
+    function checkAttr(qualify, actual, val) {
+      switch (qualify) {
+      case '=':
+        return actual == val
+      case '^=':
+        return actual.match(attrCache.g('^=' + val) || attrCache.s('^=' + val, new RegExp('^' + clean(val))))
+      case '$=':
+        return actual.match(attrCache.g('$=' + val) || attrCache.s('$=' + val, new RegExp(clean(val) + '$')))
+      case '*=':
+        return actual.match(attrCache.g(val) || attrCache.s(val, new RegExp(clean(val))))
+      case '~=':
+        return actual.match(attrCache.g('~=' + val) || attrCache.s('~=' + val, new RegExp('(?:^|\\s+)' + clean(val) + '(?:\\s+|$)')))
+      case '|=':
+        return actual.match(attrCache.g('|=' + val) || attrCache.s('|=' + val, new RegExp('^' + clean(val) + '(-|$)')))
+      }
+      return 0
+    }
+  
+    function _qwery(selector) {
+      var r = [], ret = [], i, j = 0, k, l, m, p, token, tag, els, root, intr, item, children
+        , tokens = tokenCache.g(selector) || tokenCache.s(selector, selector.split(tokenizr))
+        , dividedTokens = selector.match(dividers), dividedToken
+      tokens = tokens.slice(0) // this makes a copy of the array so the cached original is not effected
+  
+      if (!tokens.length) return r
+  
+      token = tokens.pop()
+      root = tokens.length && (m = tokens[tokens.length - 1].match(idOnly)) ? doc.getElementById(m[1]) : doc
+  
+      if (!root) return r
+  
+      intr = q(token)
+      els = dividedTokens && /^[+~]$/.test(dividedTokens[dividedTokens.length - 1]) ? function (r) {
+          while (root = root.nextSibling) {
+            root.nodeType == 1 && (intr[1] ? intr[1] == root.tagName.toLowerCase() : 1) && r.push(root)
+          }
+          return r
+        }([]) :
+        root.getElementsByTagName(intr[1] || '*')
+      for (i = 0, l = els.length; i < l; i++) if (item = interpret.apply(els[i], intr)) r[j++] = item
+      if (!tokens.length) return r
+  
+      // loop through all descendent tokens
+      for (j = 0, l = r.length, k = 0; j < l; j++) {
+        p = r[j]
+        // loop through each token backwards crawling up tree
+        for (i = tokens.length; i--;) {
+          // loop through parent nodes
+          while (p = walker[dividedTokens[i]](p, r[j])) {
+            if (found = interpret.apply(p, q(tokens[i]))) break;
+          }
+        }
+        found && (ret[k++] = r[j])
+      }
+      return ret
+    }
+  
+    function isNode(el) {
+      return (el && el.nodeType && (el.nodeType == 1 || el.nodeType == 9))
+    }
+  
+    function uniq(ar) {
+      var a = [], i, j;
+      label:
+      for (i = 0; i < ar.length; i++) {
+        for (j = 0; j < a.length; j++) {
+          if (a[j] == ar[i]) {
+            continue label;
+          }
+        }
+        a[a.length] = ar[i]
+      }
+      return a
+    }
+  
+    function arrayLike(o) {
+      return (typeof o === 'object' && isFinite(o.length))
+    }
+  
+    function normalizeRoot(root) {
+      if (!root) return doc
+      if (typeof root == 'string') return qwery(root)[0]
+      if (arrayLike(root)) return root[0]
+      return root
+    }
+  
+    function qwery(selector, _root) {
+      var root = normalizeRoot(_root)
+  
+      if (!root || !selector) return []
+      if (selector === window || isNode(selector)) {
+        return !_root || (selector !== window && isNode(root) && isAncestor(selector, root)) ? [selector] : []
+      }
+      if (selector && arrayLike(selector)) return flatten(selector)
+      if (m = selector.match(idOnly)) return (el = doc.getElementById(m[1])) ? [el] : []
+      if (m = selector.match(tagOnly)) return flatten(root.getElementsByTagName(m[1]))
+      return select(selector, root)
+    }
+  
+    var isAncestor = 'compareDocumentPosition' in html ?
+      function (element, container) {
+        return (container.compareDocumentPosition(element) & 16) == 16;
+      } : 'contains' in html ?
+      function (element, container) {
+        container = container == doc || container == window ? html : container
+        return container !== element && container.contains(element)
+      } :
+      function (element, container) {
+        while (element = element.parentNode) if (element === container) return 1
+        return 0
+      },
+  
+    supportsCSS3 = function () {
+      if (!doc.querySelector || !doc.querySelectorAll) return false
+  
+      try { return (doc.querySelectorAll(':nth-of-type(1)').length > 0) }
+      catch (e) { return false }
+    }(),
+  
+    select = supportsCSS3 ?
+      function (selector, root) {
+        if (doc.getElementsByClassName && (m = selector.match(classOnly))) {
+          return flatten((root).getElementsByClassName(m[1]));
+        }
+        return flatten((root).querySelectorAll(selector))
+      } :
+      function (selector, root) {
+        selector = selector.replace(normalizr, '$1')
+        var result = [], element, collection, collections = [], i
+        if (m = selector.match(tagAndOrClass)) {
+          items = root.getElementsByTagName(m[1] || '*');
+          r = classCache.g(m[2]) || classCache.s(m[2], new RegExp('(^|\\s+)' + m[2] + '(\\s+|$)'));
+          for (i = 0, l = items.length, j = 0; i < l; i++) {
+            r.test(items[i].className) && (result[j++] = items[i]);
+          }
+          return result
+        }
+        for (i = 0, items = selector.split(','), l = items.length; i < l; i++) {
+          collections[i] = _qwery(items[i])
+        }
+        for (i = 0, l = collections.length; i < l && (collection = collections[i]); i++) {
+          var ret = collection
+          if (root !== doc) {
+            ret = []
+            for (j = 0, m = collection.length; j < m && (element = collection[j]); j++) {
+              // make sure element is a descendent of root
+              isAncestor(element, root) && ret.push(element)
+            }
+          }
+          result = result.concat(ret)
+        }
+        return uniq(result)
+      }
+  
+    qwery.uniq = uniq
+    qwery.pseudos = {}
+  
+    var old = context.qwery
+    qwery.noConflict = function () {
+      context.qwery = old
+      return this
+    }
+  
+    return qwery
+  })
+
+  provide("qwery", module.exports);
+
+  !function (doc, $) {
+    var q = require('qwery')
+      , table = 'table'
+      , nodeMap = {
+            thead: table
+          , tbody: table
+          , tfoot: table
+          , tr: 'tbody'
+          , th: 'tr'
+          , td: 'tr'
+          , fieldset: 'form'
+          , option: 'select'
+        }
+    function create(node, root) {
+      var tag = /^<([^\s>]+)/.exec(node)[1]
+        , el = (root || doc).createElement(nodeMap[tag] || 'div'), els = []
+      el.innerHTML = node
+      var nodes = el.childNodes
+      el = el.firstChild
+      els.push(el)
+      while (el = el.nextSibling) (el.nodeType == 1) && els.push(el)
+      return els
+    }
+  
+    $._select = function (s, r) {
+      return /^\s*</.test(s) ? create(s, r) : q(s, r)
+    }
+  
+    $.pseudos = q.pseudos
+  
+    $.ender({
+      find: function (s) {
+        var r = [], i, l, j, k, els
+        for (i = 0, l = this.length; i < l; i++) {
+          els = q(s, this[i])
+          for (j = 0, k = els.length; j < k; j++) r.push(els[j])
+        }
+        return $(q.uniq(r))
+      }
+      , and: function (s) {
+        var plus = $(s)
+        for (var i = this.length, j = 0, l = this.length + plus.length; i < l; i++, j++) {
+          this[i] = plus[j]
+        }
+        return this
+      }
+    }, true)
+  }(document, ender);
+  
+
+}();
+
+!function () {
+
+  var module = { exports: {} }, exports = module.exports;
+
+  !function (context, doc) {
+    var fns = [], ready, ol, fn, f = false,
+        testEl = doc.documentElement,
+        hack = testEl.doScroll,
+        domContentLoaded = 'DOMContentLoaded',
+        addEventListener = 'addEventListener',
+        onreadystatechange = 'onreadystatechange',
+        loaded = /^loade|c/.test(doc.readyState);
+  
+    function flush(i) {
+      loaded = 1;
+      while (i = fns.shift()) { i() }
+    }
+    doc[addEventListener] && doc[addEventListener](domContentLoaded, fn = function () {
+      doc.removeEventListener(domContentLoaded, fn, f);
+      flush();
+    }, f);
+  
+  
+    hack && doc.attachEvent(onreadystatechange, (ol = function () {
+      if (/^c/.test(doc.readyState)) {
+        doc.detachEvent(onreadystatechange, ol);
+        flush();
+      }
+    }));
+  
+    ready = hack ?
+      function (fn) {
+        self != top ?
+          loaded ? fn() : fns.push(fn) :
+          function () {
+            try {
+              testEl.doScroll('left');
+            } catch (e) {
+              return setTimeout(function() { ready(fn) }, 50);
+            }
+            fn();
+          }()
+      } :
+      function (fn) {
+        loaded ? fn() : fns.push(fn);
+      };
+  
+   (typeof module !== 'undefined') ?
+      (module.exports = ready) :
+      (context['domReady'] = ready);
+  
+  }(this, document);
+  
+
+  provide("domready", module.exports);
+
+  !function ($) {
+    var ready = require('domready')
+    $.ender({domReady: ready})
+    $.ender({
+      ready: function (f) {
+        ready(f)
+        return this
+      }
+    }, true)
+  }(ender);
+
+}();
+
+!function () {
+
+  var module = { exports: {} }, exports = module.exports;
+
+  /*!
+   * iScroll v4.1.9 ~ Copyright (c) 2011 Matteo Spinelli, http://cubiq.org
+   * Released under MIT license, http://cubiq.org/license
+   */
+  
+  (function(){
+  var m = Math,
+  	vendor = (/webkit/i).test(navigator.appVersion) ? 'webkit' :
+  		(/firefox/i).test(navigator.userAgent) ? 'Moz' :
+  		'opera' in window ? 'O' : '',
+  
+  	// Browser capabilities
+  	has3d = 'WebKitCSSMatrix' in window && 'm11' in new WebKitCSSMatrix(),
+  	hasTouch = 'ontouchstart' in window,
+  	hasTransform = vendor + 'Transform' in document.documentElement.style,
+  	isAndroid = (/android/gi).test(navigator.appVersion),
+  	isIDevice = (/iphone|ipad/gi).test(navigator.appVersion),
+  	isPlaybook = (/playbook/gi).test(navigator.appVersion),
+  	hasTransitionEnd = isIDevice || isPlaybook,
+  	nextFrame = (function() {
+  	    return window.requestAnimationFrame
+  			|| window.webkitRequestAnimationFrame
+  			|| window.mozRequestAnimationFrame
+  			|| window.oRequestAnimationFrame
+  			|| window.msRequestAnimationFrame
+  			|| function(callback) { return setTimeout(callback, 1); }
+  	})(),
+  	cancelFrame = (function () {
+  	    return window.cancelRequestAnimationFrame
+  			|| window.webkitCancelRequestAnimationFrame
+  			|| window.mozCancelRequestAnimationFrame
+  			|| window.oCancelRequestAnimationFrame
+  			|| window.msCancelRequestAnimationFrame
+  			|| clearTimeout
+  	})(),
+  
+  	// Events
+  	RESIZE_EV = 'onorientationchange' in window ? 'orientationchange' : 'resize',
+  	START_EV = hasTouch ? 'touchstart' : 'mousedown',
+  	MOVE_EV = hasTouch ? 'touchmove' : 'mousemove',
+  	END_EV = hasTouch ? 'touchend' : 'mouseup',
+  	CANCEL_EV = hasTouch ? 'touchcancel' : 'mouseup',
+  	WHEEL_EV = vendor == 'Moz' ? 'DOMMouseScroll' : 'mousewheel',
+  
+  	// Helpers
+  	trnOpen = 'translate' + (has3d ? '3d(' : '('),
+  	trnClose = has3d ? ',0)' : ')',
+  
+  	// Constructor
+  	iScroll = function (el, options) {
+  		var that = this,
+  			doc = document,
+  			i;
+  
+  		that.wrapper = typeof el == 'object' ? el : doc.getElementById(el);
+  		that.wrapper.style.overflow = 'hidden';
+  		that.scroller = that.wrapper.children[0];
+  
+  		// Default options
+  		that.options = {
+  			hScroll: true,
+  			vScroll: true,
+  			x: 0,
+  			y: 0,
+  			bounce: true,
+  			bounceLock: false,
+  			momentum: true,
+  			lockDirection: true,
+  			useTransform: true,
+  			useTransition: false,
+  			topOffset: 0,
+  			checkDOMChanges: false,		// Experimental
+  
+  			// Scrollbar
+  			hScrollbar: true,
+  			vScrollbar: true,
+  			fixedScrollbar: isAndroid,
+  			hideScrollbar: isIDevice,
+  			fadeScrollbar: isIDevice && has3d,
+  			scrollbarClass: '',
+  
+  			// Zoom
+  			zoom: false,
+  			zoomMin: 1,
+  			zoomMax: 4,
+  			doubleTapZoom: 2,
+  			wheelAction: 'scroll',
+  
+  			// Snap
+  			snap: false,
+  			snapThreshold: 1,
+  
+  			// Events
+  			onRefresh: null,
+  			onBeforeScrollStart: function (e) { e.preventDefault(); },
+  			onScrollStart: null,
+  			onBeforeScrollMove: null,
+  			onScrollMove: null,
+  			onBeforeScrollEnd: null,
+  			onScrollEnd: null,
+  			onTouchEnd: null,
+  			onDestroy: null,
+  			onZoomStart: null,
+  			onZoom: null,
+  			onZoomEnd: null
+  		};
+  
+  		// User defined options
+  		for (i in options) that.options[i] = options[i];
+  		
+  		// Set starting position
+  		that.x = that.options.x;
+  		that.y = that.options.y;
+  
+  		// Normalize options
+  		that.options.useTransform = hasTransform ? that.options.useTransform : false;
+  		that.options.hScrollbar = that.options.hScroll && that.options.hScrollbar;
+  		that.options.vScrollbar = that.options.vScroll && that.options.vScrollbar;
+  		that.options.zoom = that.options.useTransform && that.options.zoom;
+  		that.options.useTransition = hasTransitionEnd && that.options.useTransition;
+  		
+  		// Set some default styles
+  		that.scroller.style[vendor + 'TransitionProperty'] = that.options.useTransform ? '-' + vendor.toLowerCase() + '-transform' : 'top left';
+  		that.scroller.style[vendor + 'TransitionDuration'] = '0';
+  		that.scroller.style[vendor + 'TransformOrigin'] = '0 0';
+  		if (that.options.useTransition) that.scroller.style[vendor + 'TransitionTimingFunction'] = 'cubic-bezier(0.33,0.66,0.66,1)';
+  		
+  		if (that.options.useTransform) that.scroller.style[vendor + 'Transform'] = trnOpen + that.x + 'px,' + that.y + 'px' + trnClose;
+  		else that.scroller.style.cssText += ';position:absolute;top:' + that.y + 'px;left:' + that.x + 'px';
+  
+  		if (that.options.useTransition) that.options.fixedScrollbar = true;
+  
+  		that.refresh();
+  
+  		that._bind(RESIZE_EV, window);
+  		that._bind(START_EV);
+  		if (!hasTouch) {
+  			that._bind('mouseout', that.wrapper);
+  			that._bind(WHEEL_EV);
+  		}
+  
+  		if (that.options.checkDOMChanges) that.checkDOMTime = setInterval(function () {
+  			that._checkDOMChanges();
+  		}, 500);
+  	};
+  
+  // Prototype
+  iScroll.prototype = {
+  	enabled: true,
+  	x: 0,
+  	y: 0,
+  	steps: [],
+  	scale: 1,
+  	currPageX: 0, currPageY: 0,
+  	pagesX: [], pagesY: [],
+  	aniTime: null,
+  	wheelZoomCount: 0,
+  	
+  	handleEvent: function (e) {
+  		var that = this;
+  		switch(e.type) {
+  			case START_EV:
+  				if (!hasTouch && e.button !== 0) return;
+  				that._start(e);
+  				break;
+  			case MOVE_EV: that._move(e); break;
+  			case END_EV:
+  			case CANCEL_EV: that._end(e); break;
+  			case RESIZE_EV: that._resize(); break;
+  			case WHEEL_EV: that._wheel(e); break;
+  			case 'mouseout': that._mouseout(e); break;
+  			case 'webkitTransitionEnd': that._transitionEnd(e); break;
+  		}
+  	},
+  	
+  	_checkDOMChanges: function () {
+  		if (this.moved || this.zoomed || this.animating ||
+  			(this.scrollerW == this.scroller.offsetWidth * this.scale && this.scrollerH == this.scroller.offsetHeight * this.scale)) return;
+  
+  		this.refresh();
+  	},
+  	
+  	_scrollbar: function (dir) {
+  		var that = this,
+  			doc = document,
+  			bar;
+  
+  		if (!that[dir + 'Scrollbar']) {
+  			if (that[dir + 'ScrollbarWrapper']) {
+  				if (hasTransform) that[dir + 'ScrollbarIndicator'].style[vendor + 'Transform'] = '';
+  				that[dir + 'ScrollbarWrapper'].parentNode.removeChild(that[dir + 'ScrollbarWrapper']);
+  				that[dir + 'ScrollbarWrapper'] = null;
+  				that[dir + 'ScrollbarIndicator'] = null;
+  			}
+  
+  			return;
+  		}
+  
+  		if (!that[dir + 'ScrollbarWrapper']) {
+  			// Create the scrollbar wrapper
+  			bar = doc.createElement('div');
+  
+  			if (that.options.scrollbarClass) bar.className = that.options.scrollbarClass + dir.toUpperCase();
+  			else bar.style.cssText = 'position:absolute;z-index:100;' + (dir == 'h' ? 'height:7px;bottom:1px;left:2px;right:' + (that.vScrollbar ? '7' : '2') + 'px' : 'width:7px;bottom:' + (that.hScrollbar ? '7' : '2') + 'px;top:2px;right:1px');
+  
+  			bar.style.cssText += ';pointer-events:none;-' + vendor + '-transition-property:opacity;-' + vendor + '-transition-duration:' + (that.options.fadeScrollbar ? '350ms' : '0') + ';overflow:hidden;opacity:' + (that.options.hideScrollbar ? '0' : '1');
+  
+  			that.wrapper.appendChild(bar);
+  			that[dir + 'ScrollbarWrapper'] = bar;
+  
+  			// Create the scrollbar indicator
+  			bar = doc.createElement('div');
+  			if (!that.options.scrollbarClass) {
+  				bar.style.cssText = 'position:absolute;z-index:100;background:rgba(0,0,0,0.5);border:1px solid rgba(255,255,255,0.9);-' + vendor + '-background-clip:padding-box;-' + vendor + '-box-sizing:border-box;' + (dir == 'h' ? 'height:100%' : 'width:100%') + ';-' + vendor + '-border-radius:3px;border-radius:3px';
+  			}
+  			bar.style.cssText += ';pointer-events:none;-' + vendor + '-transition-property:-' + vendor + '-transform;-' + vendor + '-transition-timing-function:cubic-bezier(0.33,0.66,0.66,1);-' + vendor + '-transition-duration:0;-' + vendor + '-transform:' + trnOpen + '0,0' + trnClose;
+  			if (that.options.useTransition) bar.style.cssText += ';-' + vendor + '-transition-timing-function:cubic-bezier(0.33,0.66,0.66,1)';
+  
+  			that[dir + 'ScrollbarWrapper'].appendChild(bar);
+  			that[dir + 'ScrollbarIndicator'] = bar;
+  		}
+  
+  		if (dir == 'h') {
+  			that.hScrollbarSize = that.hScrollbarWrapper.clientWidth;
+  			that.hScrollbarIndicatorSize = m.max(m.round(that.hScrollbarSize * that.hScrollbarSize / that.scrollerW), 8);
+  			that.hScrollbarIndicator.style.width = that.hScrollbarIndicatorSize + 'px';
+  			that.hScrollbarMaxScroll = that.hScrollbarSize - that.hScrollbarIndicatorSize;
+  			that.hScrollbarProp = that.hScrollbarMaxScroll / that.maxScrollX;
+  		} else {
+  			that.vScrollbarSize = that.vScrollbarWrapper.clientHeight;
+  			that.vScrollbarIndicatorSize = m.max(m.round(that.vScrollbarSize * that.vScrollbarSize / that.scrollerH), 8);
+  			that.vScrollbarIndicator.style.height = that.vScrollbarIndicatorSize + 'px';
+  			that.vScrollbarMaxScroll = that.vScrollbarSize - that.vScrollbarIndicatorSize;
+  			that.vScrollbarProp = that.vScrollbarMaxScroll / that.maxScrollY;
+  		}
+  
+  		// Reset position
+  		that._scrollbarPos(dir, true);
+  	},
+  	
+  	_resize: function () {
+  		var that = this;
+  		setTimeout(function () { that.refresh(); }, isAndroid ? 200 : 0);
+  	},
+  	
+  	_pos: function (x, y) {
+  		x = this.hScroll ? x : 0;
+  		y = this.vScroll ? y : 0;
+  
+  		if (this.options.useTransform) {
+  			this.scroller.style[vendor + 'Transform'] = trnOpen + x + 'px,' + y + 'px' + trnClose + ' scale(' + this.scale + ')';
+  		} else {
+  			x = m.round(x);
+  			y = m.round(y);
+  			this.scroller.style.left = x + 'px';
+  			this.scroller.style.top = y + 'px';
+  		}
+  
+  		this.x = x;
+  		this.y = y;
+  
+  		this._scrollbarPos('h');
+  		this._scrollbarPos('v');
+  	},
+  
+  	_scrollbarPos: function (dir, hidden) {
+  		var that = this,
+  			pos = dir == 'h' ? that.x : that.y,
+  			size;
+  
+  		if (!that[dir + 'Scrollbar']) return;
+  
+  		pos = that[dir + 'ScrollbarProp'] * pos;
+  
+  		if (pos < 0) {
+  			if (!that.options.fixedScrollbar) {
+  				size = that[dir + 'ScrollbarIndicatorSize'] + m.round(pos * 3);
+  				if (size < 8) size = 8;
+  				that[dir + 'ScrollbarIndicator'].style[dir == 'h' ? 'width' : 'height'] = size + 'px';
+  			}
+  			pos = 0;
+  		} else if (pos > that[dir + 'ScrollbarMaxScroll']) {
+  			if (!that.options.fixedScrollbar) {
+  				size = that[dir + 'ScrollbarIndicatorSize'] - m.round((pos - that[dir + 'ScrollbarMaxScroll']) * 3);
+  				if (size < 8) size = 8;
+  				that[dir + 'ScrollbarIndicator'].style[dir == 'h' ? 'width' : 'height'] = size + 'px';
+  				pos = that[dir + 'ScrollbarMaxScroll'] + (that[dir + 'ScrollbarIndicatorSize'] - size);
+  			} else {
+  				pos = that[dir + 'ScrollbarMaxScroll'];
+  			}
+  		}
+  
+  		that[dir + 'ScrollbarWrapper'].style[vendor + 'TransitionDelay'] = '0';
+  		that[dir + 'ScrollbarWrapper'].style.opacity = hidden && that.options.hideScrollbar ? '0' : '1';
+  		that[dir + 'ScrollbarIndicator'].style[vendor + 'Transform'] = trnOpen + (dir == 'h' ? pos + 'px,0' : '0,' + pos + 'px') + trnClose;
+  	},
+  	
+  	_start: function (e) {
+  		var that = this,
+  			point = hasTouch ? e.touches[0] : e,
+  			matrix, x, y,
+  			c1, c2;
+  
+  		if (!that.enabled) return;
+  
+  		if (that.options.onBeforeScrollStart) that.options.onBeforeScrollStart.call(that, e);
+  
+  		if (that.options.useTransition || that.options.zoom) that._transitionTime(0);
+  
+  		that.moved = false;
+  		that.animating = false;
+  		that.zoomed = false;
+  		that.distX = 0;
+  		that.distY = 0;
+  		that.absDistX = 0;
+  		that.absDistY = 0;
+  		that.dirX = 0;
+  		that.dirY = 0;
+  
+  		// Gesture start
+  		if (that.options.zoom && hasTouch && e.touches.length > 1) {
+  			c1 = m.abs(e.touches[0].pageX-e.touches[1].pageX);
+  			c2 = m.abs(e.touches[0].pageY-e.touches[1].pageY);
+  			that.touchesDistStart = m.sqrt(c1 * c1 + c2 * c2);
+  
+  			that.originX = m.abs(e.touches[0].pageX + e.touches[1].pageX - that.wrapperOffsetLeft * 2) / 2 - that.x;
+  			that.originY = m.abs(e.touches[0].pageY + e.touches[1].pageY - that.wrapperOffsetTop * 2) / 2 - that.y;
+  
+  			if (that.options.onZoomStart) that.options.onZoomStart.call(that, e);
+  		}
+  
+  		if (that.options.momentum) {
+  			if (that.options.useTransform) {
+  				// Very lame general purpose alternative to CSSMatrix
+  				matrix = getComputedStyle(that.scroller, null)[vendor + 'Transform'].replace(/[^0-9-.,]/g, '').split(',');
+  				x = matrix[4] * 1;
+  				y = matrix[5] * 1;
+  			} else {
+  				x = getComputedStyle(that.scroller, null).left.replace(/[^0-9-]/g, '') * 1;
+  				y = getComputedStyle(that.scroller, null).top.replace(/[^0-9-]/g, '') * 1;
+  			}
+  			
+  			if (x != that.x || y != that.y) {
+  				if (that.options.useTransition) that._unbind('webkitTransitionEnd');
+  				else cancelFrame(that.aniTime);
+  				that.steps = [];
+  				that._pos(x, y);
+  			}
+  		}
+  
+  		that.absStartX = that.x;	// Needed by snap threshold
+  		that.absStartY = that.y;
+  
+  		that.startX = that.x;
+  		that.startY = that.y;
+  		that.pointX = point.pageX;
+  		that.pointY = point.pageY;
+  
+  		that.startTime = e.timeStamp || Date.now();
+  
+  		if (that.options.onScrollStart) that.options.onScrollStart.call(that, e);
+  
+  		that._bind(MOVE_EV);
+  		that._bind(END_EV);
+  		that._bind(CANCEL_EV);
+  	},
+  	
+  	_move: function (e) {
+  		var that = this,
+  			point = hasTouch ? e.touches[0] : e,
+  			deltaX = point.pageX - that.pointX,
+  			deltaY = point.pageY - that.pointY,
+  			newX = that.x + deltaX,
+  			newY = that.y + deltaY,
+  			c1, c2, scale,
+  			timestamp = e.timeStamp || Date.now();
+  
+  		if (that.options.onBeforeScrollMove) that.options.onBeforeScrollMove.call(that, e);
+  
+  		// Zoom
+  		if (that.options.zoom && hasTouch && e.touches.length > 1) {
+  			c1 = m.abs(e.touches[0].pageX - e.touches[1].pageX);
+  			c2 = m.abs(e.touches[0].pageY - e.touches[1].pageY);
+  			that.touchesDist = m.sqrt(c1*c1+c2*c2);
+  
+  			that.zoomed = true;
+  
+  			scale = 1 / that.touchesDistStart * that.touchesDist * this.scale;
+  
+  			if (scale < that.options.zoomMin) scale = 0.5 * that.options.zoomMin * Math.pow(2.0, scale / that.options.zoomMin);
+  			else if (scale > that.options.zoomMax) scale = 2.0 * that.options.zoomMax * Math.pow(0.5, that.options.zoomMax / scale);
+  
+  			that.lastScale = scale / this.scale;
+  
+  			newX = this.originX - this.originX * that.lastScale + this.x,
+  			newY = this.originY - this.originY * that.lastScale + this.y;
+  
+  			this.scroller.style[vendor + 'Transform'] = trnOpen + newX + 'px,' + newY + 'px' + trnClose + ' scale(' + scale + ')';
+  
+  			if (that.options.onZoom) that.options.onZoom.call(that, e);
+  			return;
+  		}
+  
+  		that.pointX = point.pageX;
+  		that.pointY = point.pageY;
+  
+  		// Slow down if outside of the boundaries
+  		if (newX > 0 || newX < that.maxScrollX) {
+  			newX = that.options.bounce ? that.x + (deltaX / 2) : newX >= 0 || that.maxScrollX >= 0 ? 0 : that.maxScrollX;
+  		}
+  		if (newY > that.minScrollY || newY < that.maxScrollY) { 
+  			newY = that.options.bounce ? that.y + (deltaY / 2) : newY >= that.minScrollY || that.maxScrollY >= 0 ? that.minScrollY : that.maxScrollY;
+  		}
+  
+  		if (that.absDistX < 6 && that.absDistY < 6) {
+  			that.distX += deltaX;
+  			that.distY += deltaY;
+  			that.absDistX = m.abs(that.distX);
+  			that.absDistY = m.abs(that.distY);
+  
+  			return;
+  		}
+  
+  		// Lock direction
+  		if (that.options.lockDirection) {
+  			if (that.absDistX > that.absDistY + 5) {
+  				newY = that.y;
+  				deltaY = 0;
+  			} else if (that.absDistY > that.absDistX + 5) {
+  				newX = that.x;
+  				deltaX = 0;
+  			}
+  		}
+  
+  		that.moved = true;
+  		that._pos(newX, newY);
+  		that.dirX = deltaX > 0 ? -1 : deltaX < 0 ? 1 : 0;
+  		that.dirY = deltaY > 0 ? -1 : deltaY < 0 ? 1 : 0;
+  
+  		if (timestamp - that.startTime > 300) {
+  			that.startTime = timestamp;
+  			that.startX = that.x;
+  			that.startY = that.y;
+  		}
+  		
+  		if (that.options.onScrollMove) that.options.onScrollMove.call(that, e);
+  	},
+  	
+  	_end: function (e) {
+  		if (hasTouch && e.touches.length != 0) return;
+  
+  		var that = this,
+  			point = hasTouch ? e.changedTouches[0] : e,
+  			target, ev,
+  			momentumX = { dist:0, time:0 },
+  			momentumY = { dist:0, time:0 },
+  			duration = (e.timeStamp || Date.now()) - that.startTime,
+  			newPosX = that.x,
+  			newPosY = that.y,
+  			distX, distY,
+  			newDuration,
+  			snap,
+  			scale;
+  
+  		that._unbind(MOVE_EV);
+  		that._unbind(END_EV);
+  		that._unbind(CANCEL_EV);
+  
+  		if (that.options.onBeforeScrollEnd) that.options.onBeforeScrollEnd.call(that, e);
+  
+  		if (that.zoomed) {
+  			scale = that.scale * that.lastScale;
+  			scale = Math.max(that.options.zoomMin, scale);
+  			scale = Math.min(that.options.zoomMax, scale);
+  			that.lastScale = scale / that.scale;
+  			that.scale = scale;
+  
+  			that.x = that.originX - that.originX * that.lastScale + that.x;
+  			that.y = that.originY - that.originY * that.lastScale + that.y;
+  			
+  			that.scroller.style[vendor + 'TransitionDuration'] = '200ms';
+  			that.scroller.style[vendor + 'Transform'] = trnOpen + that.x + 'px,' + that.y + 'px' + trnClose + ' scale(' + that.scale + ')';
+  			
+  			that.zoomed = false;
+  			that.refresh();
+  
+  			if (that.options.onZoomEnd) that.options.onZoomEnd.call(that, e);
+  			return;
+  		}
+  
+  		if (!that.moved) {
+  			if (hasTouch) {
+  				if (that.doubleTapTimer && that.options.zoom) {
+  					// Double tapped
+  					clearTimeout(that.doubleTapTimer);
+  					that.doubleTapTimer = null;
+  					if (that.options.onZoomStart) that.options.onZoomStart.call(that, e);
+  					that.zoom(that.pointX, that.pointY, that.scale == 1 ? that.options.doubleTapZoom : 1);
+  					if (that.options.onZoomEnd) {
+  						setTimeout(function() {
+  							that.options.onZoomEnd.call(that, e);
+  						}, 200); // 200 is default zoom duration
+  					}
+  				} else {
+  					that.doubleTapTimer = setTimeout(function () {
+  						that.doubleTapTimer = null;
+  
+  						// Find the last touched element
+  						target = point.target;
+  						while (target.nodeType != 1) target = target.parentNode;
+  
+  						if (target.tagName != 'SELECT' && target.tagName != 'INPUT' && target.tagName != 'TEXTAREA') {
+  							ev = document.createEvent('MouseEvents');
+  							ev.initMouseEvent('click', true, true, e.view, 1,
+  								point.screenX, point.screenY, point.clientX, point.clientY,
+  								e.ctrlKey, e.altKey, e.shiftKey, e.metaKey,
+  								0, null);
+  							ev._fake = true;
+  							target.dispatchEvent(ev);
+  						}
+  					}, that.options.zoom ? 250 : 0);
+  				}
+  			}
+  
+  			that._resetPos(200);
+  
+  			if (that.options.onTouchEnd) that.options.onTouchEnd.call(that, e);
+  			return;
+  		}
+  
+  		if (duration < 300 && that.options.momentum) {
+  			momentumX = newPosX ? that._momentum(newPosX - that.startX, duration, -that.x, that.scrollerW - that.wrapperW + that.x, that.options.bounce ? that.wrapperW : 0) : momentumX;
+  			momentumY = newPosY ? that._momentum(newPosY - that.startY, duration, -that.y, (that.maxScrollY < 0 ? that.scrollerH - that.wrapperH + that.y - that.minScrollY : 0), that.options.bounce ? that.wrapperH : 0) : momentumY;
+  
+  			newPosX = that.x + momentumX.dist;
+  			newPosY = that.y + momentumY.dist;
+  
+   			if ((that.x > 0 && newPosX > 0) || (that.x < that.maxScrollX && newPosX < that.maxScrollX)) momentumX = { dist:0, time:0 };
+   			if ((that.y > that.minScrollY && newPosY > that.minScrollY) || (that.y < that.maxScrollY && newPosY < that.maxScrollY)) momentumY = { dist:0, time:0 };
+  		}
+  
+  		if (momentumX.dist || momentumY.dist) {
+  			newDuration = m.max(m.max(momentumX.time, momentumY.time), 10);
+  
+  			// Do we need to snap?
+  			if (that.options.snap) {
+  				distX = newPosX - that.absStartX;
+  				distY = newPosY - that.absStartY;
+  				if (m.abs(distX) < that.options.snapThreshold && m.abs(distY) < that.options.snapThreshold) { that.scrollTo(that.absStartX, that.absStartY, 200); }
+  				else {
+  					snap = that._snap(newPosX, newPosY);
+  					newPosX = snap.x;
+  					newPosY = snap.y;
+  					newDuration = m.max(snap.time, newDuration);
+  				}
+  			}
+  
+  			that.scrollTo(m.round(newPosX), m.round(newPosY), newDuration);
+  
+  			if (that.options.onTouchEnd) that.options.onTouchEnd.call(that, e);
+  			return;
+  		}
+  
+  		// Do we need to snap?
+  		if (that.options.snap) {
+  			distX = newPosX - that.absStartX;
+  			distY = newPosY - that.absStartY;
+  			if (m.abs(distX) < that.options.snapThreshold && m.abs(distY) < that.options.snapThreshold) that.scrollTo(that.absStartX, that.absStartY, 200);
+  			else {
+  				snap = that._snap(that.x, that.y);
+  				if (snap.x != that.x || snap.y != that.y) that.scrollTo(snap.x, snap.y, snap.time);
+  			}
+  
+  			if (that.options.onTouchEnd) that.options.onTouchEnd.call(that, e);
+  			return;
+  		}
+  
+  		that._resetPos(200);
+  		if (that.options.onTouchEnd) that.options.onTouchEnd.call(that, e);
+  	},
+  	
+  	_resetPos: function (time) {
+  		var that = this,
+  			resetX = that.x >= 0 ? 0 : that.x < that.maxScrollX ? that.maxScrollX : that.x,
+  			resetY = that.y >= that.minScrollY || that.maxScrollY > 0 ? that.minScrollY : that.y < that.maxScrollY ? that.maxScrollY : that.y;
+  
+  		if (resetX == that.x && resetY == that.y) {
+  			if (that.moved) {
+  				that.moved = false;
+  				if (that.options.onScrollEnd) that.options.onScrollEnd.call(that);		// Execute custom code on scroll end
+  			}
+  
+  			if (that.hScrollbar && that.options.hideScrollbar) {
+  				if (vendor == 'webkit') that.hScrollbarWrapper.style[vendor + 'TransitionDelay'] = '300ms';
+  				that.hScrollbarWrapper.style.opacity = '0';
+  			}
+  			if (that.vScrollbar && that.options.hideScrollbar) {
+  				if (vendor == 'webkit') that.vScrollbarWrapper.style[vendor + 'TransitionDelay'] = '300ms';
+  				that.vScrollbarWrapper.style.opacity = '0';
+  			}
+  
+  			return;
+  		}
+  
+  		that.scrollTo(resetX, resetY, time || 0);
+  	},
+  
+  	_wheel: function (e) {
+  		var that = this,
+  			wheelDeltaX, wheelDeltaY,
+  			deltaX, deltaY,
+  			deltaScale;
+  
+  		if ('wheelDeltaX' in e) {
+  			wheelDeltaX = e.wheelDeltaX / 12;
+  			wheelDeltaY = e.wheelDeltaY / 12;
+  		} else if ('detail' in e) {
+  			wheelDeltaX = wheelDeltaY = -e.detail * 3;
+  		} else {
+  			wheelDeltaX = wheelDeltaY = -e.wheelDelta;
+  		}
+  		
+  		if (that.options.wheelAction == 'zoom') {
+  			deltaScale = that.scale * Math.pow(2, 1/3 * (wheelDeltaY ? wheelDeltaY / Math.abs(wheelDeltaY) : 0));
+  			if (deltaScale < that.options.zoomMin) deltaScale = that.options.zoomMin;
+  			if (deltaScale > that.options.zoomMax) deltaScale = that.options.zoomMax;
+  			
+  			if (deltaScale != that.scale) {
+  				if (!that.wheelZoomCount && that.options.onZoomStart) that.options.onZoomStart.call(that, e);
+  				that.wheelZoomCount++;
+  				
+  				that.zoom(e.pageX, e.pageY, deltaScale, 400);
+  				
+  				setTimeout(function() {
+  					that.wheelZoomCount--;
+  					if (!that.wheelZoomCount && that.options.onZoomEnd) that.options.onZoomEnd.call(that, e);
+  				}, 400);
+  			}
+  			
+  			return;
+  		}
+  		
+  		deltaX = that.x + wheelDeltaX;
+  		deltaY = that.y + wheelDeltaY;
+  
+  		if (deltaX > 0) deltaX = 0;
+  		else if (deltaX < that.maxScrollX) deltaX = that.maxScrollX;
+  
+  		if (deltaY > that.minScrollY) deltaY = that.minScrollY;
+  		else if (deltaY < that.maxScrollY) deltaY = that.maxScrollY;
+  
+  		that.scrollTo(deltaX, deltaY, 0);
+  	},
+  	
+  	_mouseout: function (e) {
+  		var t = e.relatedTarget;
+  
+  		if (!t) {
+  			this._end(e);
+  			return;
+  		}
+  
+  		while (t = t.parentNode) if (t == this.wrapper) return;
+  		
+  		this._end(e);
+  	},
+  
+  	_transitionEnd: function (e) {
+  		var that = this;
+  
+  		if (e.target != that.scroller) return;
+  
+  		that._unbind('webkitTransitionEnd');
+  		
+  		that._startAni();
+  	},
+  
+  
+  	/**
+  	 *
+  	 * Utilities
+  	 *
+  	 */
+  	_startAni: function () {
+  		var that = this,
+  			startX = that.x, startY = that.y,
+  			startTime = Date.now(),
+  			step, easeOut,
+  			animate;
+  
+  		if (that.animating) return;
+  		
+  		if (!that.steps.length) {
+  			that._resetPos(400);
+  			return;
+  		}
+  		
+  		step = that.steps.shift();
+  		
+  		if (step.x == startX && step.y == startY) step.time = 0;
+  
+  		that.animating = true;
+  		that.moved = true;
+  		
+  		if (that.options.useTransition) {
+  			that._transitionTime(step.time);
+  			that._pos(step.x, step.y);
+  			that.animating = false;
+  			if (step.time) that._bind('webkitTransitionEnd');
+  			else that._resetPos(0);
+  			return;
+  		}
+  
+  		animate = function () {
+  			var now = Date.now(),
+  				newX, newY;
+  
+  			if (now >= startTime + step.time) {
+  				that._pos(step.x, step.y);
+  				that.animating = false;
+  				if (that.options.onAnimationEnd) that.options.onAnimationEnd.call(that);			// Execute custom code on animation end
+  				that._startAni();
+  				return;
+  			}
+  
+  			now = (now - startTime) / step.time - 1;
+  			easeOut = m.sqrt(1 - now * now);
+  			newX = (step.x - startX) * easeOut + startX;
+  			newY = (step.y - startY) * easeOut + startY;
+  			that._pos(newX, newY);
+  			if (that.animating) that.aniTime = nextFrame(animate);
+  		};
+  
+  		animate();
+  	},
+  
+  	_transitionTime: function (time) {
+  		time += 'ms';
+  		this.scroller.style[vendor + 'TransitionDuration'] = time;
+  		if (this.hScrollbar) this.hScrollbarIndicator.style[vendor + 'TransitionDuration'] = time;
+  		if (this.vScrollbar) this.vScrollbarIndicator.style[vendor + 'TransitionDuration'] = time;
+  	},
+  
+  	_momentum: function (dist, time, maxDistUpper, maxDistLower, size) {
+  		var deceleration = 0.0006,
+  			speed = m.abs(dist) / time,
+  			newDist = (speed * speed) / (2 * deceleration),
+  			newTime = 0, outsideDist = 0;
+  
+  		// Proportinally reduce speed if we are outside of the boundaries 
+  		if (dist > 0 && newDist > maxDistUpper) {
+  			outsideDist = size / (6 / (newDist / speed * deceleration));
+  			maxDistUpper = maxDistUpper + outsideDist;
+  			speed = speed * maxDistUpper / newDist;
+  			newDist = maxDistUpper;
+  		} else if (dist < 0 && newDist > maxDistLower) {
+  			outsideDist = size / (6 / (newDist / speed * deceleration));
+  			maxDistLower = maxDistLower + outsideDist;
+  			speed = speed * maxDistLower / newDist;
+  			newDist = maxDistLower;
+  		}
+  
+  		newDist = newDist * (dist < 0 ? -1 : 1);
+  		newTime = speed / deceleration;
+  
+  		return { dist: newDist, time: m.round(newTime) };
+  	},
+  
+  	_offset: function (el) {
+  		var left = -el.offsetLeft,
+  			top = -el.offsetTop;
+  			
+  		while (el = el.offsetParent) {
+  			left -= el.offsetLeft;
+  			top -= el.offsetTop;
+  		}
+  		
+  		if (el != this.wrapper) {
+  			left *= this.scale;
+  			top *= this.scale;
+  		}
+  
+  		return { left: left, top: top };
+  	},
+  
+  	_snap: function (x, y) {
+  		var that = this,
+  			i, l,
+  			page, time,
+  			sizeX, sizeY;
+  
+  		// Check page X
+  		page = that.pagesX.length - 1;
+  		for (i=0, l=that.pagesX.length; i<l; i++) {
+  			if (x >= that.pagesX[i]) {
+  				page = i;
+  				break;
+  			}
+  		}
+  		if (page == that.currPageX && page > 0 && that.dirX < 0) page--;
+  		x = that.pagesX[page];
+  		sizeX = m.abs(x - that.pagesX[that.currPageX]);
+  		sizeX = sizeX ? m.abs(that.x - x) / sizeX * 500 : 0;
+  		that.currPageX = page;
+  
+  		// Check page Y
+  		page = that.pagesY.length-1;
+  		for (i=0; i<page; i++) {
+  			if (y >= that.pagesY[i]) {
+  				page = i;
+  				break;
+  			}
+  		}
+  		if (page == that.currPageY && page > 0 && that.dirY < 0) page--;
+  		y = that.pagesY[page];
+  		sizeY = m.abs(y - that.pagesY[that.currPageY]);
+  		sizeY = sizeY ? m.abs(that.y - y) / sizeY * 500 : 0;
+  		that.currPageY = page;
+  
+  		// Snap with constant speed (proportional duration)
+  		time = m.round(m.max(sizeX, sizeY)) || 200;
+  
+  		return { x: x, y: y, time: time };
+  	},
+  
+  	_bind: function (type, el, bubble) {
+  		(el || this.scroller).addEventListener(type, this, !!bubble);
+  	},
+  
+  	_unbind: function (type, el, bubble) {
+  		(el || this.scroller).removeEventListener(type, this, !!bubble);
+  	},
+  
+  
+  	/**
+  	 *
+  	 * Public methods
+  	 *
+  	 */
+  	destroy: function () {
+  		var that = this;
+  
+  		that.scroller.style[vendor + 'Transform'] = '';
+  
+  		// Remove the scrollbars
+  		that.hScrollbar = false;
+  		that.vScrollbar = false;
+  		that._scrollbar('h');
+  		that._scrollbar('v');
+  
+  		// Remove the event listeners
+  		that._unbind(RESIZE_EV, window);
+  		that._unbind(START_EV);
+  		that._unbind(MOVE_EV);
+  		that._unbind(END_EV);
+  		that._unbind(CANCEL_EV);
+  		
+  		if (that.options.hasTouch) {
+  			that._unbind('mouseout', that.wrapper);
+  			that._unbind(WHEEL_EV);
+  		}
+  		
+  		if (that.options.useTransition) that._unbind('webkitTransitionEnd');
+  		
+  		if (that.options.checkDOMChanges) clearInterval(that.checkDOMTime);
+  		
+  		if (that.options.onDestroy) that.options.onDestroy.call(that);
+  	},
+  
+  	refresh: function () {
+  		var that = this,
+  			offset,
+  			i, l,
+  			els,
+  			pos = 0,
+  			page = 0;
+  
+  		if (that.scale < that.options.zoomMin) that.scale = that.options.zoomMin;
+  		that.wrapperW = that.wrapper.clientWidth || 1;
+  		that.wrapperH = that.wrapper.clientHeight || 1;
+  
+  		that.minScrollY = -that.options.topOffset || 0;
+  		that.scrollerW = m.round(that.scroller.offsetWidth * that.scale);
+  		that.scrollerH = m.round((that.scroller.offsetHeight + that.minScrollY) * that.scale);
+  		that.maxScrollX = that.wrapperW - that.scrollerW;
+  		that.maxScrollY = that.wrapperH - that.scrollerH + that.minScrollY;
+  		that.dirX = 0;
+  		that.dirY = 0;
+  
+  		if (that.options.onRefresh) that.options.onRefresh.call(that);
+  
+  		that.hScroll = that.options.hScroll && that.maxScrollX < 0;
+  		that.vScroll = that.options.vScroll && (!that.options.bounceLock && !that.hScroll || that.scrollerH > that.wrapperH);
+  
+  		that.hScrollbar = that.hScroll && that.options.hScrollbar;
+  		that.vScrollbar = that.vScroll && that.options.vScrollbar && that.scrollerH > that.wrapperH;
+  
+  		offset = that._offset(that.wrapper);
+  		that.wrapperOffsetLeft = -offset.left;
+  		that.wrapperOffsetTop = -offset.top;
+  
+  		// Prepare snap
+  		if (typeof that.options.snap == 'string') {
+  			that.pagesX = [];
+  			that.pagesY = [];
+  			els = that.scroller.querySelectorAll(that.options.snap);
+  			for (i=0, l=els.length; i<l; i++) {
+  				pos = that._offset(els[i]);
+  				pos.left += that.wrapperOffsetLeft;
+  				pos.top += that.wrapperOffsetTop;
+  				that.pagesX[i] = pos.left < that.maxScrollX ? that.maxScrollX : pos.left * that.scale;
+  				that.pagesY[i] = pos.top < that.maxScrollY ? that.maxScrollY : pos.top * that.scale;
+  			}
+  		} else if (that.options.snap) {
+  			that.pagesX = [];
+  			while (pos >= that.maxScrollX) {
+  				that.pagesX[page] = pos;
+  				pos = pos - that.wrapperW;
+  				page++;
+  			}
+  			if (that.maxScrollX%that.wrapperW) that.pagesX[that.pagesX.length] = that.maxScrollX - that.pagesX[that.pagesX.length-1] + that.pagesX[that.pagesX.length-1];
+  
+  			pos = 0;
+  			page = 0;
+  			that.pagesY = [];
+  			while (pos >= that.maxScrollY) {
+  				that.pagesY[page] = pos;
+  				pos = pos - that.wrapperH;
+  				page++;
+  			}
+  			if (that.maxScrollY%that.wrapperH) that.pagesY[that.pagesY.length] = that.maxScrollY - that.pagesY[that.pagesY.length-1] + that.pagesY[that.pagesY.length-1];
+  		}
+  
+  		// Prepare the scrollbars
+  		that._scrollbar('h');
+  		that._scrollbar('v');
+  
+  		if (!that.zoomed) {
+  			that.scroller.style[vendor + 'TransitionDuration'] = '0';
+  			that._resetPos(200);
+  		}
+  	},
+  
+  	scrollTo: function (x, y, time, relative) {
+  		var that = this,
+  			step = x,
+  			i, l;
+  
+  		that.stop();
+  
+  		if (!step.length) step = [{ x: x, y: y, time: time, relative: relative }];
+  		
+  		for (i=0, l=step.length; i<l; i++) {
+  			if (step[i].relative) { step[i].x = that.x - step[i].x; step[i].y = that.y - step[i].y; }
+  			that.steps.push({ x: step[i].x, y: step[i].y, time: step[i].time || 0 });
+  		}
+  
+  		that._startAni();
+  	},
+  
+  	scrollToElement: function (el, time) {
+  		var that = this, pos;
+  		el = el.nodeType ? el : that.scroller.querySelector(el);
+  		if (!el) return;
+  
+  		pos = that._offset(el);
+  		pos.left += that.wrapperOffsetLeft;
+  		pos.top += that.wrapperOffsetTop;
+  
+  		pos.left = pos.left > 0 ? 0 : pos.left < that.maxScrollX ? that.maxScrollX : pos.left;
+  		pos.top = pos.top > that.minScrollY ? that.minScrollY : pos.top < that.maxScrollY ? that.maxScrollY : pos.top;
+  		time = time === undefined ? m.max(m.abs(pos.left)*2, m.abs(pos.top)*2) : time;
+  
+  		that.scrollTo(pos.left, pos.top, time);
+  	},
+  
+  	scrollToPage: function (pageX, pageY, time) {
+  		var that = this, x, y;
+  
+  		if (that.options.onScrollStart) that.options.onScrollStart.call(that);
+  
+  		if (that.options.snap) {
+  			pageX = pageX == 'next' ? that.currPageX+1 : pageX == 'prev' ? that.currPageX-1 : pageX;
+  			pageY = pageY == 'next' ? that.currPageY+1 : pageY == 'prev' ? that.currPageY-1 : pageY;
+  
+  			pageX = pageX < 0 ? 0 : pageX > that.pagesX.length-1 ? that.pagesX.length-1 : pageX;
+  			pageY = pageY < 0 ? 0 : pageY > that.pagesY.length-1 ? that.pagesY.length-1 : pageY;
+  
+  			that.currPageX = pageX;
+  			that.currPageY = pageY;
+  			x = that.pagesX[pageX];
+  			y = that.pagesY[pageY];
+  		} else {
+  			x = -that.wrapperW * pageX;
+  			y = -that.wrapperH * pageY;
+  			if (x < that.maxScrollX) x = that.maxScrollX;
+  			if (y < that.maxScrollY) y = that.maxScrollY;
+  		}
+  
+  		that.scrollTo(x, y, time || 400);
+  	},
+  
+  	disable: function () {
+  		this.stop();
+  		this._resetPos(0);
+  		this.enabled = false;
+  
+  		// If disabled after touchstart we make sure that there are no left over events
+  		this._unbind(MOVE_EV);
+  		this._unbind(END_EV);
+  		this._unbind(CANCEL_EV);
+  	},
+  	
+  	enable: function () {
+  		this.enabled = true;
+  	},
+  	
+  	stop: function () {
+  		if (this.options.useTransition) this._unbind('webkitTransitionEnd');
+  		else cancelFrame(this.aniTime);
+  		this.steps = [];
+  		this.moved = false;
+  		this.animating = false;
+  	},
+  	
+  	zoom: function (x, y, scale, time) {
+  		var that = this,
+  			relScale = scale / that.scale;
+  
+  		if (!that.options.useTransform) return;
+  
+  		that.zoomed = true;
+  		time = time === undefined ? 200 : time;
+  		x = x - that.wrapperOffsetLeft - that.x;
+  		y = y - that.wrapperOffsetTop - that.y;
+  		that.x = x - x * relScale + that.x;
+  		that.y = y - y * relScale + that.y;
+  
+  		that.scale = scale;
+  		that.refresh();
+  
+  		that.x = that.x > 0 ? 0 : that.x < that.maxScrollX ? that.maxScrollX : that.x;
+  		that.y = that.y > that.minScrollY ? that.minScrollY : that.y < that.maxScrollY ? that.maxScrollY : that.y;
+  
+  		that.scroller.style[vendor + 'TransitionDuration'] = time + 'ms';
+  		that.scroller.style[vendor + 'Transform'] = trnOpen + that.x + 'px,' + that.y + 'px' + trnClose + ' scale(' + scale + ')';
+  		that.zoomed = false;
+  	},
+  	
+  	isReady: function () {
+  		return !this.moved && !this.zoomed && !this.animating;
+  	}
+  };
+  
+  if (typeof exports !== 'undefined') exports.iScroll = iScroll;
+  else window.iScroll = iScroll;
+  
+  })();
+  
+
+  provide("iscroll", module.exports);
+
+  !function ($, iScroll) {
+    $.ender({
+      iScroll: function (options) {
+        return new iScroll(this[0], options)
+      }
+    }, true)
+  }(ender, require('iscroll').iScroll)
+
+}();
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/src/iscroll/examples/ender/ender.min.js b/public/admin/js/osmplayer/src/iscroll/examples/ender/ender.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..c7fcaff487fa4b91b782533bbbe4040b8cb05e61
--- /dev/null
+++ b/public/admin/js/osmplayer/src/iscroll/examples/ender/ender.min.js
@@ -0,0 +1,27 @@
+/*!
+  * =============================================================
+  * Ender: open module JavaScript framework (https://ender.no.de)
+  * Build: ender build qwery domready ../../
+  * =============================================================
+  */
+
+
+/*!
+  * Ender-JS: open module JavaScript framework (client-lib)
+  * copyright Dustin Diaz & Jacob Thornton 2011 (@ded @fat)
+  * https://ender.no.de
+  * License MIT
+  */
+!function(a){function c(a){var c=b[a]||window[a];if(!c)throw new Error("Requested module '"+a+"' has not been defined.");return c}function d(a,c){return b[a]=c}function e(a,b){for(var c in b)c!="noConflict"&&c!="_VERSION"&&(a[c]=b[c]);return a}function f(a,b,c){return g._select&&(typeof a=="string"||a.nodeName||a.length&&"item"in a||a==window)?(c=g._select(a,b),c.selector=a):c=isFinite(a.length)?a:[a],e(c,f)}function g(a,b){return f(a,b)}a.global=a;var b={};a.provide=d,a.require=c,e(g,{_VERSION:"0.2.5",ender:function(a,b){e(b?f:g,a)},fn:a.$&&a.$.fn||{}}),e(f,{forEach:function(a,b,c){for(c=0,l=this.length;c<l;++c)c in this&&a.call(b||this[c],this[c],c,this);return this},$:g});var h=a.$;g.noConflict=function(){return a.$=h,this},typeof module!="undefined"&&module.exports&&(module.exports=g),a.ender=a.$=a.ender||g}(this),!function(){var a={exports:{}},b=a.exports;
+/*!
+    * Qwery - A Blazing Fast query selector engine
+    * https://github.com/ded/qwery
+    * copyright Dustin Diaz & Jacob Thornton 2011
+    * MIT License
+    */
+!function(b,c){typeof define=="function"?define(c):typeof a!="undefined"?a.exports=c():this[b]=c()}("qwery",function(){function L(){this.c={}}function Q(a){k=[];for(d=0,g=a.length;d<g;d++)Z(a[d])?k=k.concat(a[d]):k.push(a[d]);return k}function R(a){while(a=a.previousSibling)if(a.nodeType==1)break;return a}function S(a){return a.match(J)}function T(a,b,c,e,f,g,h,j,k,l,m){var n,o,q;if(b&&this.tagName.toLowerCase()!==b)return!1;if(c&&(n=c.match(u))&&n[1]!==this.id)return!1;if(c&&(p=c.match(v)))for(d=p.length;d--;){o=p[d].slice(1);if(!(M.g(o)||M.s(o,new RegExp("(^|\\s+)"+o+"(\\s+|$)"))).test(this.className))return!1}if(k&&_.pseudos[k]&&!_.pseudos[k](this,m))return!1;if(e&&!h){i=this.attributes;for(q in i)if(Object.prototype.hasOwnProperty.call(i,q)&&(i[q].name||q)==f)return this}return e&&!V(g,this.getAttribute(f)||"",h)?!1:this}function U(a){return N.g(a)||N.s(a,a.replace(D,"\\$1"))}function V(a,b,c){switch(a){case"=":return b==c;case"^=":return b.match(O.g("^="+c)||O.s("^="+c,new RegExp("^"+U(c))));case"$=":return b.match(O.g("$="+c)||O.s("$="+c,new RegExp(U(c)+"$")));case"*=":return b.match(O.g(c)||O.s(c,new RegExp(U(c))));case"~=":return b.match(O.g("~="+c)||O.s("~="+c,new RegExp("(?:^|\\s+)"+U(c)+"(?:\\s+|$)")));case"|=":return b.match(O.g("|="+c)||O.s("|="+c,new RegExp("^"+U(c)+"(-|$)")))}return 0}function W(a){var c=[],d=[],e,f=0,g,h,i,j,k,l,m,n,p,q,r,s=P.g(a)||P.s(a,a.split(I)),t=a.match(H),u;s=s.slice(0);if(!s.length)return c;k=s.pop(),n=s.length&&(i=s[s.length-1].match(w))?b.getElementById(i[1]):b;if(!n)return c;p=S(k),m=t&&/^[+~]$/.test(t[t.length-1])?function(a){while(n=n.nextSibling)n.nodeType==1&&(p[1]?p[1]==n.tagName.toLowerCase():1)&&a.push(n);return a}([]):n.getElementsByTagName(p[1]||"*");for(e=0,h=m.length;e<h;e++)if(q=T.apply(m[e],p))c[f++]=q;if(!s.length)return c;for(f=0,h=c.length,g=0;f<h;f++){j=c[f];for(e=s.length;e--;)while(j=K[t[e]](j,c[f]))if(o=T.apply(j,S(s[e])))break;o&&(d[g++]=c[f])}return d}function X(a){return a&&a.nodeType&&(a.nodeType==1||a.nodeType==9)}function Y(a){var b=[],c,d;e:for(c=0;c<a.length;c++){for(d=0;d<b.length;d++)if(b[d]==a[c])continue e;b[b.length]=a[c]}return b}function Z(a){return typeof a=="object"&&isFinite(a.length)}function $(a){return a?typeof a=="string"?_(a)[0]:Z(a)?a[0]:a:b}function _(a,c){var d=$(c);return!d||!a?[]:a===window||X(a)?!c||a!==window&&X(d)&&ba(a,d)?[a]:[]:a&&Z(a)?Q(a):(h=a.match(w))?(m=b.getElementById(h[1]))?[m]:[]:(h=a.match(y))?Q(d.getElementsByTagName(h[1])):bc(a,d)}var a=this,b=document,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t=b.documentElement,u=/#([\w\-]+)/,v=/\.[\w\-]+/g,w=/^#([\w\-]+$)/,x=/^\.([\w\-]+)$/,y=/^([\w\-]+)$/,z=/^([\w]+)?\.([\w\-]+)$/,A=/\s*([\s\+\~>])\s*/g,B=/[\s\>\+\~]/,C=/(?![\s\w\-\/\?\&\=\:\.\(\)\!,@#%<>\{\}\$\*\^'"]*\]|[\s\w\+\-]*\))/,D=/([.*+?\^=!:${}()|\[\]\/\\])/g,E=/^([a-z0-9]+)?(?:([\.\#]+[\w\-\.#]+)?)/,F=/\[([\w\-]+)(?:([\|\^\$\*\~]?\=)['"]?([ \w\-\/\?\&\=\:\.\(\)\!,@#%<>\{\}\$\*\^]+)["']?)?\]/,G=/:([\w\-]+)(\(['"]?([\s\w\+\-]+)['"]?\))?/,H=new RegExp("("+B.source+")"+C.source,"g"),I=new RegExp(B.source+C.source),J=new RegExp(E.source+"("+F.source+")?"+"("+G.source+")?"),K={" ":function(a){return a&&a!==t&&a.parentNode},">":function(a,b){return a&&a.parentNode==b.parentNode&&a.parentNode},"~":function(a){return a&&a.previousSibling},"+":function(a,b,c,d){return a?(c=R(a),d=R(b),c&&d&&c==d&&c):!1}};L.prototype={g:function(a){return this.c[a]||undefined},s:function(a,b){return this.c[a]=b,b}};var M=new L,N=new L,O=new L,P=new L,ba="compareDocumentPosition"in t?function(a,b){return(b.compareDocumentPosition(a)&16)==16}:"contains"in t?function(a,c){return c=c==b||c==window?t:c,c!==a&&c.contains(a)}:function(a,b){while(a=a.parentNode)if(a===b)return 1;return 0},bb=function(){if(!b.querySelector||!b.querySelectorAll)return!1;try{return b.querySelectorAll(":nth-of-type(1)").length>0}catch(a){return!1}}(),bc=bb?function(a,c){return b.getElementsByClassName&&(h=a.match(x))?Q(c.getElementsByClassName(h[1])):Q(c.querySelectorAll(a))}:function(a,c){a=a.replace(A,"$1");var d=[],f,i,j=[],l;if(h=a.match(z)){r=c.getElementsByTagName(h[1]||"*"),k=M.g(h[2])||M.s(h[2],new RegExp("(^|\\s+)"+h[2]+"(\\s+|$)"));for(l=0,g=r.length,e=0;l<g;l++)k.test(r[l].className)&&(d[e++]=r[l]);return d}for(l=0,r=a.split(","),g=r.length;l<g;l++)j[l]=W(r[l]);for(l=0,g=j.length;l<g&&(i=j[l]);l++){var m=i;if(c!==b){m=[];for(e=0,h=i.length;e<h&&(f=i[e]);e++)ba(f,c)&&m.push(f)}d=d.concat(m)}return Y(d)};_.uniq=Y,_.pseudos={};var bd=a.qwery;return _.noConflict=function(){return a.qwery=bd,this},_}),provide("qwery",a.exports),!function(a,b){function f(b,c){var d=/^<([^\s>]+)/.exec(b)[1],f=(c||a).createElement(e[d]||"div"),g=[];f.innerHTML=b;var h=f.childNodes;f=f.firstChild,g.push(f);while(f=f.nextSibling)f.nodeType==1&&g.push(f);return g}var c=require("qwery"),d="table",e={thead:d,tbody:d,tfoot:d,tr:"tbody",th:"tr",td:"tr",fieldset:"form",option:"select"};b._select=function(a,b){return/^\s*</.test(a)?f(a,b):c(a,b)},b.pseudos=c.pseudos,b.ender({find:function(a){var d=[],e,f,g,h,i;for(e=0,f=this.length;e<f;e++){i=c(a,this[e]);for(g=0,h=i.length;g<h;g++)d.push(i[g])}return b(c.uniq(d))},and:function(a){var c=b(a);for(var d=this.length,e=0,f=this.length+c.length;d<f;d++,e++)this[d]=c[e];return this}},!0)}(document,ender)}(),!function(){var a={exports:{}},b=a.exports;!function(b,c){function o(a){n=1;while(a=d.shift())a()}var d=[],e,f,g,h=!1,i=c.documentElement,j=i.doScroll,k="DOMContentLoaded",l="addEventListener",m="onreadystatechange",n=/^loade|c/.test(c.readyState);c[l]&&c[l](k,g=function(){c.removeEventListener(k,g,h),o()},h),j&&c.attachEvent(m,f=function(){/^c/.test(c.readyState)&&(c.detachEvent(m,f),o())}),e=j?function(a){self!=top?n?a():d.push(a):function(){try{i.doScroll("left")}catch(b){return setTimeout(function(){e(a)},50)}a()}()}:function(a){n?a():d.push(a)},typeof a!="undefined"?a.exports=e:b.domReady=e}(this,document),provide("domready",a.exports),!function(a){var b=require("domready");a.ender({domReady:b}),a.ender({ready:function(a){return b(a),this}},!0)}(ender)}(),!function(){var a={exports:{}},b=a.exports;
+/*!
+   * iScroll v4.1.9 ~ Copyright (c) 2011 Matteo Spinelli, http://cubiq.org
+   * Released under MIT license, http://cubiq.org/license
+   */
+function(){var a=Math,c=/webkit/i.test(navigator.appVersion)?"webkit":/firefox/i.test(navigator.userAgent)?"Moz":"opera"in window?"O":"",d="WebKitCSSMatrix"in window&&"m11"in new WebKitCSSMatrix,e="ontouchstart"in window,f=c+"Transform"in document.documentElement.style,g=/android/gi.test(navigator.appVersion),h=/iphone|ipad/gi.test(navigator.appVersion),i=/playbook/gi.test(navigator.appVersion),j=h||i,k=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){return setTimeout(a,1)}}(),l=function(){return window.cancelRequestAnimationFrame||window.webkitCancelRequestAnimationFrame||window.mozCancelRequestAnimationFrame||window.oCancelRequestAnimationFrame||window.msCancelRequestAnimationFrame||clearTimeout}(),m="onorientationchange"in window?"orientationchange":"resize",n=e?"touchstart":"mousedown",o=e?"touchmove":"mousemove",p=e?"touchend":"mouseup",q=e?"touchcancel":"mouseup",r=c=="Moz"?"DOMMouseScroll":"mousewheel",s="translate"+(d?"3d(":"("),t=d?",0)":")",u=function(a,b){var i=this,k=document,l;i.wrapper=typeof a=="object"?a:k.getElementById(a),i.wrapper.style.overflow="hidden",i.scroller=i.wrapper.children[0],i.options={hScroll:!0,vScroll:!0,x:0,y:0,bounce:!0,bounceLock:!1,momentum:!0,lockDirection:!0,useTransform:!0,useTransition:!1,topOffset:0,checkDOMChanges:!1,hScrollbar:!0,vScrollbar:!0,fixedScrollbar:g,hideScrollbar:h,fadeScrollbar:h&&d,scrollbarClass:"",zoom:!1,zoomMin:1,zoomMax:4,doubleTapZoom:2,wheelAction:"scroll",snap:!1,snapThreshold:1,onRefresh:null,onBeforeScrollStart:function(a){a.preventDefault()},onScrollStart:null,onBeforeScrollMove:null,onScrollMove:null,onBeforeScrollEnd:null,onScrollEnd:null,onTouchEnd:null,onDestroy:null,onZoomStart:null,onZoom:null,onZoomEnd:null};for(l in b)i.options[l]=b[l];i.x=i.options.x,i.y=i.options.y,i.options.useTransform=f?i.options.useTransform:!1,i.options.hScrollbar=i.options.hScroll&&i.options.hScrollbar,i.options.vScrollbar=i.options.vScroll&&i.options.vScrollbar,i.options.zoom=i.options.useTransform&&i.options.zoom,i.options.useTransition=j&&i.options.useTransition,i.scroller.style[c+"TransitionProperty"]=i.options.useTransform?"-"+c.toLowerCase()+"-transform":"top left",i.scroller.style[c+"TransitionDuration"]="0",i.scroller.style[c+"TransformOrigin"]="0 0",i.options.useTransition&&(i.scroller.style[c+"TransitionTimingFunction"]="cubic-bezier(0.33,0.66,0.66,1)"),i.options.useTransform?i.scroller.style[c+"Transform"]=s+i.x+"px,"+i.y+"px"+t:i.scroller.style.cssText+=";position:absolute;top:"+i.y+"px;left:"+i.x+"px",i.options.useTransition&&(i.options.fixedScrollbar=!0),i.refresh(),i._bind(m,window),i._bind(n),e||(i._bind("mouseout",i.wrapper),i._bind(r)),i.options.checkDOMChanges&&(i.checkDOMTime=setInterval(function(){i._checkDOMChanges()},500))};u.prototype={enabled:!0,x:0,y:0,steps:[],scale:1,currPageX:0,currPageY:0,pagesX:[],pagesY:[],aniTime:null,wheelZoomCount:0,handleEvent:function(a){var b=this;switch(a.type){case n:if(!e&&a.button!==0)return;b._start(a);break;case o:b._move(a);break;case p:case q:b._end(a);break;case m:b._resize();break;case r:b._wheel(a);break;case"mouseout":b._mouseout(a);break;case"webkitTransitionEnd":b._transitionEnd(a)}},_checkDOMChanges:function(){if(this.moved||this.zoomed||this.animating||this.scrollerW==this.scroller.offsetWidth*this.scale&&this.scrollerH==this.scroller.offsetHeight*this.scale)return;this.refresh()},_scrollbar:function(b){var d=this,e=document,g;if(!d[b+"Scrollbar"]){d[b+"ScrollbarWrapper"]&&(f&&(d[b+"ScrollbarIndicator"].style[c+"Transform"]=""),d[b+"ScrollbarWrapper"].parentNode.removeChild(d[b+"ScrollbarWrapper"]),d[b+"ScrollbarWrapper"]=null,d[b+"ScrollbarIndicator"]=null);return}d[b+"ScrollbarWrapper"]||(g=e.createElement("div"),d.options.scrollbarClass?g.className=d.options.scrollbarClass+b.toUpperCase():g.style.cssText="position:absolute;z-index:100;"+(b=="h"?"height:7px;bottom:1px;left:2px;right:"+(d.vScrollbar?"7":"2")+"px":"width:7px;bottom:"+(d.hScrollbar?"7":"2")+"px;top:2px;right:1px"),g.style.cssText+=";pointer-events:none;-"+c+"-transition-property:opacity;-"+c+"-transition-duration:"+(d.options.fadeScrollbar?"350ms":"0")+";overflow:hidden;opacity:"+(d.options.hideScrollbar?"0":"1"),d.wrapper.appendChild(g),d[b+"ScrollbarWrapper"]=g,g=e.createElement("div"),d.options.scrollbarClass||(g.style.cssText="position:absolute;z-index:100;background:rgba(0,0,0,0.5);border:1px solid rgba(255,255,255,0.9);-"+c+"-background-clip:padding-box;-"+c+"-box-sizing:border-box;"+(b=="h"?"height:100%":"width:100%")+";-"+c+"-border-radius:3px;border-radius:3px"),g.style.cssText+=";pointer-events:none;-"+c+"-transition-property:-"+c+"-transform;-"+c+"-transition-timing-function:cubic-bezier(0.33,0.66,0.66,1);-"+c+"-transition-duration:0;-"+c+"-transform:"+s+"0,0"+t,d.options.useTransition&&(g.style.cssText+=";-"+c+"-transition-timing-function:cubic-bezier(0.33,0.66,0.66,1)"),d[b+"ScrollbarWrapper"].appendChild(g),d[b+"ScrollbarIndicator"]=g),b=="h"?(d.hScrollbarSize=d.hScrollbarWrapper.clientWidth,d.hScrollbarIndicatorSize=a.max(a.round(d.hScrollbarSize*d.hScrollbarSize/d.scrollerW),8),d.hScrollbarIndicator.style.width=d.hScrollbarIndicatorSize+"px",d.hScrollbarMaxScroll=d.hScrollbarSize-d.hScrollbarIndicatorSize,d.hScrollbarProp=d.hScrollbarMaxScroll/d.maxScrollX):(d.vScrollbarSize=d.vScrollbarWrapper.clientHeight,d.vScrollbarIndicatorSize=a.max(a.round(d.vScrollbarSize*d.vScrollbarSize/d.scrollerH),8),d.vScrollbarIndicator.style.height=d.vScrollbarIndicatorSize+"px",d.vScrollbarMaxScroll=d.vScrollbarSize-d.vScrollbarIndicatorSize,d.vScrollbarProp=d.vScrollbarMaxScroll/d.maxScrollY),d._scrollbarPos(b,!0)},_resize:function(){var a=this;setTimeout(function(){a.refresh()},g?200:0)},_pos:function(b,d){b=this.hScroll?b:0,d=this.vScroll?d:0,this.options.useTransform?this.scroller.style[c+"Transform"]=s+b+"px,"+d+"px"+t+" scale("+this.scale+")":(b=a.round(b),d=a.round(d),this.scroller.style.left=b+"px",this.scroller.style.top=d+"px"),this.x=b,this.y=d,this._scrollbarPos("h"),this._scrollbarPos("v")},_scrollbarPos:function(b,d){var e=this,f=b=="h"?e.x:e.y,g;if(!e[b+"Scrollbar"])return;f=e[b+"ScrollbarProp"]*f,f<0?(e.options.fixedScrollbar||(g=e[b+"ScrollbarIndicatorSize"]+a.round(f*3),g<8&&(g=8),e[b+"ScrollbarIndicator"].style[b=="h"?"width":"height"]=g+"px"),f=0):f>e[b+"ScrollbarMaxScroll"]&&(e.options.fixedScrollbar?f=e[b+"ScrollbarMaxScroll"]:(g=e[b+"ScrollbarIndicatorSize"]-a.round((f-e[b+"ScrollbarMaxScroll"])*3),g<8&&(g=8),e[b+"ScrollbarIndicator"].style[b=="h"?"width":"height"]=g+"px",f=e[b+"ScrollbarMaxScroll"]+(e[b+"ScrollbarIndicatorSize"]-g))),e[b+"ScrollbarWrapper"].style[c+"TransitionDelay"]="0",e[b+"ScrollbarWrapper"].style.opacity=d&&e.options.hideScrollbar?"0":"1",e[b+"ScrollbarIndicator"].style[c+"Transform"]=s+(b=="h"?f+"px,0":"0,"+f+"px")+t},_start:function(b){var d=this,f=e?b.touches[0]:b,g,h,i,j,k;if(!d.enabled)return;d.options.onBeforeScrollStart&&d.options.onBeforeScrollStart.call(d,b),(d.options.useTransition||d.options.zoom)&&d._transitionTime(0),d.moved=!1,d.animating=!1,d.zoomed=!1,d.distX=0,d.distY=0,d.absDistX=0,d.absDistY=0,d.dirX=0,d.dirY=0,d.options.zoom&&e&&b.touches.length>1&&(j=a.abs(b.touches[0].pageX-b.touches[1].pageX),k=a.abs(b.touches[0].pageY-b.touches[1].pageY),d.touchesDistStart=a.sqrt(j*j+k*k),d.originX=a.abs(b.touches[0].pageX+b.touches[1].pageX-d.wrapperOffsetLeft*2)/2-d.x,d.originY=a.abs(b.touches[0].pageY+b.touches[1].pageY-d.wrapperOffsetTop*2)/2-d.y,d.options.onZoomStart&&d.options.onZoomStart.call(d,b));if(d.options.momentum){d.options.useTransform?(g=getComputedStyle(d.scroller,null)[c+"Transform"].replace(/[^0-9-.,]/g,"").split(","),h=g[4]*1,i=g[5]*1):(h=getComputedStyle(d.scroller,null).left.replace(/[^0-9-]/g,"")*1,i=getComputedStyle(d.scroller,null).top.replace(/[^0-9-]/g,"")*1);if(h!=d.x||i!=d.y)d.options.useTransition?d._unbind("webkitTransitionEnd"):l(d.aniTime),d.steps=[],d._pos(h,i)}d.absStartX=d.x,d.absStartY=d.y,d.startX=d.x,d.startY=d.y,d.pointX=f.pageX,d.pointY=f.pageY,d.startTime=b.timeStamp||Date.now(),d.options.onScrollStart&&d.options.onScrollStart.call(d,b),d._bind(o),d._bind(p),d._bind(q)},_move:function(b){var d=this,f=e?b.touches[0]:b,g=f.pageX-d.pointX,h=f.pageY-d.pointY,i=d.x+g,j=d.y+h,k,l,m,n=b.timeStamp||Date.now();d.options.onBeforeScrollMove&&d.options.onBeforeScrollMove.call(d,b);if(d.options.zoom&&e&&b.touches.length>1){k=a.abs(b.touches[0].pageX-b.touches[1].pageX),l=a.abs(b.touches[0].pageY-b.touches[1].pageY),d.touchesDist=a.sqrt(k*k+l*l),d.zoomed=!0,m=1/d.touchesDistStart*d.touchesDist*this.scale,m<d.options.zoomMin?m=.5*d.options.zoomMin*Math.pow(2,m/d.options.zoomMin):m>d.options.zoomMax&&(m=2*d.options.zoomMax*Math.pow(.5,d.options.zoomMax/m)),d.lastScale=m/this.scale,i=this.originX-this.originX*d.lastScale+this.x,j=this.originY-this.originY*d.lastScale+this.y,this.scroller.style[c+"Transform"]=s+i+"px,"+j+"px"+t+" scale("+m+")",d.options.onZoom&&d.options.onZoom.call(d,b);return}d.pointX=f.pageX,d.pointY=f.pageY;if(i>0||i<d.maxScrollX)i=d.options.bounce?d.x+g/2:i>=0||d.maxScrollX>=0?0:d.maxScrollX;if(j>d.minScrollY||j<d.maxScrollY)j=d.options.bounce?d.y+h/2:j>=d.minScrollY||d.maxScrollY>=0?d.minScrollY:d.maxScrollY;if(d.absDistX<6&&d.absDistY<6){d.distX+=g,d.distY+=h,d.absDistX=a.abs(d.distX),d.absDistY=a.abs(d.distY);return}d.options.lockDirection&&(d.absDistX>d.absDistY+5?(j=d.y,h=0):d.absDistY>d.absDistX+5&&(i=d.x,g=0)),d.moved=!0,d._pos(i,j),d.dirX=g>0?-1:g<0?1:0,d.dirY=h>0?-1:h<0?1:0,n-d.startTime>300&&(d.startTime=n,d.startX=d.x,d.startY=d.y),d.options.onScrollMove&&d.options.onScrollMove.call(d,b)},_end:function(b){if(e&&b.touches.length!=0)return;var d=this,f=e?b.changedTouches[0]:b,g,h,i={dist:0,time:0},j={dist:0,time:0},k=(b.timeStamp||Date.now())-d.startTime,l=d.x,m=d.y,n,r,u,v,w;d._unbind(o),d._unbind(p),d._unbind(q),d.options.onBeforeScrollEnd&&d.options.onBeforeScrollEnd.call(d,b);if(d.zoomed){w=d.scale*d.lastScale,w=Math.max(d.options.zoomMin,w),w=Math.min(d.options.zoomMax,w),d.lastScale=w/d.scale,d.scale=w,d.x=d.originX-d.originX*d.lastScale+d.x,d.y=d.originY-d.originY*d.lastScale+d.y,d.scroller.style[c+"TransitionDuration"]="200ms",d.scroller.style[c+"Transform"]=s+d.x+"px,"+d.y+"px"+t+" scale("+d.scale+")",d.zoomed=!1,d.refresh(),d.options.onZoomEnd&&d.options.onZoomEnd.call(d,b);return}if(!d.moved){e&&(d.doubleTapTimer&&d.options.zoom?(clearTimeout(d.doubleTapTimer),d.doubleTapTimer=null,d.options.onZoomStart&&d.options.onZoomStart.call(d,b),d.zoom(d.pointX,d.pointY,d.scale==1?d.options.doubleTapZoom:1),d.options.onZoomEnd&&setTimeout(function(){d.options.onZoomEnd.call(d,b)},200)):d.doubleTapTimer=setTimeout(function(){d.doubleTapTimer=null,g=f.target;while(g.nodeType!=1)g=g.parentNode;g.tagName!="SELECT"&&g.tagName!="INPUT"&&g.tagName!="TEXTAREA"&&(h=document.createEvent("MouseEvents"),h.initMouseEvent("click",!0,!0,b.view,1,f.screenX,f.screenY,f.clientX,f.clientY,b.ctrlKey,b.altKey,b.shiftKey,b.metaKey,0,null),h._fake=!0,g.dispatchEvent(h))},d.options.zoom?250:0)),d._resetPos(200),d.options.onTouchEnd&&d.options.onTouchEnd.call(d,b);return}if(k<300&&d.options.momentum){i=l?d._momentum(l-d.startX,k,-d.x,d.scrollerW-d.wrapperW+d.x,d.options.bounce?d.wrapperW:0):i,j=m?d._momentum(m-d.startY,k,-d.y,d.maxScrollY<0?d.scrollerH-d.wrapperH+d.y-d.minScrollY:0,d.options.bounce?d.wrapperH:0):j,l=d.x+i.dist,m=d.y+j.dist;if(d.x>0&&l>0||d.x<d.maxScrollX&&l<d.maxScrollX)i={dist:0,time:0};if(d.y>d.minScrollY&&m>d.minScrollY||d.y<d.maxScrollY&&m<d.maxScrollY)j={dist:0,time:0}}if(i.dist||j.dist){u=a.max(a.max(i.time,j.time),10),d.options.snap&&(n=l-d.absStartX,r=m-d.absStartY,a.abs(n)<d.options.snapThreshold&&a.abs(r)<d.options.snapThreshold?d.scrollTo(d.absStartX,d.absStartY,200):(v=d._snap(l,m),l=v.x,m=v.y,u=a.max(v.time,u))),d.scrollTo(a.round(l),a.round(m),u),d.options.onTouchEnd&&d.options.onTouchEnd.call(d,b);return}if(d.options.snap){n=l-d.absStartX,r=m-d.absStartY,a.abs(n)<d.options.snapThreshold&&a.abs(r)<d.options.snapThreshold?d.scrollTo(d.absStartX,d.absStartY,200):(v=d._snap(d.x,d.y),(v.x!=d.x||v.y!=d.y)&&d.scrollTo(v.x,v.y,v.time)),d.options.onTouchEnd&&d.options.onTouchEnd.call(d,b);return}d._resetPos(200),d.options.onTouchEnd&&d.options.onTouchEnd.call(d,b)},_resetPos:function(a){var b=this,d=b.x>=0?0:b.x<b.maxScrollX?b.maxScrollX:b.x,e=b.y>=b.minScrollY||b.maxScrollY>0?b.minScrollY:b.y<b.maxScrollY?b.maxScrollY:b.y;if(d==b.x&&e==b.y){b.moved&&(b.moved=!1,b.options.onScrollEnd&&b.options.onScrollEnd.call(b)),b.hScrollbar&&b.options.hideScrollbar&&(c=="webkit"&&(b.hScrollbarWrapper.style[c+"TransitionDelay"]="300ms"),b.hScrollbarWrapper.style.opacity="0"),b.vScrollbar&&b.options.hideScrollbar&&(c=="webkit"&&(b.vScrollbarWrapper.style[c+"TransitionDelay"]="300ms"),b.vScrollbarWrapper.style.opacity="0");return}b.scrollTo(d,e,a||0)},_wheel:function(a){var b=this,c,d,e,f,g;"wheelDeltaX"in a?(c=a.wheelDeltaX/12,d=a.wheelDeltaY/12):"detail"in a?c=d=-a.detail*3:c=d=-a.wheelDelta;if(b.options.wheelAction=="zoom"){g=b.scale*Math.pow(2,1/3*(d?d/Math.abs(d):0)),g<b.options.zoomMin&&(g=b.options.zoomMin),g>b.options.zoomMax&&(g=b.options.zoomMax),g!=b.scale&&(!b.wheelZoomCount&&b.options.onZoomStart&&b.options.onZoomStart.call(b,a),b.wheelZoomCount++,b.zoom(a.pageX,a.pageY,g,400),setTimeout(function(){b.wheelZoomCount--,!b.wheelZoomCount&&b.options.onZoomEnd&&b.options.onZoomEnd.call(b,a)},400));return}e=b.x+c,f=b.y+d,e>0?e=0:e<b.maxScrollX&&(e=b.maxScrollX),f>b.minScrollY?f=b.minScrollY:f<b.maxScrollY&&(f=b.maxScrollY),b.scrollTo(e,f,0)},_mouseout:function(a){var b=a.relatedTarget;if(!b){this._end(a);return}while(b=b.parentNode)if(b==this.wrapper)return;this._end(a)},_transitionEnd:function(a){var b=this;if(a.target!=b.scroller)return;b._unbind("webkitTransitionEnd"),b._startAni()},_startAni:function(){var b=this,c=b.x,d=b.y,e=Date.now(),f,g,h;if(b.animating)return;if(!b.steps.length){b._resetPos(400);return}f=b.steps.shift(),f.x==c&&f.y==d&&(f.time=0),b.animating=!0,b.moved=!0;if(b.options.useTransition){b._transitionTime(f.time),b._pos(f.x,f.y),b.animating=!1,f.time?b._bind("webkitTransitionEnd"):b._resetPos(0);return}h=function(){var i=Date.now(),j,l;if(i>=e+f.time){b._pos(f.x,f.y),b.animating=!1,b.options.onAnimationEnd&&b.options.onAnimationEnd.call(b),b._startAni();return}i=(i-e)/f.time-1,g=a.sqrt(1-i*i),j=(f.x-c)*g+c,l=(f.y-d)*g+d,b._pos(j,l),b.animating&&(b.aniTime=k(h))},h()},_transitionTime:function(a){a+="ms",this.scroller.style[c+"TransitionDuration"]=a,this.hScrollbar&&(this.hScrollbarIndicator.style[c+"TransitionDuration"]=a),this.vScrollbar&&(this.vScrollbarIndicator.style[c+"TransitionDuration"]=a)},_momentum:function(b,c,d,e,f){var g=6e-4,h=a.abs(b)/c,i=h*h/(2*g),j=0,k=0;return b>0&&i>d?(k=f/(6/(i/h*g)),d=d+k,h=h*d/i,i=d):b<0&&i>e&&(k=f/(6/(i/h*g)),e=e+k,h=h*e/i,i=e),i=i*(b<0?-1:1),j=h/g,{dist:i,time:a.round(j)}},_offset:function(a){var b=-a.offsetLeft,c=-a.offsetTop;while(a=a.offsetParent)b-=a.offsetLeft,c-=a.offsetTop;return a!=this.wrapper&&(b*=this.scale,c*=this.scale),{left:b,top:c}},_snap:function(b,c){var d=this,e,f,g,h,i,j;g=d.pagesX.length-1;for(e=0,f=d.pagesX.length;e<f;e++)if(b>=d.pagesX[e]){g=e;break}g==d.currPageX&&g>0&&d.dirX<0&&g--,b=d.pagesX[g],i=a.abs(b-d.pagesX[d.currPageX]),i=i?a.abs(d.x-b)/i*500:0,d.currPageX=g,g=d.pagesY.length-1;for(e=0;e<g;e++)if(c>=d.pagesY[e]){g=e;break}return g==d.currPageY&&g>0&&d.dirY<0&&g--,c=d.pagesY[g],j=a.abs(c-d.pagesY[d.currPageY]),j=j?a.abs(d.y-c)/j*500:0,d.currPageY=g,h=a.round(a.max(i,j))||200,{x:b,y:c,time:h}},_bind:function(a,b,c){(b||this.scroller).addEventListener(a,this,!!c)},_unbind:function(a,b,c){(b||this.scroller).removeEventListener(a,this,!!c)},destroy:function(){var a=this;a.scroller.style[c+"Transform"]="",a.hScrollbar=!1,a.vScrollbar=!1,a._scrollbar("h"),a._scrollbar("v"),a._unbind(m,window),a._unbind(n),a._unbind(o),a._unbind(p),a._unbind(q),a.options.hasTouch&&(a._unbind("mouseout",a.wrapper),a._unbind(r)),a.options.useTransition&&a._unbind("webkitTransitionEnd"),a.options.checkDOMChanges&&clearInterval(a.checkDOMTime),a.options.onDestroy&&a.options.onDestroy.call(a)},refresh:function(){var b=this,d,e,f,g,h=0,i=0;b.scale<b.options.zoomMin&&(b.scale=b.options.zoomMin),b.wrapperW=b.wrapper.clientWidth||1,b.wrapperH=b.wrapper.clientHeight||1,b.minScrollY=-b.options.topOffset||0,b.scrollerW=a.round(b.scroller.offsetWidth*b.scale),b.scrollerH=a.round((b.scroller.offsetHeight+b.minScrollY)*b.scale),b.maxScrollX=b.wrapperW-b.scrollerW,b.maxScrollY=b.wrapperH-b.scrollerH+b.minScrollY,b.dirX=0,b.dirY=0,b.options.onRefresh&&b.options.onRefresh.call(b),b.hScroll=b.options.hScroll&&b.maxScrollX<0,b.vScroll=b.options.vScroll&&(!b.options.bounceLock&&!b.hScroll||b.scrollerH>b.wrapperH),b.hScrollbar=b.hScroll&&b.options.hScrollbar,b.vScrollbar=b.vScroll&&b.options.vScrollbar&&b.scrollerH>b.wrapperH,d=b._offset(b.wrapper),b.wrapperOffsetLeft=-d.left,b.wrapperOffsetTop=-d.top;if(typeof b.options.snap=="string"){b.pagesX=[],b.pagesY=[],g=b.scroller.querySelectorAll(b.options.snap);for(e=0,f=g.length;e<f;e++)h=b._offset(g[e]),h.left+=b.wrapperOffsetLeft,h.top+=b.wrapperOffsetTop,b.pagesX[e]=h.left<b.maxScrollX?b.maxScrollX:h.left*b.scale,b.pagesY[e]=h.top<b.maxScrollY?b.maxScrollY:h.top*b.scale}else if(b.options.snap){b.pagesX=[];while(h>=b.maxScrollX)b.pagesX[i]=h,h=h-b.wrapperW,i++;b.maxScrollX%b.wrapperW&&(b.pagesX[b.pagesX.length]=b.maxScrollX-b.pagesX[b.pagesX.length-1]+b.pagesX[b.pagesX.length-1]),h=0,i=0,b.pagesY=[];while(h>=b.maxScrollY)b.pagesY[i]=h,h=h-b.wrapperH,i++;b.maxScrollY%b.wrapperH&&(b.pagesY[b.pagesY.length]=b.maxScrollY-b.pagesY[b.pagesY.length-1]+b.pagesY[b.pagesY.length-1])}b._scrollbar("h"),b._scrollbar("v"),b.zoomed||(b.scroller.style[c+"TransitionDuration"]="0",b._resetPos(200))},scrollTo:function(a,b,c,d){var e=this,f=a,g,h;e.stop(),f.length||(f=[{x:a,y:b,time:c,relative:d}]);for(g=0,h=f.length;g<h;g++)f[g].relative&&(f[g].x=e.x-f[g].x,f[g].y=e.y-f[g].y),e.steps.push({x:f[g].x,y:f[g].y,time:f[g].time||0});e._startAni()},scrollToElement:function(b,c){var d=this,e;b=b.nodeType?b:d.scroller.querySelector(b);if(!b)return;e=d._offset(b),e.left+=d.wrapperOffsetLeft,e.top+=d.wrapperOffsetTop,e.left=e.left>0?0:e.left<d.maxScrollX?d.maxScrollX:e.left,e.top=e.top>d.minScrollY?d.minScrollY:e.top<d.maxScrollY?d.maxScrollY:e.top,c=c===undefined?a.max(a.abs(e.left)*2,a.abs(e.top)*2):c,d.scrollTo(e.left,e.top,c)},scrollToPage:function(a,b,c){var d=this,e,f;d.options.onScrollStart&&d.options.onScrollStart.call(d),d.options.snap?(a=a=="next"?d.currPageX+1:a=="prev"?d.currPageX-1:a,b=b=="next"?d.currPageY+1:b=="prev"?d.currPageY-1:b,a=a<0?0:a>d.pagesX.length-1?d.pagesX.length-1:a,b=b<0?0:b>d.pagesY.length-1?d.pagesY.length-1:b,d.currPageX=a,d.currPageY=b,e=d.pagesX[a],f=d.pagesY[b]):(e=-d.wrapperW*a,f=-d.wrapperH*b,e<d.maxScrollX&&(e=d.maxScrollX),f<d.maxScrollY&&(f=d.maxScrollY)),d.scrollTo(e,f,c||400)},disable:function(){this.stop(),this._resetPos(0),this.enabled=!1,this._unbind(o),this._unbind(p),this._unbind(q)},enable:function(){this.enabled=!0},stop:function(){this.options.useTransition?this._unbind("webkitTransitionEnd"):l(this.aniTime),this.steps=[],this.moved=!1,this.animating=!1},zoom:function(a,b,d,e){var f=this,g=d/f.scale;if(!f.options.useTransform)return;f.zoomed=!0,e=e===undefined?200:e,a=a-f.wrapperOffsetLeft-f.x,b=b-f.wrapperOffsetTop-f.y,f.x=a-a*g+f.x,f.y=b-b*g+f.y,f.scale=d,f.refresh(),f.x=f.x>0?0:f.x<f.maxScrollX?f.maxScrollX:f.x,f.y=f.y>f.minScrollY?f.minScrollY:f.y<f.maxScrollY?f.maxScrollY:f.y,f.scroller.style[c+"TransitionDuration"]=e+"ms",f.scroller.style[c+"Transform"]=s+f.x+"px,"+f.y+"px"+t+" scale("+d+")",f.zoomed=!1},isReady:function(){return!this.moved&&!this.zoomed&&!this.animating}},typeof b!="undefined"?b.iScroll=u:window.iScroll=u}(),provide("iscroll",a.exports),!function(a,b){a.ender({iScroll:function(a){return new b(this[0],a)}},!0)}(ender,require("iscroll").iScroll)}()
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/src/iscroll/examples/ender/index.html b/public/admin/js/osmplayer/src/iscroll/examples/ender/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..f4115c920c8cdd8364b841d63bef9048862f4a75
--- /dev/null
+++ b/public/admin/js/osmplayer/src/iscroll/examples/ender/index.html
@@ -0,0 +1,166 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0">
+<meta name="apple-mobile-web-app-capable" content="yes">
+<meta name="apple-mobile-web-app-status-bar-style" content="black">
+<title>iScroll demo: Carousel</title>
+
+<script src="ender.js"></script>
+<script type="text/javascript">
+$(document).ready(function () {
+  this.myScroll = $('#wrapper').iScroll({
+    snap: true,
+    momentum: false,
+    hScrollbar: false,
+    onScrollEnd: function () {
+      document.querySelector('#indicator > li.active').className = '';
+      document.querySelector('#indicator > li:nth-child(' + (this.currPageX+1) + ')').className = 'active';
+    }
+   })
+})
+
+</script>
+
+<style type="text/css" media="all">
+body,ul,li {
+  padding:10px;
+  margin:0;
+}
+
+body {
+  font-size:12px;
+  -webkit-user-select:none;
+    -webkit-text-size-adjust:none;
+  font-family:helvetica;
+}
+
+#wrapper {
+  width:300px;
+  height:160px;
+
+  float:left;
+  position:relative;
+  z-index:1;
+  overflow:hidden;
+
+  background:#aaa;
+  -webkit-border-radius:10px;
+  -moz-border-radius:10px;
+  -o-border-radius:10px;
+  border-radius:10px;
+  background:#e3e3e3;
+}
+
+#scroller {
+  width:2100px;
+  height:100%;
+  float:left;
+  padding:0;
+}
+
+#scroller ul {
+  list-style:none;
+  display:block;
+  float:left;
+  width:100%;
+  height:100%;
+  padding:0;
+  margin:0;
+  text-align:left;
+}
+
+#scroller li {
+  -webkit-box-sizing:border-box;
+  -moz-box-sizing:border-box;
+  -o-box-sizing:border-box;
+  box-sizing:border-box;
+  display:block; float:left;
+  width:300px; height:160px;
+  text-align:center;
+  font-family:georgia;
+  font-size:18px;
+  line-height:140%;
+}
+
+#nav {
+  width:300px;
+  float:left;
+}
+
+#prev, #next {
+  float:left;
+  font-weight:bold;
+  font-size:14px;
+  padding:5px 0;
+  width:80px;
+}
+
+#next {
+  float:right;
+  text-align:right;
+}
+
+#indicator, #indicator > li {
+  display:block; float:left;
+  list-style:none;
+  padding:0; margin:0;
+}
+
+#indicator {
+  width:110px;
+  padding:12px 0 0 30px;
+}
+
+#indicator > li {
+  text-indent:-9999em;
+  width:8px; height:8px;
+  -webkit-border-radius:4px;
+  -moz-border-radius:4px;
+  -o-border-radius:4px;
+  border-radius:4px;
+  background:#ddd;
+  overflow:hidden;
+  margin-right:4px;
+}
+
+#indicator > li.active {
+  background:#888;
+}
+
+#indicator > li:last-child {
+  margin:0;
+}
+
+</style>
+</head>
+<body>
+<div id="wrapper">
+  <div id="scroller">
+    <ul id="thelist">
+      <li><strong>1.</strong> <em>A robot may not injure a human being or, through inaction, allow a human being to come to harm.</em></li>
+      <li><strong>2.</strong> <em>A robot must obey any orders given to it by human beings, except where such orders would conflict with the First Law.</em></li>
+      <li><strong>3.</strong> <em>A robot must protect its own existence as long as such protection does not conflict with the First or Second Law.</em></li>
+      <li><strong>Zeroth Law:</strong> <em>A robot may not harm humanity, or, by inaction, allow humanity to come to harm.</em></li>
+      <li><strong>Lyuben Dilov's Forth law:</strong> <em>A robot must establish its identity as a robot in all cases.</em></li>
+      <li><strong>Harry Harrison's Forth law:</strong> <em>A robot must reproduce. As long as such reproduction does not interfere with the First or Second or Third Law.</em></li>
+      <li><strong>Nikola Kesarovski's Fifth law:</strong> <em>A robot must know it is a robot.</em></li>
+    </ul>
+  </div>
+</div>
+<div id="nav">
+  <div id="prev" onclick="myScroll.scrollToPage('prev', 0);return false">&larr; prev</div>
+  <ul id="indicator">
+    <li class="active">1</li>
+    <li>2</li>
+    <li>3</li>
+    <li>4</li>
+    <li>5</li>
+    <li>6</li>
+    <li>7</li>
+  </ul>
+  <div id="next" onclick="myScroll.scrollToPage('next', 0);return false">next &rarr;</div>
+</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/src/iscroll/examples/form-fields/index.html b/public/admin/js/osmplayer/src/iscroll/examples/form-fields/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..8d456417fba8eb7ece40aa388f69e8d90bba0295
--- /dev/null
+++ b/public/admin/js/osmplayer/src/iscroll/examples/form-fields/index.html
@@ -0,0 +1,176 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0">
+<meta name="apple-mobile-web-app-capable" content="yes">
+<meta name="apple-mobile-web-app-status-bar-style" content="black">
+<title>iScroll demo: simple</title>
+
+<script type="text/javascript" src="../../src/iscroll.js"></script>
+
+<script type="text/javascript">
+
+var myScroll;
+function loaded() {
+	myScroll = new iScroll('wrapper', {
+		useTransform: false,
+		onBeforeScrollStart: function (e) {
+			var target = e.target;
+			while (target.nodeType != 1) target = target.parentNode;
+
+			if (target.tagName != 'SELECT' && target.tagName != 'INPUT' && target.tagName != 'TEXTAREA')
+				e.preventDefault();
+		}
+	});
+}
+
+document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false);
+document.addEventListener('DOMContentLoaded', loaded, false);
+
+</script>
+
+<style type="text/css" media="all">
+body,ul,li {
+	padding:0;
+	margin:0;
+	border:0;
+}
+
+body {
+	font-size:12px;
+	-webkit-user-select:none;
+    -webkit-text-size-adjust:none;
+	font-family:helvetica;
+}
+
+#header {
+	position:absolute; z-index:2;
+	top:0; left:0;
+	width:100%;
+	height:45px;
+	line-height:45px;
+	background-color:#d51875;
+	background-image:-webkit-gradient(linear, 0 0, 0 100%, color-stop(0, #fe96c9), color-stop(0.05, #d51875), color-stop(1, #7b0a2e));
+	background-image:-moz-linear-gradient(top, #fe96c9, #d51875 5%, #7b0a2e);
+	background-image:-o-linear-gradient(top, #fe96c9, #d51875 5%, #7b0a2e);
+	padding:0;
+	color:#eee;
+	font-size:20px;
+	text-align:center;
+}
+
+#header a {
+	color:#f3f3f3;
+	text-decoration:none;
+	font-weight:bold;
+	text-shadow:0 -1px 0 rgba(0,0,0,0.5);
+}
+
+#footer {
+	position:absolute; z-index:2;
+	bottom:0; left:0;
+	width:100%;
+	height:48px;
+	background-color:#222;
+	background-image:-webkit-gradient(linear, 0 0, 0 100%, color-stop(0, #999), color-stop(0.02, #666), color-stop(1, #222));
+	background-image:-moz-linear-gradient(top, #999, #666 2%, #222);
+	background-image:-o-linear-gradient(top, #999, #666 2%, #222);
+	padding:0;
+	border-top:1px solid #444;
+}
+
+#wrapper {
+	position:absolute; z-index:1;
+	top:45px; bottom:48px; left:0;
+	width:100%;
+	background:#aaa;
+	overflow:auto;
+}
+
+#scroller {
+	position:absolute; z-index:1;
+/*	-webkit-touch-callout:none;*/
+	-webkit-tap-highlight-color:rgba(0,0,0,0);
+	width:100%;
+	padding:0;
+}
+
+#scroller ul {
+	list-style:none;
+	padding:0;
+	margin:0;
+	width:100%;
+	text-align:left;
+}
+
+#scroller li {
+	padding:0 10px;
+	height:40px;
+	line-height:40px;
+	border-bottom:1px solid #ccc;
+	border-top:1px solid #fff;
+	background-color:#fafafa;
+	font-size:14px;
+}
+
+#myFrame {
+	position:absolute;
+	top:0; left:0;
+}
+
+</style>
+</head>
+<body>
+
+<div id="header"><a href="http://cubiq.org/iscroll">iScroll</a></div>
+<div id="wrapper">
+	<div id="scroller">
+		<ul id="thelist">
+			<li><input type="text"></li>
+			<li>Pretty row 2</li>
+			<li><input type="radio"></li>
+			<li>Pretty row 4</li>
+			<li><input type="checkbox"></li>
+			<li>Pretty row 6</li>
+			<li><select><option>opt</option></select></li>
+			<li>Pretty row 8</li>
+			<li>Pretty row 9</li>
+			<li>Pretty row 10</li>
+			<li>Pretty row 11</li>
+			<li>Pretty row 12</li>
+			<li>Pretty row 13</li>
+			<li>Pretty row 14</li>
+			<li>Pretty row 15</li>
+			<li>Pretty row 16</li>
+			<li>Pretty row 17</li>
+			<li>Pretty row 18</li>
+			<li>Pretty row 19</li>
+			<li>Pretty row 20</li>
+			<li>Pretty row 21</li>
+			<li>Pretty row 22</li>
+			<li>Pretty row 23</li>
+			<li>Pretty row 24</li>
+			<li>Pretty row 25</li>
+			<li>Pretty row 26</li>
+			<li>Pretty row 27</li>
+			<li>Pretty row 28</li>
+			<li>Pretty row 29</li>
+			<li>Pretty row 30</li>
+			<li>Pretty row 31</li>
+			<li>Pretty row 32</li>
+			<li>Pretty row 33</li>
+			<li>Pretty row 34</li>
+			<li>Pretty row 35</li>
+			<li>Pretty row 36</li>
+			<li>Pretty row 37</li>
+			<li>Pretty row 38</li>
+			<li>Pretty row 39</li>
+			<li>Pretty row 40</li>
+		</ul>
+	</div>
+</div>
+<div id="footer"></div>
+
+</body>
+</html>
diff --git a/public/admin/js/osmplayer/src/iscroll/examples/horizontal-scroll/index.html b/public/admin/js/osmplayer/src/iscroll/examples/horizontal-scroll/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..269500d52e3b861d97cffb2aa6fe32a919637e59
--- /dev/null
+++ b/public/admin/js/osmplayer/src/iscroll/examples/horizontal-scroll/index.html
@@ -0,0 +1,134 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0">
+<meta name="apple-mobile-web-app-capable" content="yes">
+<meta name="apple-mobile-web-app-status-bar-style" content="black">
+<title>iScroll demo: horizontal scroll</title>
+
+<script type="application/javascript" src="../../src/iscroll.js"></script>
+
+<script type="text/javascript">
+
+var myScroll;
+function loaded() {
+	myScroll = new iScroll('wrapper');
+}
+
+document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false);
+
+document.addEventListener('DOMContentLoaded', loaded, false);
+
+</script>
+
+<style type="text/css" media="all">
+body,ul,li {
+	padding:0;
+	margin:0;
+}
+
+body {
+	font-size:12px;
+	-webkit-user-select:none;
+    -webkit-text-size-adjust:none;
+/*	-webkit-box-sizing:border-box;*/
+	font-family:helvetica;
+/*	padding-bottom:45px;	/*	This prevents the scroller to lock if the user swipes down outside of the screen.
+							 	NOT needed if in home screen mode. */
+}
+
+#header {
+	position:absolute; z-index:2;
+	top:0; left:0;
+	width:100%;
+	height:45px;
+	line-height:45px;
+	background-image:-webkit-gradient(linear, 0 0, 0 100%, color-stop(0, #fe96c9), color-stop(0.05, #d51875), color-stop(1, #7b0a2e));
+	background-image:-moz-linear-gradient(top, #fe96c9, #d51875 5%, #7b0a2e);
+	background-image:-o-linear-gradient(top, #fe96c9, #d51875 5%, #7b0a2e);
+	padding:0;
+	color:#eee;
+	font-size:20px;
+	text-align:center;
+}
+
+#header a {
+	color:#f3f3f3;
+	text-decoration:none;
+	font-weight:bold;
+	text-shadow:0 -1px 0 rgba(0,0,0,0.5);
+}
+
+#wrapper {
+	position:absolute; z-index:1;
+	top:45px; bottom:0; left:0;
+	width:100%;
+	background:#aaa;
+	overflow:auto;
+}
+
+#scroller {
+	width:2040px;
+	height:100%;
+	float:left;
+	padding:0;
+}
+
+#scroller ul {
+	list-style:none;
+	display:block;
+	float:left;
+	width:100%;
+	height:100%;
+	padding:0;
+	margin:0;
+	text-align:left;
+}
+
+#scroller li {
+	display:block;
+	vertical-align:middle;
+	float:left;
+	padding:0 10px;
+	width:80px;
+	height:100%;
+	border-left:1px solid #ccc;
+	border-right:1px solid #fff;
+	background-color:#fafafa;
+	font-size:14px;
+}
+</style>
+</head>
+<body>
+<div id="header"><a href="http://cubiq.org/iscroll">iScroll</a></div>
+
+<div id="wrapper">
+	<div id="scroller">
+		<ul id="thelist">
+			<li>Pretty col 1</li>
+			<li>Pretty col 2</li>
+			<li>Pretty col 3</li>
+			<li>Pretty col 4</li>
+			<li>Pretty col 5</li>
+			<li>Pretty col 6</li>
+			<li>Pretty col 7</li>
+			<li>Pretty col 8</li>
+			<li>Pretty col 9</li>
+			<li>Pretty col 10</li>
+			<li>Pretty col 11</li>
+			<li>Pretty col 12</li>
+			<li>Pretty col 13</li>
+			<li>Pretty col 14</li>
+			<li>Pretty col 15</li>
+			<li>Pretty col 16</li>
+			<li>Pretty col 17</li>
+			<li>Pretty col 18</li>
+			<li>Pretty col 19</li>
+			<li>Pretty col 20</li>
+		</ul>
+	</div>
+</div>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/src/iscroll/examples/hover/index.html b/public/admin/js/osmplayer/src/iscroll/examples/hover/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..8969623efbaed3a12d6e9ccf81bbb0534da7035b
--- /dev/null
+++ b/public/admin/js/osmplayer/src/iscroll/examples/hover/index.html
@@ -0,0 +1,199 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0">
+<meta name="apple-mobile-web-app-capable" content="yes">
+<meta name="apple-mobile-web-app-status-bar-style" content="black">
+<title>iScroll demo: Hover Example</title>
+
+<script type="text/javascript" src="../../src/iscroll.js"></script>
+
+<script type="text/javascript">
+
+var myScroll,
+	hoverClassRegEx = new RegExp('(^|\\s)iScrollHover(\\s|$)'),
+	removeClass = function () {
+		if (this.hoverTarget) {
+			clearTimeout(this.hoverTimeout);
+			this.hoverTarget.className = this.hoverTarget.className.replace(hoverClassRegEx, '');
+			this.target = null;
+		}
+	};
+
+function loaded() {
+	myScroll = new iScroll('wrapper', {
+		onBeforeScrollStart: function (e) {
+			var target = e.target;
+
+			clearTimeout(this.hoverTimeout);
+
+			while (target.nodeType != 1) target = target.parentNode;
+
+			this.hoverTimeout = setTimeout(function () {
+				if (!hoverClassRegEx.test(target.className)) target.className = target.className ? target.className + ' iScrollHover' : 'iScrollHover';
+			}, 80);
+
+			this.hoverTarget = target;
+			
+			e.preventDefault();
+		},
+		onScrollMove: removeClass,
+		onBeforeScrollEnd: removeClass
+	});
+}
+
+document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false);
+document.addEventListener('DOMContentLoaded', loaded, false);
+
+</script>
+
+<style type="text/css" media="all">
+.iScrollHover {
+	background:#444 !important;
+	color:#eee !important;
+}
+
+body,ul,li {
+	padding:0;
+	margin:0;
+	border:0;
+}
+
+body {
+	font-size:12px;
+	-webkit-user-select:none;
+    -webkit-text-size-adjust:none;
+	font-family:helvetica;
+}
+
+#header {
+	position:absolute; z-index:2;
+	top:0; left:0;
+	width:100%;
+	height:45px;
+	line-height:45px;
+	background-color:#d51875;
+	background-image:-webkit-gradient(linear, 0 0, 0 100%, color-stop(0, #fe96c9), color-stop(0.05, #d51875), color-stop(1, #7b0a2e));
+	background-image:-moz-linear-gradient(top, #fe96c9, #d51875 5%, #7b0a2e);
+	background-image:-o-linear-gradient(top, #fe96c9, #d51875 5%, #7b0a2e);
+	padding:0;
+	color:#eee;
+	font-size:20px;
+	text-align:center;
+}
+
+#header a {
+	color:#f3f3f3;
+	text-decoration:none;
+	font-weight:bold;
+	text-shadow:0 -1px 0 rgba(0,0,0,0.5);
+}
+
+#footer {
+	position:absolute; z-index:2;
+	bottom:0; left:0;
+	width:100%;
+	height:48px;
+	background-color:#222;
+	background-image:-webkit-gradient(linear, 0 0, 0 100%, color-stop(0, #999), color-stop(0.02, #666), color-stop(1, #222));
+	background-image:-moz-linear-gradient(top, #999, #666 2%, #222);
+	background-image:-o-linear-gradient(top, #999, #666 2%, #222);
+	padding:0;
+	border-top:1px solid #444;
+}
+
+#wrapper {
+	position:absolute; z-index:1;
+	top:45px; bottom:48px; left:0;
+	width:100%;
+	background:#aaa;
+	overflow:auto;
+}
+
+#scroller {
+	position:absolute; z-index:1;
+/*	-webkit-touch-callout:none;*/
+	-webkit-tap-highlight-color:rgba(0,0,0,0);
+	width:100%;
+	padding:0;
+}
+
+#scroller ul {
+	list-style:none;
+	padding:0;
+	margin:0;
+	width:100%;
+	text-align:left;
+}
+
+#scroller li {
+	padding:0 10px;
+	height:40px;
+	line-height:40px;
+	border-bottom:1px solid #ccc;
+	border-top:1px solid #fff;
+	background-color:#fafafa;
+	font-size:14px;
+}
+
+#myFrame {
+	position:absolute;
+	top:0; left:0;
+}
+
+</style>
+</head>
+<body>
+
+<div id="header"><a href="http://cubiq.org/iscroll">iScroll</a></div>
+<div id="wrapper">
+	<div id="scroller">
+		<ul id="thelist">
+			<li>Pretty row 1</li>
+			<li>Pretty row 2</li>
+			<li>Pretty row 3</li>
+			<li>Pretty row 4</li>
+			<li>Pretty row 5</li>
+			<li>Pretty row 6</li>
+			<li>Pretty row 7</li>
+			<li>Pretty row 8</li>
+			<li>Pretty row 9</li>
+			<li>Pretty row 10</li>
+			<li>Pretty row 11</li>
+			<li>Pretty row 12</li>
+			<li>Pretty row 13</li>
+			<li>Pretty row 14</li>
+			<li>Pretty row 15</li>
+			<li>Pretty row 16</li>
+			<li>Pretty row 17</li>
+			<li>Pretty row 18</li>
+			<li>Pretty row 19</li>
+			<li>Pretty row 20</li>
+			<li>Pretty row 21</li>
+			<li>Pretty row 22</li>
+			<li>Pretty row 23</li>
+			<li>Pretty row 24</li>
+			<li>Pretty row 25</li>
+			<li>Pretty row 26</li>
+			<li>Pretty row 27</li>
+			<li>Pretty row 28</li>
+			<li>Pretty row 29</li>
+			<li>Pretty row 30</li>
+			<li>Pretty row 31</li>
+			<li>Pretty row 32</li>
+			<li>Pretty row 33</li>
+			<li>Pretty row 34</li>
+			<li>Pretty row 35</li>
+			<li>Pretty row 36</li>
+			<li>Pretty row 37</li>
+			<li>Pretty row 38</li>
+			<li>Pretty row 39</li>
+			<li>Pretty row 40</li>
+		</ul>
+	</div>
+</div>
+<div id="footer"></div>
+
+</body>
+</html>
diff --git a/public/admin/js/osmplayer/src/iscroll/examples/ios-perfect-scrollbar/index.html b/public/admin/js/osmplayer/src/iscroll/examples/ios-perfect-scrollbar/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..b3f73e7af4ca1e6fbdce7be331a08644c146365e
--- /dev/null
+++ b/public/admin/js/osmplayer/src/iscroll/examples/ios-perfect-scrollbar/index.html
@@ -0,0 +1,170 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0">
+<meta name="apple-mobile-web-app-capable" content="yes">
+<meta name="apple-mobile-web-app-status-bar-style" content="black">
+<title>iScroll demo: iOS Perfect Scrollbar</title>
+
+<link rel="stylesheet" type="text/css" href="scrollbar.css">
+
+<script type="application/javascript" src="../../src/iscroll.js"></script>
+
+<script type="text/javascript">
+
+var myScroll;
+function loaded() {
+	myScroll = new iScroll('wrapper', { scrollbarClass: 'myScrollbar' });
+}
+
+document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false);
+
+document.addEventListener('DOMContentLoaded', loaded, false);
+
+</script>
+
+<style type="text/css" media="all">
+body,ul,li {
+	padding:0;
+	margin:0;
+	border:0;
+}
+
+body {
+	font-size:12px;
+	-webkit-user-select:none;
+    -webkit-text-size-adjust:none;
+	font-family:helvetica;
+}
+
+#header {
+	position:absolute;
+	top:0; left:0;
+	width:100%;
+	height:45px;
+	line-height:45px;
+	background-image:-webkit-gradient(linear, 0 0, 0 100%, color-stop(0, #fe96c9), color-stop(0.05, #d51875), color-stop(1, #7b0a2e));
+	background-image:-moz-linear-gradient(top, #fe96c9, #d51875 5%, #7b0a2e);
+	background-image:-o-linear-gradient(top, #fe96c9, #d51875 5%, #7b0a2e);
+	padding:0;
+	color:#eee;
+	font-size:20px;
+	text-align:center;
+}
+
+#header a {
+	color:#f3f3f3;
+	text-decoration:none;
+	font-weight:bold;
+	text-shadow:0 -1px 0 rgba(0,0,0,0.5);
+}
+
+#footer {
+	position:absolute;
+	bottom:0; left:0;
+	width:100%;
+	height:48px;
+	background-image:-webkit-gradient(linear, 0 0, 0 100%, color-stop(0, #999), color-stop(0.02, #666), color-stop(1, #222));
+	background-image:-moz-linear-gradient(top, #999, #666 2%, #222);
+	background-image:-o-linear-gradient(top, #999, #666 2%, #222);
+	padding:0;
+	border-top:1px solid #444;
+}
+
+#wrapper {
+	position:absolute; z-index:1;
+	top:45px; bottom:48px; left:0;
+	width:100%;
+	background:#555;
+	overflow:auto;
+}
+
+#scroller {
+	position:relative;
+/*	-webkit-touch-callout:none;*/
+	-webkit-tap-highlight-color:rgba(0,0,0,0);
+
+	float:left;
+	width:100%;
+	padding:0;
+}
+
+#scroller ul {
+	position:relative;
+	list-style:none;
+	padding:0;
+	margin:0;
+	width:100%;
+	text-align:left;
+}
+
+#scroller li {
+	padding:0 10px;
+	height:40px;
+	line-height:40px;
+	border-bottom:1px solid #ccc;
+	border-top:1px solid #fff;
+	background-color:#fafafa;
+	font-size:14px;
+}
+
+#scroller li > a {
+	display:block;
+}
+
+</style>
+</head>
+<body>
+<div id="header"><a href="http://cubiq.org/iscroll">iScroll</a></div>
+<div id="wrapper">
+	<div id="scroller">
+		<ul id="thelist">
+			<li>Pretty row 1</li>
+			<li id="aaa">Pretty row 2</li>
+			<li>Pretty row 3</li>
+			<li>Pretty row 4</li>
+			<li>Pretty row 5</li>
+			<li>Pretty row 6</li>
+			<li>Pretty row 7</li>
+			<li>Pretty row 8</li>
+			<li>Pretty row 9</li>
+			<li>Pretty row 10</li>
+			<li>Pretty row 11</li>
+			<li>Pretty row 12</li>
+			<li>Pretty row 13</li>
+			<li>Pretty row 14</li>
+			<li>Pretty row 15</li>
+			<li>Pretty row 16</li>
+			<li>Pretty row 17</li>
+			<li>Pretty row 18</li>
+			<li>Pretty row 19</li>
+			<li>Pretty row 20</li>
+			<li>Pretty row 21</li>
+			<li>Pretty row 22</li>
+			<li>Pretty row 23</li>
+			<li>Pretty row 24</li>
+			<li>Pretty row 25</li>
+			<li>Pretty row 26</li>
+			<li>Pretty row 27</li>
+			<li>Pretty row 28</li>
+			<li>Pretty row 29</li>
+			<li>Pretty row 30</li>
+			<li>Pretty row 31</li>
+			<li>Pretty row 32</li>
+			<li>Pretty row 33</li>
+			<li>Pretty row 34</li>
+			<li>Pretty row 35</li>
+			<li>Pretty row 36</li>
+			<li>Pretty row 37</li>
+			<li>Pretty row 38</li>
+			<li>Pretty row 39</li>
+			<li>Pretty row 40</li>
+		</ul>
+	</div>
+</div>
+
+<div id="footer"></div>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/src/iscroll/examples/ios-perfect-scrollbar/scrollbar.css b/public/admin/js/osmplayer/src/iscroll/examples/ios-perfect-scrollbar/scrollbar.css
new file mode 100644
index 0000000000000000000000000000000000000000..36579cf506af97c091f1aeaad772f307dbb620df
--- /dev/null
+++ b/public/admin/js/osmplayer/src/iscroll/examples/ios-perfect-scrollbar/scrollbar.css
@@ -0,0 +1,57 @@
+/**
+ *
+ * Horizontal Scrollbar
+ *
+ */
+.myScrollbarH {
+	position:absolute;
+	z-index:100;
+	height:7px;
+	bottom:1px;
+	left:2px;
+	right:7px
+}
+
+.myScrollbarH > div {
+	height:100%;
+}
+
+
+/**
+ *
+ * Vertical Scrollbar
+ *
+ */
+.myScrollbarV {
+	position:absolute;
+	z-index:100;
+	width:7px;bottom:7px;top:2px;right:1px
+}
+
+.myScrollbarV > div {
+	width:100%;
+}
+
+
+/**
+ *
+ * Both Scrollbars
+ *
+ */
+.myScrollbarH > div,
+.myScrollbarV > div {
+	position:absolute;
+	z-index:100;
+
+	/* The following is probably what you want to customize */
+	-webkit-box-sizing:border-box;
+	-moz-box-sizing:border-box;
+	-o-box-sizing:border-box;
+	box-sizing:border-box;
+	
+	border-width:3px;
+	-webkit-border-image:url(scrollbar.png) 6 6 6 6;
+	-moz-border-image:url(scrollbar.png) 6 6 6 6;
+	-o-border-image:url(scrollbar.png) 6 6 6 6;
+	border-image:url(scrollbar.png) 6 6 6 6;
+}
diff --git a/public/admin/js/osmplayer/src/iscroll/examples/ios-perfect-scrollbar/scrollbar.png b/public/admin/js/osmplayer/src/iscroll/examples/ios-perfect-scrollbar/scrollbar.png
new file mode 100644
index 0000000000000000000000000000000000000000..08fb99719e12ea7af6d15a0201e4a2ea5bcc404e
Binary files /dev/null and b/public/admin/js/osmplayer/src/iscroll/examples/ios-perfect-scrollbar/scrollbar.png differ
diff --git a/public/admin/js/osmplayer/src/iscroll/examples/ipad/index.html b/public/admin/js/osmplayer/src/iscroll/examples/ipad/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..62872e460c6bb9cf69ab28fe5707be0587d26e86
--- /dev/null
+++ b/public/admin/js/osmplayer/src/iscroll/examples/ipad/index.html
@@ -0,0 +1,167 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0">
+<meta name="apple-mobile-web-app-capable" content="yes">
+<meta name="apple-mobile-web-app-status-bar-style" content="black">
+<title>iScroll demo: iPad</title>
+
+<script type="application/javascript" src="../../src/iscroll.js"></script>
+
+<script type="text/javascript">
+
+var scrollContent,
+	scrollNav;
+
+function loaded() {
+	scrollContent = new iScroll('contentWrapper');
+	scrollNav = new iScroll('navWrapper');
+}
+
+document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false);
+
+document.addEventListener('DOMContentLoaded', loaded, false);
+
+</script>
+
+<style type="text/css" media="all">
+html,body {
+	height:100%;
+}
+
+body,ul,li,header,nav,aside,section,article,p {
+	padding:0;
+	margin:0;
+	border:0;
+}
+
+body {
+	font-size:12px;
+	-webkit-user-select:none;
+    -webkit-text-size-adjust:none;
+	font-family:helvetica;
+	background:#424242;
+}
+
+p {
+	margin-bottom:1.5em;
+	line-height:150%;
+}
+
+header,nav,aside,section,article {
+	display:block;
+}
+
+#page {
+	width:100%; height:100%;
+	position:relative;
+	display:-webkit-box;
+	display:-moz-box;
+	display:-o-box;
+	display:box;
+	
+	-webkit-box-orient:horizontal;
+	-moz-box-orient:horizontal;
+	-o-box-orient:horizontal;
+	box-orient:horizontal;
+	
+	background:#424242;
+}
+
+#sidebar {
+	width:300px;
+	margin-right:1px;
+}
+
+#content {
+	-webkit-box-flex:1;
+	-moz-box-flex:1;
+	-o-box-flex:1;
+	box-flex:1;
+}
+
+#sidebar, #content {
+	position:relative;
+	height:100%;
+}
+
+header {
+	height:43px; line-height:43px;
+	border-bottom:1px solid #838a9a;
+	background-color:#424242;
+	background-image:-webkit-gradient(linear, 0 0, 0 100, from(#f4f5f7), to(#999da9));
+	background-image:-moz-linear-gradient(top, #f4f5f7, #999da9);
+	background-image:-o-linear-gradient(top, #f4f5f7, #999da9);
+	
+	color:#717880;
+	font-size:18px; font-weight:bold;
+	text-align:center;
+	text-shadow:0 1px 0 #fff;
+	-webkit-border-top-left-radius:4px;
+	-moz-border-top-left-radius:4px;
+	-o-border-top-left-radius:4px;
+	border-top-left-radius:4px;
+	
+	-webkit-border-top-right-radius:4px;
+	-moz-border-top-right-radius:4px;
+	-o-border-top-right-radius:4px;
+	border-top-right-radius:4px;
+}
+
+#navScroller > li {
+	padding:0 10px;
+	border-bottom:1px solid #ccc;
+	height:40px; line-height:40px;
+}
+
+#contentScroller {
+	-webkit-box-sizing:border-box;
+	-moz-box-sizing:border-box;
+	-o-box-sizing:border-box;
+	box-sizing:border-box;
+	padding:20px;
+}
+
+nav, article {
+	position:absolute;
+	top:44px; bottom:0; left:0; right:0;
+	font-size:15px;
+	background:#fff;
+	
+}
+</style>
+</head>
+<body>
+
+<div id="page">
+	<div id="sidebar">
+		<header>Navigation</header>
+		<nav id="navWrapper">
+			<ul id="navScroller">
+				<li>Option 1</li>
+				<li>Option 2</li>
+				<li>Option 3</li>
+				<li>Option 4</li>
+				<li>Option 5</li>
+				<li>Option 6</li>
+			</ul>
+		</nav>
+	</div>
+
+	<div id="content">
+		<header>Main Content Area</header>
+		<article id="contentWrapper">
+			<div id="contentScroller">
+				<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
+				<p>Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?</p>
+				<p>At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident, similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolorum fuga. Et harum quidem rerum facilis est et expedita distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihil impedit quo minus id quod maxime placeat facere possimus, omnis voluptas assumenda est, omnis dolor repellendus. Temporibus autem quibusdam et aut officiis debitis aut rerum necessitatibus saepe eveniet ut et voluptates repudiandae sint et molestiae non recusandae. Itaque earum rerum hic tenetur a sapiente delectus, ut aut reiciendis voluptatibus maiores alias consequatur aut perferendis doloribus asperiores repellat.</p>
+			<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
+			<p>Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?</p>
+			</div>
+		</article>
+	</div>
+</div>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/src/iscroll/examples/lite/index.html b/public/admin/js/osmplayer/src/iscroll/examples/lite/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..ddc16060b3df62307df51160c32c26ac123c4dd9
--- /dev/null
+++ b/public/admin/js/osmplayer/src/iscroll/examples/lite/index.html
@@ -0,0 +1,161 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0">
+<meta name="apple-mobile-web-app-capable" content="yes">
+<meta name="apple-mobile-web-app-status-bar-style" content="black">
+<title>iScroll demo: lite edition</title>
+
+<script type="application/javascript" src="../../src/iscroll-lite.js?v4"></script>
+
+<script type="text/javascript">
+
+var myScroll;
+function loaded() {
+	myScroll = new iScroll('wrapper');
+}
+
+document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false);
+
+document.addEventListener('DOMContentLoaded', loaded, false);
+
+</script>
+
+<style type="text/css" media="all">
+body,ul,li {
+	padding:0;
+	margin:0;
+	border:0;
+}
+
+body {
+	font-size:12px;
+	-webkit-user-select:none;
+    -webkit-text-size-adjust:none;
+	font-family:helvetica;
+}
+
+#header {
+	position:absolute; z-index:2;
+	top:0; left:0;
+	width:100%;
+	height:45px;
+	line-height:45px;
+	background-image:-webkit-gradient(linear, 0 0, 0 100%, color-stop(0, #fe96c9), color-stop(0.05, #d51875), color-stop(1, #7b0a2e));
+	background-image:-moz-linear-gradient(top, #fe96c9, #d51875 5%, #7b0a2e);
+	background-image:-o-linear-gradient(top, #fe96c9, #d51875 5%, #7b0a2e);
+	padding:0;
+	color:#eee;
+	font-size:20px;
+	text-align:center;
+}
+
+#header a {
+	color:#f3f3f3;
+	text-decoration:none;
+	font-weight:bold;
+	text-shadow:0 -1px 0 rgba(0,0,0,0.5);
+}
+
+#footer {
+	position:absolute; z-index:2;
+	bottom:0; left:0;
+	width:100%;
+	height:48px;
+	background-image:-webkit-gradient(linear, 0 0, 0 100%, color-stop(0, #999), color-stop(0.02, #666), color-stop(1, #222));
+	background-image:-moz-linear-gradient(top, #999, #666 2%, #222);
+	background-image:-o-linear-gradient(top, #999, #666 2%, #222);
+	padding:0;
+	border-top:1px solid #444;
+}
+
+#wrapper {
+	position:absolute; z-index:1;
+	top:45px; bottom:48px; left:0;
+	width:100%;
+	background:#aaa;
+	overflow:auto;
+}
+
+#scroller {
+	position:absolute; z-index:1;
+/*	-webkit-touch-callout:none;*/
+	-webkit-tap-highlight-color:rgba(0,0,0,0);
+	width:100%;
+	padding:0;
+}
+
+#scroller ul {
+	list-style:none;
+	padding:0;
+	margin:0;
+	width:100%;
+	text-align:left;
+}
+
+#scroller li {
+	padding:0 10px;
+	height:40px;
+	line-height:40px;
+	border-bottom:1px solid #ccc;
+	border-top:1px solid #fff;
+	background-color:#fafafa;
+	font-size:14px;
+}
+
+</style>
+</head>
+<body>
+<div id="header"><a href="http://cubiq.org/iscroll">iScroll</a></div>
+<div id="wrapper">
+	<div id="scroller">
+		<ul id="thelist">
+			<li>Pretty row 1</li>
+			<li>Pretty row 2</li>
+			<li>Pretty row 3</li>
+			<li>Pretty row 4</li>
+			<li>Pretty row 5</li>
+			<li>Pretty row 6</li>
+			<li>Pretty row 7</li>
+			<li>Pretty row 8</li>
+			<li>Pretty row 9</li>
+			<li>Pretty row 10</li>
+			<li>Pretty row 11</li>
+			<li>Pretty row 12</li>
+			<li>Pretty row 13</li>
+			<li>Pretty row 14</li>
+			<li>Pretty row 15</li>
+			<li>Pretty row 16</li>
+			<li>Pretty row 17</li>
+			<li>Pretty row 18</li>
+			<li>Pretty row 19</li>
+			<li>Pretty row 20</li>
+			<li>Pretty row 21</li>
+			<li>Pretty row 22</li>
+			<li>Pretty row 23</li>
+			<li>Pretty row 24</li>
+			<li>Pretty row 25</li>
+			<li>Pretty row 26</li>
+			<li>Pretty row 27</li>
+			<li>Pretty row 28</li>
+			<li>Pretty row 29</li>
+			<li>Pretty row 30</li>
+			<li>Pretty row 31</li>
+			<li>Pretty row 32</li>
+			<li>Pretty row 33</li>
+			<li>Pretty row 34</li>
+			<li>Pretty row 35</li>
+			<li>Pretty row 36</li>
+			<li>Pretty row 37</li>
+			<li>Pretty row 38</li>
+			<li>Pretty row 39</li>
+			<li>Pretty row 40</li>
+		</ul>
+	</div>
+</div>
+
+<div id="footer"></div>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/src/iscroll/examples/pull-to-refresh/index.html b/public/admin/js/osmplayer/src/iscroll/examples/pull-to-refresh/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..a624efe61932ff76b33dfe01e488eb7a500816b6
--- /dev/null
+++ b/public/admin/js/osmplayer/src/iscroll/examples/pull-to-refresh/index.html
@@ -0,0 +1,313 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0">
+<meta name="apple-mobile-web-app-capable" content="yes">
+<meta name="apple-mobile-web-app-status-bar-style" content="black">
+<title>iScroll demo: simple</title>
+
+<script type="text/javascript" src="../../src/iscroll.js"></script>
+
+<script type="text/javascript">
+
+var myScroll,
+	pullDownEl, pullDownOffset,
+	pullUpEl, pullUpOffset,
+	generatedCount = 0;
+
+function pullDownAction () {
+	setTimeout(function () {	// <-- Simulate network congestion, remove setTimeout from production!
+		var el, li, i;
+		el = document.getElementById('thelist');
+
+		for (i=0; i<3; i++) {
+			li = document.createElement('li');
+			li.innerText = 'Generated row ' + (++generatedCount);
+			el.insertBefore(li, el.childNodes[0]);
+		}
+		
+		myScroll.refresh();		// Remember to refresh when contents are loaded (ie: on ajax completion)
+	}, 1000);	// <-- Simulate network congestion, remove setTimeout from production!
+}
+
+function pullUpAction () {
+	setTimeout(function () {	// <-- Simulate network congestion, remove setTimeout from production!
+		var el, li, i;
+		el = document.getElementById('thelist');
+
+		for (i=0; i<3; i++) {
+			li = document.createElement('li');
+			li.innerText = 'Generated row ' + (++generatedCount);
+			el.appendChild(li, el.childNodes[0]);
+		}
+		
+		myScroll.refresh();		// Remember to refresh when contents are loaded (ie: on ajax completion)
+	}, 1000);	// <-- Simulate network congestion, remove setTimeout from production!
+}
+
+function loaded() {
+	pullDownEl = document.getElementById('pullDown');
+	pullDownOffset = pullDownEl.offsetHeight;
+	pullUpEl = document.getElementById('pullUp');	
+	pullUpOffset = pullUpEl.offsetHeight;
+	
+	myScroll = new iScroll('wrapper', {
+		useTransition: true,
+		topOffset: pullDownOffset,
+		onRefresh: function () {
+			if (pullDownEl.className.match('loading')) {
+				pullDownEl.className = '';
+				pullDownEl.querySelector('.pullDownLabel').innerHTML = 'Pull down to refresh...';
+			} else if (pullUpEl.className.match('loading')) {
+				pullUpEl.className = '';
+				pullUpEl.querySelector('.pullUpLabel').innerHTML = 'Pull up to load more...';
+			}
+		},
+		onScrollMove: function () {
+			if (this.y > 5 && !pullDownEl.className.match('flip')) {
+				pullDownEl.className = 'flip';
+				pullDownEl.querySelector('.pullDownLabel').innerHTML = 'Release to refresh...';
+				this.minScrollY = 0;
+			} else if (this.y < 5 && pullDownEl.className.match('flip')) {
+				pullDownEl.className = '';
+				pullDownEl.querySelector('.pullDownLabel').innerHTML = 'Pull down to refresh...';
+				this.minScrollY = -pullDownOffset;
+			} else if (this.y < (this.maxScrollY - 5) && !pullUpEl.className.match('flip')) {
+				pullUpEl.className = 'flip';
+				pullUpEl.querySelector('.pullUpLabel').innerHTML = 'Release to refresh...';
+				this.maxScrollY = this.maxScrollY;
+			} else if (this.y > (this.maxScrollY + 5) && pullUpEl.className.match('flip')) {
+				pullUpEl.className = '';
+				pullUpEl.querySelector('.pullUpLabel').innerHTML = 'Pull up to load more...';
+				this.maxScrollY = pullUpOffset;
+			}
+		},
+		onScrollEnd: function () {
+			if (pullDownEl.className.match('flip')) {
+				pullDownEl.className = 'loading';
+				pullDownEl.querySelector('.pullDownLabel').innerHTML = 'Loading...';				
+				pullDownAction();	// Execute custom function (ajax call?)
+			} else if (pullUpEl.className.match('flip')) {
+				pullUpEl.className = 'loading';
+				pullUpEl.querySelector('.pullUpLabel').innerHTML = 'Loading...';				
+				pullUpAction();	// Execute custom function (ajax call?)
+			}
+		}
+	});
+	
+	setTimeout(function () { document.getElementById('wrapper').style.left = '0'; }, 800);
+}
+
+document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false);
+
+document.addEventListener('DOMContentLoaded', function () { setTimeout(loaded, 200); }, false);
+</script>
+
+<style type="text/css" media="all">
+body,ul,li {
+	padding:0;
+	margin:0;
+	border:0;
+}
+
+body {
+	font-size:12px;
+	-webkit-user-select:none;
+    -webkit-text-size-adjust:none;
+	font-family:helvetica;
+}
+
+#header {
+	position:absolute; z-index:2;
+	top:0; left:0;
+	width:100%;
+	height:45px;
+	line-height:45px;
+	background-color:#d51875;
+	background-image:-webkit-gradient(linear, 0 0, 0 100%, color-stop(0, #fe96c9), color-stop(0.05, #d51875), color-stop(1, #7b0a2e));
+	background-image:-moz-linear-gradient(top, #fe96c9, #d51875 5%, #7b0a2e);
+	background-image:-o-linear-gradient(top, #fe96c9, #d51875 5%, #7b0a2e);
+	padding:0;
+	color:#eee;
+	font-size:20px;
+	text-align:center;
+}
+
+#header a {
+	color:#f3f3f3;
+	text-decoration:none;
+	font-weight:bold;
+	text-shadow:0 -1px 0 rgba(0,0,0,0.5);
+}
+
+#footer {
+	position:absolute; z-index:2;
+	bottom:0; left:0;
+	width:100%;
+	height:48px;
+	background-color:#222;
+	background-image:-webkit-gradient(linear, 0 0, 0 100%, color-stop(0, #999), color-stop(0.02, #666), color-stop(1, #222));
+	background-image:-moz-linear-gradient(top, #999, #666 2%, #222);
+	background-image:-o-linear-gradient(top, #999, #666 2%, #222);
+	padding:0;
+	border-top:1px solid #444;
+}
+
+#wrapper {
+	position:absolute; z-index:1;
+	top:45px; bottom:48px; left:-9999px;
+	width:100%;
+	background:#aaa;
+	overflow:auto;
+}
+
+#scroller {
+	position:absolute; z-index:1;
+/*	-webkit-touch-callout:none;*/
+	-webkit-tap-highlight-color:rgba(0,0,0,0);
+	width:100%;
+	padding:0;
+}
+
+#scroller ul {
+	list-style:none;
+	padding:0;
+	margin:0;
+	width:100%;
+	text-align:left;
+}
+
+#scroller li {
+	padding:0 10px;
+	height:40px;
+	line-height:40px;
+	border-bottom:1px solid #ccc;
+	border-top:1px solid #fff;
+	background-color:#fafafa;
+	font-size:14px;
+}
+
+#myFrame {
+	position:absolute;
+	top:0; left:0;
+}
+
+
+
+/**
+ *
+ * Pull down styles
+ *
+ */
+#pullDown, #pullUp {
+	background:#fff;
+	height:40px;
+	line-height:40px;
+	padding:5px 10px;
+	border-bottom:1px solid #ccc;
+	font-weight:bold;
+	font-size:14px;
+	color:#888;
+}
+#pullDown .pullDownIcon, #pullUp .pullUpIcon  {
+	display:block; float:left;
+	width:40px; height:40px;
+	background:url(pull-icon@2x.png) 0 0 no-repeat;
+	-webkit-background-size:40px 80px; background-size:40px 80px;
+	-webkit-transition-property:-webkit-transform;
+	-webkit-transition-duration:250ms;	
+}
+#pullDown .pullDownIcon {
+	-webkit-transform:rotate(0deg) translateZ(0);
+}
+#pullUp .pullUpIcon  {
+	-webkit-transform:rotate(-180deg) translateZ(0);
+}
+
+#pullDown.flip .pullDownIcon {
+	-webkit-transform:rotate(-180deg) translateZ(0);
+}
+
+#pullUp.flip .pullUpIcon {
+	-webkit-transform:rotate(0deg) translateZ(0);
+}
+
+#pullDown.loading .pullDownIcon, #pullUp.loading .pullUpIcon {
+	background-position:0 100%;
+	-webkit-transform:rotate(0deg) translateZ(0);
+	-webkit-transition-duration:0ms;
+
+	-webkit-animation-name:loading;
+	-webkit-animation-duration:2s;
+	-webkit-animation-iteration-count:infinite;
+	-webkit-animation-timing-function:linear;
+}
+
+@-webkit-keyframes loading {
+	from { -webkit-transform:rotate(0deg) translateZ(0); }
+	to { -webkit-transform:rotate(360deg) translateZ(0); }
+}
+
+</style>
+</head>
+<body>
+
+<div id="header"><a href="http://cubiq.org/iscroll">iScroll</a></div>
+<div id="wrapper">
+	<div id="scroller">
+		<div id="pullDown">
+			<span class="pullDownIcon"></span><span class="pullDownLabel">Pull down to refresh...</span>
+		</div>
+
+		<ul id="thelist">
+			<li>Pretty row 1</li>
+			<li>Pretty row 2</li>
+			<li>Pretty row 3</li>
+			<li>Pretty row 4</li>
+			<li>Pretty row 5</li>
+			<li>Pretty row 6</li>
+			<li>Pretty row 7</li>
+			<li>Pretty row 8</li>
+			<li>Pretty row 9</li>
+			<li>Pretty row 10</li>
+			<li>Pretty row 11</li>
+			<li>Pretty row 12</li>
+			<li>Pretty row 13</li>
+			<li>Pretty row 14</li>
+			<li>Pretty row 15</li>
+			<li>Pretty row 16</li>
+			<li>Pretty row 17</li>
+			<li>Pretty row 18</li>
+			<li>Pretty row 19</li>
+			<li>Pretty row 20</li>
+			<li>Pretty row 21</li>
+			<li>Pretty row 22</li>
+			<li>Pretty row 23</li>
+			<li>Pretty row 24</li>
+			<li>Pretty row 25</li>
+			<li>Pretty row 26</li>
+			<li>Pretty row 27</li>
+			<li>Pretty row 28</li>
+			<li>Pretty row 29</li>
+			<li>Pretty row 30</li>
+			<li>Pretty row 31</li>
+			<li>Pretty row 32</li>
+			<li>Pretty row 33</li>
+			<li>Pretty row 34</li>
+			<li>Pretty row 35</li>
+			<li>Pretty row 36</li>
+			<li>Pretty row 37</li>
+			<li>Pretty row 38</li>
+			<li>Pretty row 39</li>
+			<li>Pretty row 40</li>
+		</ul>
+		<div id="pullUp">
+			<span class="pullUpIcon"></span><span class="pullUpLabel">Pull up to refresh...</span>
+		</div>
+	</div>
+</div>
+<div id="footer"></div>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/src/iscroll/examples/pull-to-refresh/pull-icon@2x.png b/public/admin/js/osmplayer/src/iscroll/examples/pull-to-refresh/pull-icon@2x.png
new file mode 100755
index 0000000000000000000000000000000000000000..97c8bda3987158498ac50863eb6b3aae24f7383c
Binary files /dev/null and b/public/admin/js/osmplayer/src/iscroll/examples/pull-to-refresh/pull-icon@2x.png differ
diff --git a/public/admin/js/osmplayer/src/iscroll/examples/simple/index.html b/public/admin/js/osmplayer/src/iscroll/examples/simple/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..fad4e9606a1684bd2a97f729af05eb0b49873ff6
--- /dev/null
+++ b/public/admin/js/osmplayer/src/iscroll/examples/simple/index.html
@@ -0,0 +1,189 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0">
+<meta name="apple-mobile-web-app-capable" content="yes">
+<meta name="apple-mobile-web-app-status-bar-style" content="black">
+<title>iScroll demo: simple</title>
+
+<script type="text/javascript" src="../../src/iscroll.js"></script>
+
+<script type="text/javascript">
+
+var myScroll;
+function loaded() {
+	myScroll = new iScroll('wrapper');
+}
+
+document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false);
+
+/* * * * * * * *
+ *
+ * Use this for high compatibility (iDevice + Android)
+ *
+ */
+document.addEventListener('DOMContentLoaded', function () { setTimeout(loaded, 200); }, false);
+/*
+ * * * * * * * */
+
+
+/* * * * * * * *
+ *
+ * Use this for iDevice only
+ *
+ */
+//document.addEventListener('DOMContentLoaded', loaded, false);
+/*
+ * * * * * * * */
+
+
+/* * * * * * * *
+ *
+ * Use this if nothing else works
+ *
+ */
+//window.addEventListener('load', setTimeout(function () { loaded(); }, 200), false);
+/*
+ * * * * * * * */
+
+</script>
+
+<style type="text/css" media="all">
+body,ul,li {
+	padding:0;
+	margin:0;
+	border:0;
+}
+
+body {
+	font-size:12px;
+	-webkit-user-select:none;
+    -webkit-text-size-adjust:none;
+	font-family:helvetica;
+}
+
+#header {
+	position:absolute; z-index:2;
+	top:0; left:0;
+	width:100%;
+	height:45px;
+	line-height:45px;
+	background-color:#d51875;
+	background-image:-webkit-gradient(linear, 0 0, 0 100%, color-stop(0, #fe96c9), color-stop(0.05, #d51875), color-stop(1, #7b0a2e));
+	background-image:-moz-linear-gradient(top, #fe96c9, #d51875 5%, #7b0a2e);
+	background-image:-o-linear-gradient(top, #fe96c9, #d51875 5%, #7b0a2e);
+	padding:0;
+	color:#eee;
+	font-size:20px;
+	text-align:center;
+}
+
+#header a {
+	color:#f3f3f3;
+	text-decoration:none;
+	font-weight:bold;
+	text-shadow:0 -1px 0 rgba(0,0,0,0.5);
+}
+
+#footer {
+	position:absolute; z-index:2;
+	bottom:0; left:0;
+	width:100%;
+	height:48px;
+	background-color:#222;
+	background-image:-webkit-gradient(linear, 0 0, 0 100%, color-stop(0, #999), color-stop(0.02, #666), color-stop(1, #222));
+	background-image:-moz-linear-gradient(top, #999, #666 2%, #222);
+	background-image:-o-linear-gradient(top, #999, #666 2%, #222);
+	padding:0;
+	border-top:1px solid #444;
+}
+
+#wrapper {
+	position:absolute; z-index:1;
+	top:45px; bottom:48px; left:0;
+	width:100%;
+	background:#aaa;
+	overflow:auto;
+}
+
+#scroller {
+	position:absolute; z-index:1;
+/*	-webkit-touch-callout:none;*/
+	-webkit-tap-highlight-color:rgba(0,0,0,0);
+	width:100%;
+	padding:0;
+}
+
+#scroller ul {
+	list-style:none;
+	padding:0;
+	margin:0;
+	width:100%;
+	text-align:left;
+}
+
+#scroller li {
+	padding:0 10px;
+	height:40px;
+	line-height:40px;
+	border-bottom:1px solid #ccc;
+	border-top:1px solid #fff;
+	background-color:#fafafa;
+	font-size:14px;
+}
+</style>
+</head>
+<body>
+
+<div id="header"><a href="http://cubiq.org/iscroll">iScroll</a></div>
+<div id="wrapper">
+	<div id="scroller">
+		<ul id="thelist">
+			<li>Pretty row 1</li>
+			<li>Pretty row 2</li>
+			<li>Pretty row 3</li>
+			<li>Pretty row 4</li>
+			<li>Pretty row 5</li>
+			<li>Pretty row 6</li>
+			<li>Pretty row 7</li>
+			<li>Pretty row 8</li>
+			<li>Pretty row 9</li>
+			<li>Pretty row 10</li>
+			<li>Pretty row 11</li>
+			<li>Pretty row 12</li>
+			<li>Pretty row 13</li>
+			<li>Pretty row 14</li>
+			<li>Pretty row 15</li>
+			<li>Pretty row 16</li>
+			<li>Pretty row 17</li>
+			<li>Pretty row 18</li>
+			<li>Pretty row 19</li>
+			<li>Pretty row 20</li>
+			<li>Pretty row 21</li>
+			<li>Pretty row 22</li>
+			<li>Pretty row 23</li>
+			<li>Pretty row 24</li>
+			<li>Pretty row 25</li>
+			<li>Pretty row 26</li>
+			<li>Pretty row 27</li>
+			<li>Pretty row 28</li>
+			<li>Pretty row 29</li>
+			<li>Pretty row 30</li>
+			<li>Pretty row 31</li>
+			<li>Pretty row 32</li>
+			<li>Pretty row 33</li>
+			<li>Pretty row 34</li>
+			<li>Pretty row 35</li>
+			<li>Pretty row 36</li>
+			<li>Pretty row 37</li>
+			<li>Pretty row 38</li>
+			<li>Pretty row 39</li>
+			<li>Pretty row 40</li>
+		</ul>
+	</div>
+</div>
+<div id="footer"></div>
+
+</body>
+</html>
diff --git a/public/admin/js/osmplayer/src/iscroll/examples/snap-to-element/index.html b/public/admin/js/osmplayer/src/iscroll/examples/snap-to-element/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..ef8a2f41c5ba42dc448cf0074ac434250f3cc181
--- /dev/null
+++ b/public/admin/js/osmplayer/src/iscroll/examples/snap-to-element/index.html
@@ -0,0 +1,133 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0">
+<meta name="apple-mobile-web-app-capable" content="yes">
+<meta name="apple-mobile-web-app-status-bar-style" content="black">
+<title>iScroll demo: Snap to element</title>
+
+<script type="text/javascript" src="../../src/iscroll.js"></script>
+
+<script type="text/javascript">
+var myScroll;
+
+function loaded() {
+	myScroll = new iScroll('wrapper', {
+		snap: 'li',
+		momentum: false,
+		hScrollbar: false,
+		vScrollbar: false
+	 });
+}
+
+document.addEventListener('DOMContentLoaded', loaded, false);
+</script>
+
+<style type="text/css" media="all">
+body,ul,li {
+	padding:0;
+	margin:0;
+	border:0;
+}
+
+body {
+	font-size:12px;
+	-webkit-user-select:none;
+    -webkit-text-size-adjust:none;
+	font-family:helvetica;
+}
+
+#header {
+	position:absolute;
+	top:0; left:0;
+	width:100%;
+	height:45px;
+	line-height:45px;
+	background-image:-webkit-gradient(linear, 0 0, 0 100%, color-stop(0, #fe96c9), color-stop(0.05, #d51875), color-stop(1, #7b0a2e));
+	background-image:-moz-linear-gradient(top, #fe96c9, #d51875 5%, #7b0a2e);
+	background-image:-o-linear-gradient(top, #fe96c9, #d51875 5%, #7b0a2e);
+	padding:0;
+	color:#eee;
+	font-size:20px;
+	text-align:center;
+}
+
+#header a {
+	color:#f3f3f3;
+	text-decoration:none;
+	font-weight:bold;
+	text-shadow:0 -1px 0 rgba(0,0,0,0.5);
+}
+
+#wrapper {
+	position:absolute; z-index:1;
+	top:45px; bottom:0; left:0;
+	width:100%;
+	overflow:auto;
+	background:#eee;
+}
+
+#scroller {
+	width:800px;
+	float:left;
+	padding:0;
+}
+
+#scroller ul {
+	list-style:none;
+	display:block;
+	float:left;
+	width:100%;
+	height:100%;
+	padding:0;
+	margin:0;
+	border:1px solid #aaa;
+}
+
+#scroller li {
+	display:block; float:left;
+	width:78px; height:78px; line-height:78px;
+	text-align:center;
+	border:1px solid #aaa;
+	background:#ccc;
+}
+
+</style>
+</head>
+<body>
+<div id="header"><a href="http://cubiq.org/iscroll">iScroll</a></div>
+
+<div id="wrapper">
+	<div id="scroller">
+		<ul id="thelist">
+			<li>cell</li> <li>cell</li> <li>cell</li> <li>cell</li> <li>cell</li>
+			<li>cell</li> <li>cell</li> <li>cell</li> <li>cell</li> <li>cell</li>
+			<li>cell</li> <li>cell</li> <li>cell</li> <li>cell</li> <li>cell</li>
+			<li>cell</li> <li>cell</li> <li>cell</li> <li>cell</li> <li>cell</li>
+
+			<li>cell</li> <li>cell</li> <li>cell</li> <li>cell</li> <li>cell</li>
+			<li>cell</li> <li>cell</li> <li>cell</li> <li>cell</li> <li>cell</li>
+			<li>cell</li> <li>cell</li> <li>cell</li> <li>cell</li> <li>cell</li>
+			<li>cell</li> <li>cell</li> <li>cell</li> <li>cell</li> <li>cell</li>
+
+			<li>cell</li> <li>cell</li> <li>cell</li> <li>cell</li> <li>cell</li>
+			<li>cell</li> <li>cell</li> <li>cell</li> <li>cell</li> <li>cell</li>
+			<li>cell</li> <li>cell</li> <li>cell</li> <li>cell</li> <li>cell</li>
+			<li>cell</li> <li>cell</li> <li>cell</li> <li>cell</li> <li>cell</li>
+
+			<li>cell</li> <li>cell</li> <li>cell</li> <li>cell</li> <li>cell</li>
+			<li>cell</li> <li>cell</li> <li>cell</li> <li>cell</li> <li>cell</li>
+			<li>cell</li> <li>cell</li> <li>cell</li> <li>cell</li> <li>cell</li>
+			<li>cell</li> <li>cell</li> <li>cell</li> <li>cell</li> <li>cell</li>
+
+			<li>cell</li> <li>cell</li> <li>cell</li> <li>cell</li> <li>cell</li>
+			<li>cell</li> <li>cell</li> <li>cell</li> <li>cell</li> <li>cell</li>
+			<li>cell</li> <li>cell</li> <li>cell</li> <li>cell</li> <li>cell</li>
+			<li>cell</li> <li>cell</li> <li>cell</li> <li>cell</li> <li>cell</li>
+		</ul>
+	</div>
+</div>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/src/iscroll/examples/use-transition/index.html b/public/admin/js/osmplayer/src/iscroll/examples/use-transition/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..cd93e4405f581ad830bd4bca78b2bf31afccf6b2
--- /dev/null
+++ b/public/admin/js/osmplayer/src/iscroll/examples/use-transition/index.html
@@ -0,0 +1,186 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0">
+<meta name="apple-mobile-web-app-capable" content="yes">
+<meta name="apple-mobile-web-app-status-bar-style" content="black">
+<title>iScroll demo: Use transition</title>
+
+<script type="text/javascript" src="../../src/iscroll.js"></script>
+
+<script type="text/javascript">
+
+var scroll1, scroll2;
+function loaded() {
+	scroll1 = new iScroll('standard');
+	scroll2 = new iScroll('transition', { useTransition:true });
+}
+
+document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false);
+document.addEventListener('DOMContentLoaded', loaded, false);
+
+</script>
+
+<style type="text/css" media="all">
+ul,li {
+	padding:0;
+	margin:0;
+	border:0;
+}
+
+body {
+	font-size:12px;
+	-webkit-user-select:none;
+    -webkit-text-size-adjust:none;
+	font-family:helvetica;
+	padding:20px;
+}
+
+#standard, #transition {
+	position:relative; z-index:1;
+	display:block; float:left;
+	width:300px; height:400px;
+	background:#aaa;
+	overflow:auto;
+	border:1px solid #aaa;
+}
+
+#standard {
+	margin-right:20px;
+}
+
+.scroller {
+	position:absolute; z-index:1;
+/*	-webkit-touch-callout:none;*/
+	-webkit-tap-highlight-color:rgba(0,0,0,0);
+	width:100%;
+	padding:0;
+}
+
+.scroller ul {
+	list-style:none;
+	padding:0;
+	margin:0;
+	width:100%;
+	text-align:left;
+}
+
+.scroller li {
+	padding:0 10px;
+	height:40px;
+	line-height:40px;
+	border-bottom:1px solid #ccc;
+	border-top:1px solid #fff;
+	background-color:#fafafa;
+	font-size:14px;
+}
+
+#myFrame {
+	position:absolute;
+	top:0; left:0;
+}
+
+</style>
+</head>
+<body>
+<h1>Open this page on iPad to test the difference between standard iScroll and iScroll in "transition mode"</h1>
+
+<div id="standard">
+	<div class="scroller">
+		<ul>
+			<li><strong>Standard iScroll</strong></li>
+			<li>Pretty row 2</li>
+			<li>Pretty row 3</li>
+			<li>Pretty row 4</li>
+			<li>Pretty row 5</li>
+			<li>Pretty row 6</li>
+			<li>Pretty row 7</li>
+			<li>Pretty row 8</li>
+			<li>Pretty row 9</li>
+			<li>Pretty row 10</li>
+			<li><strong>Standard iScroll</strong></li>
+			<li>Pretty row 12</li>
+			<li>Pretty row 13</li>
+			<li>Pretty row 14</li>
+			<li>Pretty row 15</li>
+			<li>Pretty row 16</li>
+			<li>Pretty row 17</li>
+			<li>Pretty row 18</li>
+			<li>Pretty row 19</li>
+			<li>Pretty row 20</li>
+			<li><strong>Standard iScroll</strong></li>
+			<li>Pretty row 22</li>
+			<li>Pretty row 23</li>
+			<li>Pretty row 24</li>
+			<li>Pretty row 25</li>
+			<li>Pretty row 26</li>
+			<li>Pretty row 27</li>
+			<li>Pretty row 28</li>
+			<li>Pretty row 29</li>
+			<li>Pretty row 30</li>
+			<li><strong>Standard iScroll</strong></li>
+			<li>Pretty row 32</li>
+			<li>Pretty row 33</li>
+			<li>Pretty row 34</li>
+			<li>Pretty row 35</li>
+			<li>Pretty row 36</li>
+			<li>Pretty row 37</li>
+			<li>Pretty row 38</li>
+			<li>Pretty row 39</li>
+			<li>Pretty row 40</li>
+		</ul>
+	</div>
+</div>
+
+
+<div id="transition">
+	<div class="scroller">
+		<ul>
+			<li><strong>Transition mode</strong></li>
+			<li>Pretty row 2</li>
+			<li>Pretty row 3</li>
+			<li>Pretty row 4</li>
+			<li>Pretty row 5</li>
+			<li>Pretty row 6</li>
+			<li>Pretty row 7</li>
+			<li>Pretty row 8</li>
+			<li>Pretty row 9</li>
+			<li>Pretty row 10</li>
+			<li><strong>Transition mode</strong></li>
+			<li>Pretty row 12</li>
+			<li>Pretty row 13</li>
+			<li>Pretty row 14</li>
+			<li>Pretty row 15</li>
+			<li>Pretty row 16</li>
+			<li>Pretty row 17</li>
+			<li>Pretty row 18</li>
+			<li>Pretty row 19</li>
+			<li>Pretty row 20</li>
+			<li><strong>Transition mode</strong></li>
+			<li>Pretty row 22</li>
+			<li>Pretty row 23</li>
+			<li>Pretty row 24</li>
+			<li>Pretty row 25</li>
+			<li>Pretty row 26</li>
+			<li>Pretty row 27</li>
+			<li>Pretty row 28</li>
+			<li>Pretty row 29</li>
+			<li>Pretty row 30</li>
+			<li><strong>Transition mode</strong></li>
+			<li>Pretty row 32</li>
+			<li>Pretty row 33</li>
+			<li>Pretty row 34</li>
+			<li>Pretty row 35</li>
+			<li>Pretty row 36</li>
+			<li>Pretty row 37</li>
+			<li>Pretty row 38</li>
+			<li>Pretty row 39</li>
+			<li>Pretty row 40</li>
+		</ul>
+	</div>
+</div>
+
+
+</body>
+</html>
diff --git a/public/admin/js/osmplayer/src/iscroll/examples/zoom/index.html b/public/admin/js/osmplayer/src/iscroll/examples/zoom/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..11d682c24aa96e5565050d0b655e7c9754fe94ce
--- /dev/null
+++ b/public/admin/js/osmplayer/src/iscroll/examples/zoom/index.html
@@ -0,0 +1,118 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0">
+<meta name="apple-mobile-web-app-capable" content="yes">
+<meta name="apple-mobile-web-app-status-bar-style" content="black">
+<title>iScroll demo: zoom</title>
+
+<script type="application/javascript" src="../../src/iscroll.js"></script>
+
+<script type="text/javascript">
+
+var myScroll;
+function loaded() {
+	myScroll = new iScroll('wrapper', { zoom:true });
+}
+
+document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false);
+
+document.addEventListener('DOMContentLoaded', loaded, false);
+
+</script>
+
+<style type="text/css" media="all">
+body,ul,li,p {
+	padding:0;
+	margin:0;
+	border:0;
+}
+
+body {
+	font-size:12px;
+	-webkit-user-select:none;
+    -webkit-text-size-adjust:none;
+	font-family:helvetica;
+}
+
+#header {
+	position:absolute;
+	top:0; left:0;
+	width:100%;
+	height:45px;
+	line-height:45px;
+	background-image:-webkit-gradient(linear, 0 0, 0 100%, color-stop(0, #fe96c9), color-stop(0.05, #d51875), color-stop(1, #7b0a2e));
+	background-image:-moz-linear-gradient(top, #fe96c9, #d51875 5%, #7b0a2e);
+	background-image:-o-linear-gradient(top, #fe96c9, #d51875 5%, #7b0a2e);
+	padding:0;
+	color:#eee;
+	font-size:20px;
+	text-align:center;
+}
+
+#header a {
+	color:#f3f3f3;
+	text-decoration:none;
+	font-weight:bold;
+	text-shadow:0 -1px 0 rgba(0,0,0,0.5);
+}
+
+#footer {
+	position:absolute;
+	bottom:0; left:0;
+	width:100%;
+	height:48px;
+	background-image:-webkit-gradient(linear, 0 0, 0 100%, color-stop(0, #999), color-stop(0.02, #666), color-stop(1, #222));
+	background-image:-moz-linear-gradient(top, #999, #666 2%, #222);
+	background-image:-o-linear-gradient(top, #999, #666 2%, #222);
+	padding:0;
+	border-top:1px solid #444;
+}
+
+#wrapper {
+	position:absolute; z-index:1;
+	top:45px; bottom:48px; left:0;
+	width:100%;
+	background:#aaa;
+	overflow:auto;
+}
+
+#scroller {
+	position:relative;
+/*	-webkit-touch-callout:none;*/
+	-webkit-tap-highlight-color:rgba(0,0,0,0);
+
+	width:640px;
+	padding:0;
+	background:#fff;
+}
+
+p {
+	display:block;
+	width:624px;
+	margin-bottom:1em;
+	padding:8px;
+	font-size:14px;
+}
+
+p img {
+	margin:4px 8px;
+	-webkit-transform:translate3d(0,0,0);
+}
+</style>
+</head>
+<body>
+<div id="header"><a href="http://cubiq.org/iscroll">iScroll</a></div>
+<div id="wrapper">
+	<div id="scroller">
+		<p><img src="iscroll.jpg" width="100" height="122" alt="iscroll" style="float:left">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
+		<p>Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?</p>
+		<p><img src="iscroll.jpg" width="100" height="122" alt="iscroll" style="float:right">At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident, similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolorum fuga. Et harum quidem rerum facilis est et expedita distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihil impedit quo minus id quod maxime placeat facere possimus, omnis voluptas assumenda est, omnis dolor repellendus. Temporibus autem quibusdam et aut officiis debitis aut rerum necessitatibus saepe eveniet ut et voluptates repudiandae sint et molestiae non recusandae. Itaque earum rerum hic tenetur a sapiente delectus, ut aut reiciendis voluptatibus maiores alias consequatur aut perferendis doloribus asperiores repellat.</p>
+	</div>
+</div>
+
+<div id="footer"></div>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/src/iscroll/examples/zoom/iscroll.jpg b/public/admin/js/osmplayer/src/iscroll/examples/zoom/iscroll.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..9ed0d7ea85024fdee9fe21502e67aad97acec1e2
Binary files /dev/null and b/public/admin/js/osmplayer/src/iscroll/examples/zoom/iscroll.jpg differ
diff --git a/public/admin/js/osmplayer/src/iscroll/license.txt b/public/admin/js/osmplayer/src/iscroll/license.txt
new file mode 100644
index 0000000000000000000000000000000000000000..60418c2b509a338276d2a8b45cb12735e32b21fe
--- /dev/null
+++ b/public/admin/js/osmplayer/src/iscroll/license.txt
@@ -0,0 +1,22 @@
+Copyright (c) 2011 Matteo Spinelli, http://cubiq.org/
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/src/iscroll/package.json b/public/admin/js/osmplayer/src/iscroll/package.json
new file mode 100644
index 0000000000000000000000000000000000000000..86831f295a7f26820a03e4cf5df92f1ebe0d222d
--- /dev/null
+++ b/public/admin/js/osmplayer/src/iscroll/package.json
@@ -0,0 +1,14 @@
+{
+    "name": "iscroll"
+  , "description": "smooth scrolling for mobile webkit"
+  , "version": "4.1.9"
+  , "homepage": "http://cubiq.org/iscroll-4"
+  , "author": "Matteo Spinelli <> (http://cubiq.org)"
+  , "keywords": ["ender", "iscroll", "scrolling", "webkit", "iphone", "android"]
+  , "main": "./src/iscroll.js"
+  , "ender": "./src/ender.js"
+  , "repository": {
+      "type": "git"
+    , "url": "https://github.com/cubiq/iscroll.git"
+  }
+}
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/src/iscroll/src/ender.js b/public/admin/js/osmplayer/src/iscroll/src/ender.js
new file mode 100644
index 0000000000000000000000000000000000000000..4c64f8af1be30a94996d66986301a586a32243b0
--- /dev/null
+++ b/public/admin/js/osmplayer/src/iscroll/src/ender.js
@@ -0,0 +1,7 @@
+!function ($, iScroll) {
+  $.ender({
+    iScroll: function (options) {
+      return new iScroll(this[0], options)
+    }
+  }, true)
+}(ender, require('iscroll').iScroll)
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/src/iscroll/src/iscroll-lite.js b/public/admin/js/osmplayer/src/iscroll/src/iscroll-lite.js
new file mode 100644
index 0000000000000000000000000000000000000000..3a6cab7d2c1a4526f1eeafb8bf545afec9323618
--- /dev/null
+++ b/public/admin/js/osmplayer/src/iscroll/src/iscroll-lite.js
@@ -0,0 +1,594 @@
+/*!
+ * iScroll Lite base on iScroll v4.1.6 ~ Copyright (c) 2011 Matteo Spinelli, http://cubiq.org
+ * Released under MIT license, http://cubiq.org/license
+ */
+
+(function(){
+var m = Math,
+	mround = function (r) { return r >> 0; },
+	vendor = (/webkit/i).test(navigator.appVersion) ? 'webkit' :
+		(/firefox/i).test(navigator.userAgent) ? 'Moz' :
+		'opera' in window ? 'O' : '',
+
+    // Browser capabilities
+    isAndroid = (/android/gi).test(navigator.appVersion),
+    isIDevice = (/iphone|ipad/gi).test(navigator.appVersion),
+    isPlaybook = (/playbook/gi).test(navigator.appVersion),
+    isTouchPad = (/hp-tablet/gi).test(navigator.appVersion),
+
+    has3d = 'WebKitCSSMatrix' in window && 'm11' in new WebKitCSSMatrix(),
+    hasTouch = 'ontouchstart' in window && !isTouchPad,
+    hasTransform = vendor + 'Transform' in document.documentElement.style,
+    hasTransitionEnd = isIDevice || isPlaybook,
+
+	nextFrame = (function() {
+	    return window.requestAnimationFrame
+			|| window.webkitRequestAnimationFrame
+			|| window.mozRequestAnimationFrame
+			|| window.oRequestAnimationFrame
+			|| window.msRequestAnimationFrame
+			|| function(callback) { return setTimeout(callback, 17); }
+	})(),
+	cancelFrame = (function () {
+	    return window.cancelRequestAnimationFrame
+			|| window.webkitCancelAnimationFrame
+			|| window.webkitCancelRequestAnimationFrame
+			|| window.mozCancelRequestAnimationFrame
+			|| window.oCancelRequestAnimationFrame
+			|| window.msCancelRequestAnimationFrame
+			|| clearTimeout
+	})(),
+
+	// Events
+	RESIZE_EV = 'onorientationchange' in window ? 'orientationchange' : 'resize',
+	START_EV = hasTouch ? 'touchstart' : 'mousedown',
+	MOVE_EV = hasTouch ? 'touchmove' : 'mousemove',
+	END_EV = hasTouch ? 'touchend' : 'mouseup',
+	CANCEL_EV = hasTouch ? 'touchcancel' : 'mouseup',
+
+	// Helpers
+	trnOpen = 'translate' + (has3d ? '3d(' : '('),
+	trnClose = has3d ? ',0)' : ')',
+
+	// Constructor
+	iScroll = function (el, options) {
+		var that = this,
+			doc = document,
+			i;
+
+		that.wrapper = typeof el == 'object' ? el : doc.getElementById(el);
+		that.wrapper.style.overflow = 'hidden';
+		that.scroller = that.wrapper.children[0];
+
+		// Default options
+		that.options = {
+			hScroll: true,
+			vScroll: true,
+			x: 0,
+			y: 0,
+			bounce: true,
+			bounceLock: false,
+			momentum: true,
+			lockDirection: true,
+			useTransform: true,
+			useTransition: false,
+
+			// Events
+			onRefresh: null,
+			onBeforeScrollStart: function (e) { e.preventDefault(); },
+			onScrollStart: null,
+			onBeforeScrollMove: null,
+			onScrollMove: null,
+			onBeforeScrollEnd: null,
+			onScrollEnd: null,
+			onTouchEnd: null,
+			onDestroy: null
+		};
+
+		// User defined options
+		for (i in options) that.options[i] = options[i];
+
+		// Set starting position
+		that.x = that.options.x;
+		that.y = that.options.y;
+
+		// Normalize options
+		that.options.useTransform = hasTransform ? that.options.useTransform : false;
+		that.options.hScrollbar = that.options.hScroll && that.options.hScrollbar;
+		that.options.vScrollbar = that.options.vScroll && that.options.vScrollbar;
+		that.options.useTransition = hasTransitionEnd && that.options.useTransition;
+
+		// Set some default styles
+		that.scroller.style[vendor + 'TransitionProperty'] = that.options.useTransform ? '-' + vendor.toLowerCase() + '-transform' : 'top left';
+		that.scroller.style[vendor + 'TransitionDuration'] = '0';
+		that.scroller.style[vendor + 'TransformOrigin'] = '0 0';
+		if (that.options.useTransition) that.scroller.style[vendor + 'TransitionTimingFunction'] = 'cubic-bezier(0.33,0.66,0.66,1)';
+		
+		if (that.options.useTransform) that.scroller.style[vendor + 'Transform'] = trnOpen + that.x + 'px,' + that.y + 'px' + trnClose;
+		else that.scroller.style.cssText += ';position:absolute;top:' + that.y + 'px;left:' + that.x + 'px';
+
+		that.refresh();
+
+		that._bind(RESIZE_EV, window);
+		that._bind(START_EV);
+		if (!hasTouch) that._bind('mouseout', that.wrapper);
+	};
+
+// Prototype
+iScroll.prototype = {
+	enabled: true,
+	x: 0,
+	y: 0,
+	steps: [],
+	scale: 1,
+	
+	handleEvent: function (e) {
+		var that = this;
+		switch(e.type) {
+			case START_EV:
+				if (!hasTouch && e.button !== 0) return;
+				that._start(e);
+				break;
+			case MOVE_EV: that._move(e); break;
+			case END_EV:
+			case CANCEL_EV: that._end(e); break;
+			case RESIZE_EV: that._resize(); break;
+			case 'mouseout': that._mouseout(e); break;
+			case 'webkitTransitionEnd': that._transitionEnd(e); break;
+		}
+	},
+
+	_resize: function () {
+		this.refresh();
+	},
+	
+	_pos: function (x, y) {
+		x = this.hScroll ? x : 0;
+		y = this.vScroll ? y : 0;
+
+		if (this.options.useTransform) {
+			this.scroller.style[vendor + 'Transform'] = trnOpen + x + 'px,' + y + 'px' + trnClose + ' scale(' + this.scale + ')';
+		} else {
+			x = mround(x);
+			y = mround(y);
+			this.scroller.style.left = x + 'px';
+			this.scroller.style.top = y + 'px';
+		}
+
+		this.x = x;
+		this.y = y;
+	},
+
+	_start: function (e) {
+		var that = this,
+			point = hasTouch ? e.touches[0] : e,
+			matrix, x, y;
+
+		if (!that.enabled) return;
+
+		if (that.options.onBeforeScrollStart) that.options.onBeforeScrollStart.call(that, e);
+		
+		if (that.options.useTransition) that._transitionTime(0);
+
+		that.moved = false;
+		that.animating = false;
+		that.zoomed = false;
+		that.distX = 0;
+		that.distY = 0;
+		that.absDistX = 0;
+		that.absDistY = 0;
+		that.dirX = 0;
+		that.dirY = 0;
+
+		if (that.options.momentum) {
+			if (that.options.useTransform) {
+				// Very lame general purpose alternative to CSSMatrix
+				matrix = getComputedStyle(that.scroller, null)[vendor + 'Transform'].replace(/[^0-9-.,]/g, '').split(',');
+				x = matrix[4] * 1;
+				y = matrix[5] * 1;
+			} else {
+				x = getComputedStyle(that.scroller, null).left.replace(/[^0-9-]/g, '') * 1;
+				y = getComputedStyle(that.scroller, null).top.replace(/[^0-9-]/g, '') * 1;
+			}
+			
+			if (x != that.x || y != that.y) {
+				if (that.options.useTransition) that._unbind('webkitTransitionEnd');
+				else cancelFrame(that.aniTime);
+				that.steps = [];
+				that._pos(x, y);
+			}
+		}
+
+		that.startX = that.x;
+		that.startY = that.y;
+		that.pointX = point.pageX;
+		that.pointY = point.pageY;
+
+		that.startTime = e.timeStamp || Date.now();
+
+		if (that.options.onScrollStart) that.options.onScrollStart.call(that, e);
+
+		that._bind(MOVE_EV);
+		that._bind(END_EV);
+		that._bind(CANCEL_EV);
+	},
+	
+	_move: function (e) {
+		var that = this,
+			point = hasTouch ? e.touches[0] : e,
+			deltaX = point.pageX - that.pointX,
+			deltaY = point.pageY - that.pointY,
+			newX = that.x + deltaX,
+			newY = that.y + deltaY,
+			timestamp = e.timeStamp || Date.now();
+
+		if (that.options.onBeforeScrollMove) that.options.onBeforeScrollMove.call(that, e);
+
+		that.pointX = point.pageX;
+		that.pointY = point.pageY;
+
+		// Slow down if outside of the boundaries
+		if (newX > 0 || newX < that.maxScrollX) {
+			newX = that.options.bounce ? that.x + (deltaX / 2) : newX >= 0 || that.maxScrollX >= 0 ? 0 : that.maxScrollX;
+		}
+		if (newY > 0 || newY < that.maxScrollY) { 
+			newY = that.options.bounce ? that.y + (deltaY / 2) : newY >= 0 || that.maxScrollY >= 0 ? 0 : that.maxScrollY;
+		}
+
+		that.distX += deltaX;
+		that.distY += deltaY;
+		that.absDistX = m.abs(that.distX);
+		that.absDistY = m.abs(that.distY);
+
+		if (that.absDistX < 6 && that.absDistY < 6) {
+			return;
+		}
+
+		// Lock direction
+		if (that.options.lockDirection) {
+			if (that.absDistX > that.absDistY + 5) {
+				newY = that.y;
+				deltaY = 0;
+			} else if (that.absDistY > that.absDistX + 5) {
+				newX = that.x;
+				deltaX = 0;
+			}
+		}
+
+		that.moved = true;
+		that._pos(newX, newY);
+		that.dirX = deltaX > 0 ? -1 : deltaX < 0 ? 1 : 0;
+		that.dirY = deltaY > 0 ? -1 : deltaY < 0 ? 1 : 0;
+
+		if (timestamp - that.startTime > 300) {
+			that.startTime = timestamp;
+			that.startX = that.x;
+			that.startY = that.y;
+		}
+		
+		if (that.options.onScrollMove) that.options.onScrollMove.call(that, e);
+	},
+	
+	_end: function (e) {
+		if (hasTouch && e.touches.length != 0) return;
+
+		var that = this,
+			point = hasTouch ? e.changedTouches[0] : e,
+			target, ev,
+			momentumX = { dist:0, time:0 },
+			momentumY = { dist:0, time:0 },
+			duration = (e.timeStamp || Date.now()) - that.startTime,
+			newPosX = that.x,
+			newPosY = that.y,
+			newDuration;
+
+		that._unbind(MOVE_EV);
+		that._unbind(END_EV);
+		that._unbind(CANCEL_EV);
+
+		if (that.options.onBeforeScrollEnd) that.options.onBeforeScrollEnd.call(that, e);
+
+		if (!that.moved) {
+			if (hasTouch) {
+				// Find the last touched element
+				target = point.target;
+				while (target.nodeType != 1) target = target.parentNode;
+
+				if (target.tagName != 'SELECT' && target.tagName != 'INPUT' && target.tagName != 'TEXTAREA') {
+					ev = document.createEvent('MouseEvents');
+					ev.initMouseEvent('click', true, true, e.view, 1,
+						point.screenX, point.screenY, point.clientX, point.clientY,
+						e.ctrlKey, e.altKey, e.shiftKey, e.metaKey,
+						0, null);
+					ev._fake = true;
+					target.dispatchEvent(ev);
+				}
+			}
+
+			that._resetPos(200);
+
+			if (that.options.onTouchEnd) that.options.onTouchEnd.call(that, e);
+			return;
+		}
+
+		if (duration < 300 && that.options.momentum) {
+			momentumX = newPosX ? that._momentum(newPosX - that.startX, duration, -that.x, that.scrollerW - that.wrapperW + that.x, that.options.bounce ? that.wrapperW : 0) : momentumX;
+			momentumY = newPosY ? that._momentum(newPosY - that.startY, duration, -that.y, (that.maxScrollY < 0 ? that.scrollerH - that.wrapperH + that.y : 0), that.options.bounce ? that.wrapperH : 0) : momentumY;
+
+			newPosX = that.x + momentumX.dist;
+			newPosY = that.y + momentumY.dist;
+
+ 			if ((that.x > 0 && newPosX > 0) || (that.x < that.maxScrollX && newPosX < that.maxScrollX)) momentumX = { dist:0, time:0 };
+ 			if ((that.y > 0 && newPosY > 0) || (that.y < that.maxScrollY && newPosY < that.maxScrollY)) momentumY = { dist:0, time:0 };
+		}
+
+		if (momentumX.dist || momentumY.dist) {
+			newDuration = m.max(m.max(momentumX.time, momentumY.time), 10);
+
+			that.scrollTo(mround(newPosX), mround(newPosY), newDuration);
+
+			if (that.options.onTouchEnd) that.options.onTouchEnd.call(that, e);
+			return;
+		}
+
+		that._resetPos(200);
+		if (that.options.onTouchEnd) that.options.onTouchEnd.call(that, e);
+	},
+	
+	_resetPos: function (time) {
+		var that = this,
+			resetX = that.x >= 0 ? 0 : that.x < that.maxScrollX ? that.maxScrollX : that.x,
+			resetY = that.y >= 0 || that.maxScrollY > 0 ? 0 : that.y < that.maxScrollY ? that.maxScrollY : that.y;
+
+		if (resetX == that.x && resetY == that.y) {
+			if (that.moved) {
+				if (that.options.onScrollEnd) that.options.onScrollEnd.call(that);		// Execute custom code on scroll end
+				that.moved = false;
+			}
+
+			return;
+		}
+
+		that.scrollTo(resetX, resetY, time || 0);
+	},
+	
+	_mouseout: function (e) {
+		var t = e.relatedTarget;
+
+		if (!t) {
+			this._end(e);
+			return;
+		}
+
+		while (t = t.parentNode) if (t == this.wrapper) return;
+		
+		this._end(e);
+	},
+
+	_transitionEnd: function (e) {
+		var that = this;
+
+		if (e.target != that.scroller) return;
+
+		that._unbind('webkitTransitionEnd');
+		
+		that._startAni();
+	},
+
+	/**
+	 *
+	 * Utilities
+	 *
+	 */
+	_startAni: function () {
+		var that = this,
+			startX = that.x, startY = that.y,
+			startTime = Date.now(),
+			step, easeOut,
+			animate;
+
+		if (that.animating) return;
+
+		if (!that.steps.length) {
+			that._resetPos(400);
+			return;
+		}
+
+		step = that.steps.shift();
+
+		if (step.x == startX && step.y == startY) step.time = 0;
+
+		that.animating = true;
+		that.moved = true;
+
+		if (that.options.useTransition) {
+			that._transitionTime(step.time);
+			that._pos(step.x, step.y);
+			that.animating = false;
+			if (step.time) that._bind('webkitTransitionEnd');
+			else that._resetPos(0);
+			return;
+		}
+		
+		animate = function () {
+			var now = Date.now(),
+				newX, newY;
+
+			if (now >= startTime + step.time) {
+				that._pos(step.x, step.y);
+				that.animating = false;
+				if (that.options.onAnimationEnd) that.options.onAnimationEnd.call(that);			// Execute custom code on animation end
+				that._startAni();
+				return;
+			}
+
+			now = (now - startTime) / step.time - 1;
+			easeOut = m.sqrt(1 - now * now);
+			newX = (step.x - startX) * easeOut + startX;
+			newY = (step.y - startY) * easeOut + startY;
+			that._pos(newX, newY);
+			if (that.animating) that.aniTime = nextFrame(animate);
+		};
+		
+		animate();
+	},
+
+	_transitionTime: function (time) {
+		this.scroller.style[vendor + 'TransitionDuration'] = time + 'ms';
+	},
+	
+	_momentum: function (dist, time, maxDistUpper, maxDistLower, size) {
+		var deceleration = 0.0006,
+			speed = m.abs(dist) / time,
+			newDist = (speed * speed) / (2 * deceleration),
+			newTime = 0, outsideDist = 0;
+
+		// Proportinally reduce speed if we are outside of the boundaries 
+		if (dist > 0 && newDist > maxDistUpper) {
+			outsideDist = size / (6 / (newDist / speed * deceleration));
+			maxDistUpper = maxDistUpper + outsideDist;
+			speed = speed * maxDistUpper / newDist;
+			newDist = maxDistUpper;
+		} else if (dist < 0 && newDist > maxDistLower) {
+			outsideDist = size / (6 / (newDist / speed * deceleration));
+			maxDistLower = maxDistLower + outsideDist;
+			speed = speed * maxDistLower / newDist;
+			newDist = maxDistLower;
+		}
+
+		newDist = newDist * (dist < 0 ? -1 : 1);
+		newTime = speed / deceleration;
+
+		return { dist: newDist, time: mround(newTime) };
+	},
+
+	_offset: function (el) {
+		var left = -el.offsetLeft,
+			top = -el.offsetTop;
+			
+		while (el = el.offsetParent) {
+			left -= el.offsetLeft;
+			top -= el.offsetTop;
+		} 
+
+		return { left: left, top: top };
+	},
+
+	_bind: function (type, el, bubble) {
+		(el || this.scroller).addEventListener(type, this, !!bubble);
+	},
+
+	_unbind: function (type, el, bubble) {
+		(el || this.scroller).removeEventListener(type, this, !!bubble);
+	},
+
+
+	/**
+	 *
+	 * Public methods
+	 *
+	 */
+	destroy: function () {
+		var that = this;
+
+		that.scroller.style[vendor + 'Transform'] = '';
+
+		// Remove the event listeners
+		that._unbind(RESIZE_EV, window);
+		that._unbind(START_EV);
+		that._unbind(MOVE_EV);
+		that._unbind(END_EV);
+		that._unbind(CANCEL_EV);
+		that._unbind('mouseout', that.wrapper);
+		if (that.options.useTransition) that._unbind('webkitTransitionEnd');
+		
+		if (that.options.onDestroy) that.options.onDestroy.call(that);
+	},
+
+	refresh: function () {
+		var that = this,
+			offset;
+
+		that.wrapperW = that.wrapper.clientWidth;
+		that.wrapperH = that.wrapper.clientHeight;
+
+		that.scrollerW = that.scroller.offsetWidth;
+		that.scrollerH = that.scroller.offsetHeight;
+		that.maxScrollX = that.wrapperW - that.scrollerW;
+		that.maxScrollY = that.wrapperH - that.scrollerH;
+		that.dirX = 0;
+		that.dirY = 0;
+
+		that.hScroll = that.options.hScroll && that.maxScrollX < 0;
+		that.vScroll = that.options.vScroll && (!that.options.bounceLock && !that.hScroll || that.scrollerH > that.wrapperH);
+
+		offset = that._offset(that.wrapper);
+		that.wrapperOffsetLeft = -offset.left;
+		that.wrapperOffsetTop = -offset.top;
+
+
+		that.scroller.style[vendor + 'TransitionDuration'] = '0';
+
+		that._resetPos(200);
+	},
+
+	scrollTo: function (x, y, time, relative) {
+		var that = this,
+			step = x,
+			i, l;
+
+		that.stop();
+
+		if (!step.length) step = [{ x: x, y: y, time: time, relative: relative }];
+		
+		for (i=0, l=step.length; i<l; i++) {
+			if (step[i].relative) { step[i].x = that.x - step[i].x; step[i].y = that.y - step[i].y; }
+			that.steps.push({ x: step[i].x, y: step[i].y, time: step[i].time || 0 });
+		}
+
+		that._startAni();
+	},
+
+	scrollToElement: function (el, time) {
+		var that = this, pos;
+		el = el.nodeType ? el : that.scroller.querySelector(el);
+		if (!el) return;
+
+		pos = that._offset(el);
+		pos.left += that.wrapperOffsetLeft;
+		pos.top += that.wrapperOffsetTop;
+
+		pos.left = pos.left > 0 ? 0 : pos.left < that.maxScrollX ? that.maxScrollX : pos.left;
+		pos.top = pos.top > 0 ? 0 : pos.top < that.maxScrollY ? that.maxScrollY : pos.top;
+		time = time === undefined ? m.max(m.abs(pos.left)*2, m.abs(pos.top)*2) : time;
+
+		that.scrollTo(pos.left, pos.top, time);
+	},
+
+	disable: function () {
+		this.stop();
+		this._resetPos(0);
+		this.enabled = false;
+
+		// If disabled after touchstart we make sure that there are no left over events
+		this._unbind(MOVE_EV);
+		this._unbind(END_EV);
+		this._unbind(CANCEL_EV);
+	},
+	
+	enable: function () {
+		this.enabled = true;
+	},
+	
+	stop: function () {
+		cancelFrame(this.aniTime);
+		this.steps = [];
+		this.moved = false;
+		this.animating = false;
+	}
+};
+
+if (typeof exports !== 'undefined') exports.iScroll = iScroll;
+else window.iScroll = iScroll;
+
+})();
diff --git a/public/admin/js/osmplayer/src/iscroll/src/iscroll.js b/public/admin/js/osmplayer/src/iscroll/src/iscroll.js
new file mode 100644
index 0000000000000000000000000000000000000000..0957eca3cc501df6d6a2cd81f85795553b89a274
--- /dev/null
+++ b/public/admin/js/osmplayer/src/iscroll/src/iscroll.js
@@ -0,0 +1,1076 @@
+/*!
+ * iScroll v4.1.9 ~ Copyright (c) 2011 Matteo Spinelli, http://cubiq.org
+ * Released under MIT license, http://cubiq.org/license
+ */
+(function(){
+var m = Math,
+	mround = function (r) { return r >> 0; },
+	vendor = (/webkit/i).test(navigator.appVersion) ? 'webkit' :
+		(/firefox/i).test(navigator.userAgent) ? 'Moz' :
+		(/trident/i).test(navigator.userAgent) ? 'ms' :
+		'opera' in window ? 'O' : '',
+
+    // Browser capabilities
+    isAndroid = (/android/gi).test(navigator.appVersion),
+    isIDevice = (/iphone|ipad/gi).test(navigator.appVersion),
+    isPlaybook = (/playbook/gi).test(navigator.appVersion),
+    isTouchPad = (/hp-tablet/gi).test(navigator.appVersion),
+
+    has3d = 'WebKitCSSMatrix' in window && 'm11' in new WebKitCSSMatrix(),
+    hasTouch = 'ontouchstart' in window && !isTouchPad,
+    hasTransform = vendor + 'Transform' in document.documentElement.style,
+    hasTransitionEnd = isIDevice || isPlaybook,
+
+	nextFrame = (function() {
+	    return window.requestAnimationFrame
+			|| window.webkitRequestAnimationFrame
+			|| window.mozRequestAnimationFrame
+			|| window.oRequestAnimationFrame
+			|| window.msRequestAnimationFrame
+			|| function(callback) { return setTimeout(callback, 1); }
+	})(),
+	cancelFrame = (function () {
+	    return window.cancelRequestAnimationFrame
+			|| window.webkitCancelAnimationFrame
+			|| window.webkitCancelRequestAnimationFrame
+			|| window.mozCancelRequestAnimationFrame
+			|| window.oCancelRequestAnimationFrame
+			|| window.msCancelRequestAnimationFrame
+			|| clearTimeout
+	})(),
+
+	// Events
+	RESIZE_EV = 'onorientationchange' in window ? 'orientationchange' : 'resize',
+	START_EV = hasTouch ? 'touchstart' : 'mousedown',
+	MOVE_EV = hasTouch ? 'touchmove' : 'mousemove',
+	END_EV = hasTouch ? 'touchend' : 'mouseup',
+	CANCEL_EV = hasTouch ? 'touchcancel' : 'mouseup',
+	WHEEL_EV = vendor == 'Moz' ? 'DOMMouseScroll' : 'mousewheel',
+
+	// Helpers
+	trnOpen = 'translate' + (has3d ? '3d(' : '('),
+	trnClose = has3d ? ',0)' : ')',
+
+	// Constructor
+	iScroll = function (el, options) {
+		var that = this,
+			doc = document,
+			i;
+
+		that.wrapper = typeof el == 'object' ? el : doc.getElementById(el);
+		that.wrapper.style.overflow = 'hidden';
+		that.scroller = that.wrapper.children[0];
+
+		// Default options
+		that.options = {
+			hScroll: true,
+			vScroll: true,
+			x: 0,
+			y: 0,
+			bounce: true,
+			bounceLock: false,
+			momentum: true,
+			lockDirection: true,
+			useTransform: true,
+			useTransition: false,
+			topOffset: 0,
+			checkDOMChanges: false,		// Experimental
+
+			// Scrollbar
+			hScrollbar: true,
+			vScrollbar: true,
+			fixedScrollbar: isAndroid,
+			hideScrollbar: isIDevice,
+			fadeScrollbar: isIDevice && has3d,
+			scrollbarClass: '',
+
+			// Zoom
+			zoom: false,
+			zoomMin: 1,
+			zoomMax: 4,
+			doubleTapZoom: 2,
+			wheelAction: 'scroll',
+
+			// Snap
+			snap: false,
+			snapThreshold: 1,
+
+			// Events
+			onRefresh: null,
+			onBeforeScrollStart: function (e) { e.preventDefault(); },
+			onScrollStart: null,
+			onBeforeScrollMove: null,
+			onScrollMove: null,
+			onBeforeScrollEnd: null,
+			onScrollEnd: null,
+			onTouchEnd: null,
+			onDestroy: null,
+			onZoomStart: null,
+			onZoom: null,
+			onZoomEnd: null
+		};
+
+		// User defined options
+		for (i in options) that.options[i] = options[i];
+		
+		// Set starting position
+		that.x = that.options.x;
+		that.y = that.options.y;
+
+		// Normalize options
+		that.options.useTransform = hasTransform ? that.options.useTransform : false;
+		that.options.hScrollbar = that.options.hScroll && that.options.hScrollbar;
+		that.options.vScrollbar = that.options.vScroll && that.options.vScrollbar;
+		that.options.zoom = that.options.useTransform && that.options.zoom;
+		that.options.useTransition = hasTransitionEnd && that.options.useTransition;
+
+		// Helpers FIX ANDROID BUG!
+		// translate3d and scale doesn't work together! 
+		// Ignoring 3d ONLY WHEN YOU SET that.options.zoom
+		if ( that.options.zoom && isAndroid ){
+			trnOpen = 'translate(';
+			trnClose = ')';
+		}
+		
+		// Set some default styles
+		that.scroller.style[vendor + 'TransitionProperty'] = that.options.useTransform ? '-' + vendor.toLowerCase() + '-transform' : 'top left';
+		that.scroller.style[vendor + 'TransitionDuration'] = '0';
+		that.scroller.style[vendor + 'TransformOrigin'] = '0 0';
+		if (that.options.useTransition) that.scroller.style[vendor + 'TransitionTimingFunction'] = 'cubic-bezier(0.33,0.66,0.66,1)';
+		
+		if (that.options.useTransform) that.scroller.style[vendor + 'Transform'] = trnOpen + that.x + 'px,' + that.y + 'px' + trnClose;
+		else that.scroller.style.cssText += ';position:absolute;top:' + that.y + 'px;left:' + that.x + 'px';
+
+		if (that.options.useTransition) that.options.fixedScrollbar = true;
+
+		that.refresh();
+
+		that._bind(RESIZE_EV, window);
+		that._bind(START_EV);
+		if (!hasTouch) {
+			that._bind('mouseout', that.wrapper);
+			if (that.options.wheelAction != 'none')
+				that._bind(WHEEL_EV);
+		}
+
+		if (that.options.checkDOMChanges) that.checkDOMTime = setInterval(function () {
+			that._checkDOMChanges();
+		}, 500);
+	};
+
+// Prototype
+iScroll.prototype = {
+	enabled: true,
+	x: 0,
+	y: 0,
+	steps: [],
+	scale: 1,
+	currPageX: 0, currPageY: 0,
+	pagesX: [], pagesY: [],
+	aniTime: null,
+	wheelZoomCount: 0,
+	
+	handleEvent: function (e) {
+		var that = this;
+		switch(e.type) {
+			case START_EV:
+				if (!hasTouch && e.button !== 0) return;
+				that._start(e);
+				break;
+			case MOVE_EV: that._move(e); break;
+			case END_EV:
+			case CANCEL_EV: that._end(e); break;
+			case RESIZE_EV: that._resize(); break;
+			case WHEEL_EV: that._wheel(e); break;
+			case 'mouseout': that._mouseout(e); break;
+			case 'webkitTransitionEnd': that._transitionEnd(e); break;
+		}
+	},
+	
+	_checkDOMChanges: function () {
+		if (this.moved || this.zoomed || this.animating ||
+			(this.scrollerW == this.scroller.offsetWidth * this.scale && this.scrollerH == this.scroller.offsetHeight * this.scale)) return;
+
+		this.refresh();
+	},
+	
+	_scrollbar: function (dir) {
+		var that = this,
+			doc = document,
+			bar;
+
+		if (!that[dir + 'Scrollbar']) {
+			if (that[dir + 'ScrollbarWrapper']) {
+				if (hasTransform) that[dir + 'ScrollbarIndicator'].style[vendor + 'Transform'] = '';
+				that[dir + 'ScrollbarWrapper'].parentNode.removeChild(that[dir + 'ScrollbarWrapper']);
+				that[dir + 'ScrollbarWrapper'] = null;
+				that[dir + 'ScrollbarIndicator'] = null;
+			}
+
+			return;
+		}
+
+		if (!that[dir + 'ScrollbarWrapper']) {
+			// Create the scrollbar wrapper
+			bar = doc.createElement('div');
+
+			if (that.options.scrollbarClass) bar.className = that.options.scrollbarClass + dir.toUpperCase();
+			else bar.style.cssText = 'position:absolute;z-index:100;' + (dir == 'h' ? 'height:7px;bottom:1px;left:2px;right:' + (that.vScrollbar ? '7' : '2') + 'px' : 'width:7px;bottom:' + (that.hScrollbar ? '7' : '2') + 'px;top:2px;right:1px');
+
+			bar.style.cssText += ';pointer-events:none;-' + vendor + '-transition-property:opacity;-' + vendor + '-transition-duration:' + (that.options.fadeScrollbar ? '350ms' : '0') + ';overflow:hidden;opacity:' + (that.options.hideScrollbar ? '0' : '1');
+
+			that.wrapper.appendChild(bar);
+			that[dir + 'ScrollbarWrapper'] = bar;
+
+			// Create the scrollbar indicator
+			bar = doc.createElement('div');
+			if (!that.options.scrollbarClass) {
+				bar.style.cssText = 'position:absolute;z-index:100;background:rgba(0,0,0,0.5);border:1px solid rgba(255,255,255,0.9);-' + vendor + '-background-clip:padding-box;-' + vendor + '-box-sizing:border-box;' + (dir == 'h' ? 'height:100%' : 'width:100%') + ';-' + vendor + '-border-radius:3px;border-radius:3px';
+			}
+			bar.style.cssText += ';pointer-events:none;-' + vendor + '-transition-property:-' + vendor + '-transform;-' + vendor + '-transition-timing-function:cubic-bezier(0.33,0.66,0.66,1);-' + vendor + '-transition-duration:0;-' + vendor + '-transform:' + trnOpen + '0,0' + trnClose;
+			if (that.options.useTransition) bar.style.cssText += ';-' + vendor + '-transition-timing-function:cubic-bezier(0.33,0.66,0.66,1)';
+
+			that[dir + 'ScrollbarWrapper'].appendChild(bar);
+			that[dir + 'ScrollbarIndicator'] = bar;
+		}
+
+		if (dir == 'h') {
+			that.hScrollbarSize = that.hScrollbarWrapper.clientWidth;
+			that.hScrollbarIndicatorSize = m.max(mround(that.hScrollbarSize * that.hScrollbarSize / that.scrollerW), 8);
+			that.hScrollbarIndicator.style.width = that.hScrollbarIndicatorSize + 'px';
+			that.hScrollbarMaxScroll = that.hScrollbarSize - that.hScrollbarIndicatorSize;
+			that.hScrollbarProp = that.hScrollbarMaxScroll / that.maxScrollX;
+		} else {
+			that.vScrollbarSize = that.vScrollbarWrapper.clientHeight;
+			that.vScrollbarIndicatorSize = m.max(mround(that.vScrollbarSize * that.vScrollbarSize / that.scrollerH), 8);
+			that.vScrollbarIndicator.style.height = that.vScrollbarIndicatorSize + 'px';
+			that.vScrollbarMaxScroll = that.vScrollbarSize - that.vScrollbarIndicatorSize;
+			that.vScrollbarProp = that.vScrollbarMaxScroll / that.maxScrollY;
+		}
+
+		// Reset position
+		that._scrollbarPos(dir, true);
+	},
+	
+	_resize: function () {
+		var that = this;
+		setTimeout(function () { that.refresh(); }, isAndroid ? 200 : 0);
+	},
+	
+	_pos: function (x, y) {
+		x = this.hScroll ? x : 0;
+		y = this.vScroll ? y : 0;
+
+		if (this.options.useTransform) {
+			this.scroller.style[vendor + 'Transform'] = trnOpen + x + 'px,' + y + 'px' + trnClose + ' scale(' + this.scale + ')';
+		} else {
+			x = mround(x);
+			y = mround(y);
+			this.scroller.style.left = x + 'px';
+			this.scroller.style.top = y + 'px';
+		}
+
+		this.x = x;
+		this.y = y;
+
+		this._scrollbarPos('h');
+		this._scrollbarPos('v');
+	},
+
+	_scrollbarPos: function (dir, hidden) {
+		var that = this,
+			pos = dir == 'h' ? that.x : that.y,
+			size;
+
+		if (!that[dir + 'Scrollbar']) return;
+
+		pos = that[dir + 'ScrollbarProp'] * pos;
+
+		if (pos < 0) {
+			if (!that.options.fixedScrollbar) {
+				size = that[dir + 'ScrollbarIndicatorSize'] + mround(pos * 3);
+				if (size < 8) size = 8;
+				that[dir + 'ScrollbarIndicator'].style[dir == 'h' ? 'width' : 'height'] = size + 'px';
+			}
+			pos = 0;
+		} else if (pos > that[dir + 'ScrollbarMaxScroll']) {
+			if (!that.options.fixedScrollbar) {
+				size = that[dir + 'ScrollbarIndicatorSize'] - mround((pos - that[dir + 'ScrollbarMaxScroll']) * 3);
+				if (size < 8) size = 8;
+				that[dir + 'ScrollbarIndicator'].style[dir == 'h' ? 'width' : 'height'] = size + 'px';
+				pos = that[dir + 'ScrollbarMaxScroll'] + (that[dir + 'ScrollbarIndicatorSize'] - size);
+			} else {
+				pos = that[dir + 'ScrollbarMaxScroll'];
+			}
+		}
+
+		that[dir + 'ScrollbarWrapper'].style[vendor + 'TransitionDelay'] = '0';
+		that[dir + 'ScrollbarWrapper'].style.opacity = hidden && that.options.hideScrollbar ? '0' : '1';
+		that[dir + 'ScrollbarIndicator'].style[vendor + 'Transform'] = trnOpen + (dir == 'h' ? pos + 'px,0' : '0,' + pos + 'px') + trnClose;
+	},
+	
+	_start: function (e) {
+		var that = this,
+			point = hasTouch ? e.touches[0] : e,
+			matrix, x, y,
+			c1, c2;
+
+		if (!that.enabled) return;
+
+		if (that.options.onBeforeScrollStart) that.options.onBeforeScrollStart.call(that, e);
+
+		if (that.options.useTransition || that.options.zoom) that._transitionTime(0);
+
+		that.moved = false;
+		that.animating = false;
+		that.zoomed = false;
+		that.distX = 0;
+		that.distY = 0;
+		that.absDistX = 0;
+		that.absDistY = 0;
+		that.dirX = 0;
+		that.dirY = 0;
+
+		// Gesture start
+		if (that.options.zoom && hasTouch && e.touches.length > 1) {
+			c1 = m.abs(e.touches[0].pageX-e.touches[1].pageX);
+			c2 = m.abs(e.touches[0].pageY-e.touches[1].pageY);
+			that.touchesDistStart = m.sqrt(c1 * c1 + c2 * c2);
+
+			that.originX = m.abs(e.touches[0].pageX + e.touches[1].pageX - that.wrapperOffsetLeft * 2) / 2 - that.x;
+			that.originY = m.abs(e.touches[0].pageY + e.touches[1].pageY - that.wrapperOffsetTop * 2) / 2 - that.y;
+
+			if (that.options.onZoomStart) that.options.onZoomStart.call(that, e);
+		}
+
+		if (that.options.momentum) {
+			if (that.options.useTransform) {
+				// Very lame general purpose alternative to CSSMatrix
+				matrix = getComputedStyle(that.scroller, null)[vendor + 'Transform'].replace(/[^0-9-.,]/g, '').split(',');
+				x = matrix[4] * 1;
+				y = matrix[5] * 1;
+			} else {
+				x = getComputedStyle(that.scroller, null).left.replace(/[^0-9-]/g, '') * 1;
+				y = getComputedStyle(that.scroller, null).top.replace(/[^0-9-]/g, '') * 1;
+			}
+			
+			if (x != that.x || y != that.y) {
+				if (that.options.useTransition) that._unbind('webkitTransitionEnd');
+				else cancelFrame(that.aniTime);
+				that.steps = [];
+				that._pos(x, y);
+			}
+		}
+
+		that.absStartX = that.x;	// Needed by snap threshold
+		that.absStartY = that.y;
+
+		that.startX = that.x;
+		that.startY = that.y;
+		that.pointX = point.pageX;
+		that.pointY = point.pageY;
+
+		that.startTime = e.timeStamp || Date.now();
+
+		if (that.options.onScrollStart) that.options.onScrollStart.call(that, e);
+
+		that._bind(MOVE_EV);
+		that._bind(END_EV);
+		that._bind(CANCEL_EV);
+	},
+	
+	_move: function (e) {
+		var that = this,
+			point = hasTouch ? e.touches[0] : e,
+			deltaX = point.pageX - that.pointX,
+			deltaY = point.pageY - that.pointY,
+			newX = that.x + deltaX,
+			newY = that.y + deltaY,
+			c1, c2, scale,
+			timestamp = e.timeStamp || Date.now();
+
+		if (that.options.onBeforeScrollMove) that.options.onBeforeScrollMove.call(that, e);
+
+		// Zoom
+		if (that.options.zoom && hasTouch && e.touches.length > 1) {
+			c1 = m.abs(e.touches[0].pageX - e.touches[1].pageX);
+			c2 = m.abs(e.touches[0].pageY - e.touches[1].pageY);
+			that.touchesDist = m.sqrt(c1*c1+c2*c2);
+
+			that.zoomed = true;
+
+			scale = 1 / that.touchesDistStart * that.touchesDist * this.scale;
+
+			if (scale < that.options.zoomMin) scale = 0.5 * that.options.zoomMin * Math.pow(2.0, scale / that.options.zoomMin);
+			else if (scale > that.options.zoomMax) scale = 2.0 * that.options.zoomMax * Math.pow(0.5, that.options.zoomMax / scale);
+
+			that.lastScale = scale / this.scale;
+
+			newX = this.originX - this.originX * that.lastScale + this.x,
+			newY = this.originY - this.originY * that.lastScale + this.y;
+
+			this.scroller.style[vendor + 'Transform'] = trnOpen + newX + 'px,' + newY + 'px' + trnClose + ' scale(' + scale + ')';
+
+			if (that.options.onZoom) that.options.onZoom.call(that, e);
+			return;
+		}
+
+		that.pointX = point.pageX;
+		that.pointY = point.pageY;
+
+		// Slow down if outside of the boundaries
+		if (newX > 0 || newX < that.maxScrollX) {
+			newX = that.options.bounce ? that.x + (deltaX / 2) : newX >= 0 || that.maxScrollX >= 0 ? 0 : that.maxScrollX;
+		}
+		if (newY > that.minScrollY || newY < that.maxScrollY) { 
+			newY = that.options.bounce ? that.y + (deltaY / 2) : newY >= that.minScrollY || that.maxScrollY >= 0 ? that.minScrollY : that.maxScrollY;
+		}
+
+		that.distX += deltaX;
+		that.distY += deltaY;
+		that.absDistX = m.abs(that.distX);
+		that.absDistY = m.abs(that.distY);
+
+		if (that.absDistX < 6 && that.absDistY < 6) {
+			return;
+		}
+
+		// Lock direction
+		if (that.options.lockDirection) {
+			if (that.absDistX > that.absDistY + 5) {
+				newY = that.y;
+				deltaY = 0;
+			} else if (that.absDistY > that.absDistX + 5) {
+				newX = that.x;
+				deltaX = 0;
+			}
+		}
+
+		that.moved = true;
+		that._pos(newX, newY);
+		that.dirX = deltaX > 0 ? -1 : deltaX < 0 ? 1 : 0;
+		that.dirY = deltaY > 0 ? -1 : deltaY < 0 ? 1 : 0;
+
+		if (timestamp - that.startTime > 300) {
+			that.startTime = timestamp;
+			that.startX = that.x;
+			that.startY = that.y;
+		}
+		
+		if (that.options.onScrollMove) that.options.onScrollMove.call(that, e);
+	},
+	
+	_end: function (e) {
+		if (hasTouch && e.touches.length != 0) return;
+
+		var that = this,
+			point = hasTouch ? e.changedTouches[0] : e,
+			target, ev,
+			momentumX = { dist:0, time:0 },
+			momentumY = { dist:0, time:0 },
+			duration = (e.timeStamp || Date.now()) - that.startTime,
+			newPosX = that.x,
+			newPosY = that.y,
+			distX, distY,
+			newDuration,
+			snap,
+			scale;
+
+		that._unbind(MOVE_EV);
+		that._unbind(END_EV);
+		that._unbind(CANCEL_EV);
+
+		if (that.options.onBeforeScrollEnd) that.options.onBeforeScrollEnd.call(that, e);
+
+		if (that.zoomed) {
+			scale = that.scale * that.lastScale;
+			scale = Math.max(that.options.zoomMin, scale);
+			scale = Math.min(that.options.zoomMax, scale);
+			that.lastScale = scale / that.scale;
+			that.scale = scale;
+
+			that.x = that.originX - that.originX * that.lastScale + that.x;
+			that.y = that.originY - that.originY * that.lastScale + that.y;
+			
+			that.scroller.style[vendor + 'TransitionDuration'] = '200ms';
+			that.scroller.style[vendor + 'Transform'] = trnOpen + that.x + 'px,' + that.y + 'px' + trnClose + ' scale(' + that.scale + ')';
+			
+			that.zoomed = false;
+			that.refresh();
+
+			if (that.options.onZoomEnd) that.options.onZoomEnd.call(that, e);
+			return;
+		}
+
+		if (!that.moved) {
+			if (hasTouch) {
+				if (that.doubleTapTimer && that.options.zoom) {
+					// Double tapped
+					clearTimeout(that.doubleTapTimer);
+					that.doubleTapTimer = null;
+					if (that.options.onZoomStart) that.options.onZoomStart.call(that, e);
+					that.zoom(that.pointX, that.pointY, that.scale == 1 ? that.options.doubleTapZoom : 1);
+					if (that.options.onZoomEnd) {
+						setTimeout(function() {
+							that.options.onZoomEnd.call(that, e);
+						}, 200); // 200 is default zoom duration
+					}
+				} else {
+					that.doubleTapTimer = setTimeout(function () {
+						that.doubleTapTimer = null;
+
+						// Find the last touched element
+						target = point.target;
+						while (target.nodeType != 1) target = target.parentNode;
+
+						if (target.tagName != 'SELECT' && target.tagName != 'INPUT' && target.tagName != 'TEXTAREA') {
+							ev = document.createEvent('MouseEvents');
+							ev.initMouseEvent('click', true, true, e.view, 1,
+								point.screenX, point.screenY, point.clientX, point.clientY,
+								e.ctrlKey, e.altKey, e.shiftKey, e.metaKey,
+								0, null);
+							ev._fake = true;
+							target.dispatchEvent(ev);
+						}
+					}, that.options.zoom ? 250 : 0);
+				}
+			}
+
+			that._resetPos(200);
+
+			if (that.options.onTouchEnd) that.options.onTouchEnd.call(that, e);
+			return;
+		}
+
+		if (duration < 300 && that.options.momentum) {
+			momentumX = newPosX ? that._momentum(newPosX - that.startX, duration, -that.x, that.scrollerW - that.wrapperW + that.x, that.options.bounce ? that.wrapperW : 0) : momentumX;
+			momentumY = newPosY ? that._momentum(newPosY - that.startY, duration, -that.y, (that.maxScrollY < 0 ? that.scrollerH - that.wrapperH + that.y - that.minScrollY : 0), that.options.bounce ? that.wrapperH : 0) : momentumY;
+
+			newPosX = that.x + momentumX.dist;
+			newPosY = that.y + momentumY.dist;
+
+ 			if ((that.x > 0 && newPosX > 0) || (that.x < that.maxScrollX && newPosX < that.maxScrollX)) momentumX = { dist:0, time:0 };
+ 			if ((that.y > that.minScrollY && newPosY > that.minScrollY) || (that.y < that.maxScrollY && newPosY < that.maxScrollY)) momentumY = { dist:0, time:0 };
+		}
+
+		if (momentumX.dist || momentumY.dist) {
+			newDuration = m.max(m.max(momentumX.time, momentumY.time), 10);
+
+			// Do we need to snap?
+			if (that.options.snap) {
+				distX = newPosX - that.absStartX;
+				distY = newPosY - that.absStartY;
+				if (m.abs(distX) < that.options.snapThreshold && m.abs(distY) < that.options.snapThreshold) { that.scrollTo(that.absStartX, that.absStartY, 200); }
+				else {
+					snap = that._snap(newPosX, newPosY);
+					newPosX = snap.x;
+					newPosY = snap.y;
+					newDuration = m.max(snap.time, newDuration);
+				}
+			}
+
+			that.scrollTo(mround(newPosX), mround(newPosY), newDuration);
+
+			if (that.options.onTouchEnd) that.options.onTouchEnd.call(that, e);
+			return;
+		}
+
+		// Do we need to snap?
+		if (that.options.snap) {
+			distX = newPosX - that.absStartX;
+			distY = newPosY - that.absStartY;
+			if (m.abs(distX) < that.options.snapThreshold && m.abs(distY) < that.options.snapThreshold) that.scrollTo(that.absStartX, that.absStartY, 200);
+			else {
+				snap = that._snap(that.x, that.y);
+				if (snap.x != that.x || snap.y != that.y) that.scrollTo(snap.x, snap.y, snap.time);
+			}
+
+			if (that.options.onTouchEnd) that.options.onTouchEnd.call(that, e);
+			return;
+		}
+
+		that._resetPos(200);
+		if (that.options.onTouchEnd) that.options.onTouchEnd.call(that, e);
+	},
+	
+	_resetPos: function (time) {
+		var that = this,
+			resetX = that.x >= 0 ? 0 : that.x < that.maxScrollX ? that.maxScrollX : that.x,
+			resetY = that.y >= that.minScrollY || that.maxScrollY > 0 ? that.minScrollY : that.y < that.maxScrollY ? that.maxScrollY : that.y;
+
+		if (resetX == that.x && resetY == that.y) {
+			if (that.moved) {
+				that.moved = false;
+				if (that.options.onScrollEnd) that.options.onScrollEnd.call(that);		// Execute custom code on scroll end
+			}
+
+			if (that.hScrollbar && that.options.hideScrollbar) {
+				if (vendor == 'webkit') that.hScrollbarWrapper.style[vendor + 'TransitionDelay'] = '300ms';
+				that.hScrollbarWrapper.style.opacity = '0';
+			}
+			if (that.vScrollbar && that.options.hideScrollbar) {
+				if (vendor == 'webkit') that.vScrollbarWrapper.style[vendor + 'TransitionDelay'] = '300ms';
+				that.vScrollbarWrapper.style.opacity = '0';
+			}
+
+			return;
+		}
+
+		that.scrollTo(resetX, resetY, time || 0);
+	},
+
+	_wheel: function (e) {
+		var that = this,
+			wheelDeltaX, wheelDeltaY,
+			deltaX, deltaY,
+			deltaScale;
+
+		if ('wheelDeltaX' in e) {
+			wheelDeltaX = e.wheelDeltaX / 12;
+			wheelDeltaY = e.wheelDeltaY / 12;
+		} else if('wheelDelta' in e) {
+			wheelDeltaX = wheelDeltaY = e.wheelDelta / 12;
+		} else if ('detail' in e) {
+			wheelDeltaX = wheelDeltaY = -e.detail * 3;
+		} else {
+			return;
+		}
+		
+		if (that.options.wheelAction == 'zoom') {
+			deltaScale = that.scale * Math.pow(2, 1/3 * (wheelDeltaY ? wheelDeltaY / Math.abs(wheelDeltaY) : 0));
+			if (deltaScale < that.options.zoomMin) deltaScale = that.options.zoomMin;
+			if (deltaScale > that.options.zoomMax) deltaScale = that.options.zoomMax;
+			
+			if (deltaScale != that.scale) {
+				if (!that.wheelZoomCount && that.options.onZoomStart) that.options.onZoomStart.call(that, e);
+				that.wheelZoomCount++;
+				
+				that.zoom(e.pageX, e.pageY, deltaScale, 400);
+				
+				setTimeout(function() {
+					that.wheelZoomCount--;
+					if (!that.wheelZoomCount && that.options.onZoomEnd) that.options.onZoomEnd.call(that, e);
+				}, 400);
+			}
+			
+			return;
+		}
+		
+		deltaX = that.x + wheelDeltaX;
+		deltaY = that.y + wheelDeltaY;
+
+		if (deltaX > 0) deltaX = 0;
+		else if (deltaX < that.maxScrollX) deltaX = that.maxScrollX;
+
+		if (deltaY > that.minScrollY) deltaY = that.minScrollY;
+		else if (deltaY < that.maxScrollY) deltaY = that.maxScrollY;
+
+		that.scrollTo(deltaX, deltaY, 0);
+	},
+	
+	_mouseout: function (e) {
+		var t = e.relatedTarget;
+
+		if (!t) {
+			this._end(e);
+			return;
+		}
+
+		while (t = t.parentNode) if (t == this.wrapper) return;
+		
+		this._end(e);
+	},
+
+	_transitionEnd: function (e) {
+		var that = this;
+
+		if (e.target != that.scroller) return;
+
+		that._unbind('webkitTransitionEnd');
+		
+		that._startAni();
+	},
+
+
+	/**
+	 *
+	 * Utilities
+	 *
+	 */
+	_startAni: function () {
+		var that = this,
+			startX = that.x, startY = that.y,
+			startTime = Date.now(),
+			step, easeOut,
+			animate;
+
+		if (that.animating) return;
+		
+		if (!that.steps.length) {
+			that._resetPos(400);
+			return;
+		}
+		
+		step = that.steps.shift();
+		
+		if (step.x == startX && step.y == startY) step.time = 0;
+
+		that.animating = true;
+		that.moved = true;
+		
+		if (that.options.useTransition) {
+			that._transitionTime(step.time);
+			that._pos(step.x, step.y);
+			that.animating = false;
+			if (step.time) that._bind('webkitTransitionEnd');
+			else that._resetPos(0);
+			return;
+		}
+
+		animate = function () {
+			var now = Date.now(),
+				newX, newY;
+
+			if (now >= startTime + step.time) {
+				that._pos(step.x, step.y);
+				that.animating = false;
+				if (that.options.onAnimationEnd) that.options.onAnimationEnd.call(that);			// Execute custom code on animation end
+				that._startAni();
+				return;
+			}
+
+			now = (now - startTime) / step.time - 1;
+			easeOut = m.sqrt(1 - now * now);
+			newX = (step.x - startX) * easeOut + startX;
+			newY = (step.y - startY) * easeOut + startY;
+			that._pos(newX, newY);
+			if (that.animating) that.aniTime = nextFrame(animate);
+		};
+
+		animate();
+	},
+
+	_transitionTime: function (time) {
+		time += 'ms';
+		this.scroller.style[vendor + 'TransitionDuration'] = time;
+		if (this.hScrollbar) this.hScrollbarIndicator.style[vendor + 'TransitionDuration'] = time;
+		if (this.vScrollbar) this.vScrollbarIndicator.style[vendor + 'TransitionDuration'] = time;
+	},
+
+	_momentum: function (dist, time, maxDistUpper, maxDistLower, size) {
+		var deceleration = 0.0006,
+			speed = m.abs(dist) / time,
+			newDist = (speed * speed) / (2 * deceleration),
+			newTime = 0, outsideDist = 0;
+
+		// Proportinally reduce speed if we are outside of the boundaries 
+		if (dist > 0 && newDist > maxDistUpper) {
+			outsideDist = size / (6 / (newDist / speed * deceleration));
+			maxDistUpper = maxDistUpper + outsideDist;
+			speed = speed * maxDistUpper / newDist;
+			newDist = maxDistUpper;
+		} else if (dist < 0 && newDist > maxDistLower) {
+			outsideDist = size / (6 / (newDist / speed * deceleration));
+			maxDistLower = maxDistLower + outsideDist;
+			speed = speed * maxDistLower / newDist;
+			newDist = maxDistLower;
+		}
+
+		newDist = newDist * (dist < 0 ? -1 : 1);
+		newTime = speed / deceleration;
+
+		return { dist: newDist, time: mround(newTime) };
+	},
+
+	_offset: function (el) {
+		var left = -el.offsetLeft,
+			top = -el.offsetTop;
+			
+		while (el = el.offsetParent) {
+			left -= el.offsetLeft;
+			top -= el.offsetTop;
+		}
+		
+		if (el != this.wrapper) {
+			left *= this.scale;
+			top *= this.scale;
+		}
+
+		return { left: left, top: top };
+	},
+
+	_snap: function (x, y) {
+		var that = this,
+			i, l,
+			page, time,
+			sizeX, sizeY;
+
+		// Check page X
+		page = that.pagesX.length - 1;
+		for (i=0, l=that.pagesX.length; i<l; i++) {
+			if (x >= that.pagesX[i]) {
+				page = i;
+				break;
+			}
+		}
+		if (page == that.currPageX && page > 0 && that.dirX < 0) page--;
+		x = that.pagesX[page];
+		sizeX = m.abs(x - that.pagesX[that.currPageX]);
+		sizeX = sizeX ? m.abs(that.x - x) / sizeX * 500 : 0;
+		that.currPageX = page;
+
+		// Check page Y
+		page = that.pagesY.length-1;
+		for (i=0; i<page; i++) {
+			if (y >= that.pagesY[i]) {
+				page = i;
+				break;
+			}
+		}
+		if (page == that.currPageY && page > 0 && that.dirY < 0) page--;
+		y = that.pagesY[page];
+		sizeY = m.abs(y - that.pagesY[that.currPageY]);
+		sizeY = sizeY ? m.abs(that.y - y) / sizeY * 500 : 0;
+		that.currPageY = page;
+
+		// Snap with constant speed (proportional duration)
+		time = mround(m.max(sizeX, sizeY)) || 200;
+
+		return { x: x, y: y, time: time };
+	},
+
+	_bind: function (type, el, bubble) {
+		(el || this.scroller).addEventListener(type, this, !!bubble);
+	},
+
+	_unbind: function (type, el, bubble) {
+		(el || this.scroller).removeEventListener(type, this, !!bubble);
+	},
+
+
+	/**
+	 *
+	 * Public methods
+	 *
+	 */
+	destroy: function () {
+		var that = this;
+
+		that.scroller.style[vendor + 'Transform'] = '';
+
+		// Remove the scrollbars
+		that.hScrollbar = false;
+		that.vScrollbar = false;
+		that._scrollbar('h');
+		that._scrollbar('v');
+
+		// Remove the event listeners
+		that._unbind(RESIZE_EV, window);
+		that._unbind(START_EV);
+		that._unbind(MOVE_EV);
+		that._unbind(END_EV);
+		that._unbind(CANCEL_EV);
+		
+		if (!that.options.hasTouch) {
+			that._unbind('mouseout', that.wrapper);
+			that._unbind(WHEEL_EV);
+		}
+		
+		if (that.options.useTransition) that._unbind('webkitTransitionEnd');
+		
+		if (that.options.checkDOMChanges) clearInterval(that.checkDOMTime);
+		
+		if (that.options.onDestroy) that.options.onDestroy.call(that);
+	},
+
+	refresh: function () {
+		var that = this,
+			offset,
+			i, l,
+			els,
+			pos = 0,
+			page = 0;
+
+		if (that.scale < that.options.zoomMin) that.scale = that.options.zoomMin;
+		that.wrapperW = that.wrapper.clientWidth || 1;
+		that.wrapperH = that.wrapper.clientHeight || 1;
+
+		that.minScrollY = -that.options.topOffset || 0;
+		that.scrollerW = mround(that.scroller.offsetWidth * that.scale);
+		that.scrollerH = mround((that.scroller.offsetHeight + that.minScrollY) * that.scale);
+		that.maxScrollX = that.wrapperW - that.scrollerW;
+		that.maxScrollY = that.wrapperH - that.scrollerH + that.minScrollY;
+		that.dirX = 0;
+		that.dirY = 0;
+
+		if (that.options.onRefresh) that.options.onRefresh.call(that);
+
+		that.hScroll = that.options.hScroll && that.maxScrollX < 0;
+		that.vScroll = that.options.vScroll && (!that.options.bounceLock && !that.hScroll || that.scrollerH > that.wrapperH);
+
+		that.hScrollbar = that.hScroll && that.options.hScrollbar;
+		that.vScrollbar = that.vScroll && that.options.vScrollbar && that.scrollerH > that.wrapperH;
+
+		offset = that._offset(that.wrapper);
+		that.wrapperOffsetLeft = -offset.left;
+		that.wrapperOffsetTop = -offset.top;
+
+		// Prepare snap
+		if (typeof that.options.snap == 'string') {
+			that.pagesX = [];
+			that.pagesY = [];
+			els = that.scroller.querySelectorAll(that.options.snap);
+			for (i=0, l=els.length; i<l; i++) {
+				pos = that._offset(els[i]);
+				pos.left += that.wrapperOffsetLeft;
+				pos.top += that.wrapperOffsetTop;
+				that.pagesX[i] = pos.left < that.maxScrollX ? that.maxScrollX : pos.left * that.scale;
+				that.pagesY[i] = pos.top < that.maxScrollY ? that.maxScrollY : pos.top * that.scale;
+			}
+		} else if (that.options.snap) {
+			that.pagesX = [];
+			while (pos >= that.maxScrollX) {
+				that.pagesX[page] = pos;
+				pos = pos - that.wrapperW;
+				page++;
+			}
+			if (that.maxScrollX%that.wrapperW) that.pagesX[that.pagesX.length] = that.maxScrollX - that.pagesX[that.pagesX.length-1] + that.pagesX[that.pagesX.length-1];
+
+			pos = 0;
+			page = 0;
+			that.pagesY = [];
+			while (pos >= that.maxScrollY) {
+				that.pagesY[page] = pos;
+				pos = pos - that.wrapperH;
+				page++;
+			}
+			if (that.maxScrollY%that.wrapperH) that.pagesY[that.pagesY.length] = that.maxScrollY - that.pagesY[that.pagesY.length-1] + that.pagesY[that.pagesY.length-1];
+		}
+
+		// Prepare the scrollbars
+		that._scrollbar('h');
+		that._scrollbar('v');
+
+		if (!that.zoomed) {
+			that.scroller.style[vendor + 'TransitionDuration'] = '0';
+			that._resetPos(200);
+		}
+	},
+
+	scrollTo: function (x, y, time, relative) {
+		var that = this,
+			step = x,
+			i, l;
+
+		that.stop();
+
+		if (!step.length) step = [{ x: x, y: y, time: time, relative: relative }];
+		
+		for (i=0, l=step.length; i<l; i++) {
+			if (step[i].relative) { step[i].x = that.x - step[i].x; step[i].y = that.y - step[i].y; }
+			that.steps.push({ x: step[i].x, y: step[i].y, time: step[i].time || 0 });
+		}
+
+		that._startAni();
+	},
+
+	scrollToElement: function (el, time) {
+		var that = this, pos;
+		el = el.nodeType ? el : that.scroller.querySelector(el);
+		if (!el) return;
+
+		pos = that._offset(el);
+		pos.left += that.wrapperOffsetLeft;
+		pos.top += that.wrapperOffsetTop;
+
+		pos.left = pos.left > 0 ? 0 : pos.left < that.maxScrollX ? that.maxScrollX : pos.left;
+		pos.top = pos.top > that.minScrollY ? that.minScrollY : pos.top < that.maxScrollY ? that.maxScrollY : pos.top;
+		time = time === undefined ? m.max(m.abs(pos.left)*2, m.abs(pos.top)*2) : time;
+
+		that.scrollTo(pos.left, pos.top, time);
+	},
+
+	scrollToPage: function (pageX, pageY, time) {
+		var that = this, x, y;
+		
+		time = time === undefined ? 400 : time;
+
+		if (that.options.onScrollStart) that.options.onScrollStart.call(that);
+
+		if (that.options.snap) {
+			pageX = pageX == 'next' ? that.currPageX+1 : pageX == 'prev' ? that.currPageX-1 : pageX;
+			pageY = pageY == 'next' ? that.currPageY+1 : pageY == 'prev' ? that.currPageY-1 : pageY;
+
+			pageX = pageX < 0 ? 0 : pageX > that.pagesX.length-1 ? that.pagesX.length-1 : pageX;
+			pageY = pageY < 0 ? 0 : pageY > that.pagesY.length-1 ? that.pagesY.length-1 : pageY;
+
+			that.currPageX = pageX;
+			that.currPageY = pageY;
+			x = that.pagesX[pageX];
+			y = that.pagesY[pageY];
+		} else {
+			x = -that.wrapperW * pageX;
+			y = -that.wrapperH * pageY;
+			if (x < that.maxScrollX) x = that.maxScrollX;
+			if (y < that.maxScrollY) y = that.maxScrollY;
+		}
+
+		that.scrollTo(x, y, time);
+	},
+
+	disable: function () {
+		this.stop();
+		this._resetPos(0);
+		this.enabled = false;
+
+		// If disabled after touchstart we make sure that there are no left over events
+		this._unbind(MOVE_EV);
+		this._unbind(END_EV);
+		this._unbind(CANCEL_EV);
+	},
+	
+	enable: function () {
+		this.enabled = true;
+	},
+	
+	stop: function () {
+		if (this.options.useTransition) this._unbind('webkitTransitionEnd');
+		else cancelFrame(this.aniTime);
+		this.steps = [];
+		this.moved = false;
+		this.animating = false;
+	},
+	
+	zoom: function (x, y, scale, time) {
+		var that = this,
+			relScale = scale / that.scale;
+
+		if (!that.options.useTransform) return;
+
+		that.zoomed = true;
+		time = time === undefined ? 200 : time;
+		x = x - that.wrapperOffsetLeft - that.x;
+		y = y - that.wrapperOffsetTop - that.y;
+		that.x = x - x * relScale + that.x;
+		that.y = y - y * relScale + that.y;
+
+		that.scale = scale;
+		that.refresh();
+
+		that.x = that.x > 0 ? 0 : that.x < that.maxScrollX ? that.maxScrollX : that.x;
+		that.y = that.y > that.minScrollY ? that.minScrollY : that.y < that.maxScrollY ? that.maxScrollY : that.y;
+
+		that.scroller.style[vendor + 'TransitionDuration'] = time + 'ms';
+		that.scroller.style[vendor + 'Transform'] = trnOpen + that.x + 'px,' + that.y + 'px' + trnClose + ' scale(' + scale + ')';
+		that.zoomed = false;
+	},
+	
+	isReady: function () {
+		return !this.moved && !this.zoomed && !this.animating;
+	}
+};
+
+if (typeof exports !== 'undefined') exports.iScroll = iScroll;
+else window.iScroll = iScroll;
+
+})();
diff --git a/public/admin/js/osmplayer/src/osmplayer.js b/public/admin/js/osmplayer/src/osmplayer.js
new file mode 100644
index 0000000000000000000000000000000000000000..3097ab6e7833096f1632f011230991db6ebb019b
--- /dev/null
+++ b/public/admin/js/osmplayer/src/osmplayer.js
@@ -0,0 +1,268 @@
+// Add a way to instanciate using jQuery prototype.
+if (!jQuery.fn.osmplayer) {
+
+  /**
+   * @constructor
+   *
+   * Define a jQuery osmplayer prototype.
+   *
+   * @param {object} options The options for this jQuery prototype.
+   * @return {Array} jQuery object.
+   */
+  jQuery.fn.osmplayer = function(options) {
+    return jQuery(this).each(function() {
+      options = options || {};
+      options.id = options.id || jQuery(this).attr('id') || Math.random();
+      if (!minplayer.plugins[options.id]) {
+        options.template = options.template || 'default';
+        if (osmplayer[options.template]) {
+          new osmplayer[options.template](jQuery(this), options);
+        }
+        else {
+          new osmplayer(jQuery(this), options);
+        }
+      }
+    });
+  };
+}
+
+/**
+ * @constructor
+ * @extends minplayer
+ * @class The main osmplayer class.
+ *
+ * <p><strong>Usage:</strong>
+ * <pre><code>
+ *
+ *   // Create a media player.
+ *   var player = jQuery("#player").osmplayer({
+ *
+ *   });
+ *
+ * </code></pre>
+ * </p>
+ *
+ * @param {object} context The jQuery context.
+ * @param {object} options This components options.
+ */
+osmplayer = function(context, options) {
+
+  // Derive from minplayer
+  minplayer.call(this, context, options);
+};
+
+/** Derive from minplayer. */
+osmplayer.prototype = new minplayer();
+
+/** Reset the constructor. */
+osmplayer.prototype.constructor = osmplayer;
+
+/**
+ * Creates a new plugin within this context.
+ *
+ * @param {string} name The name of the plugin you wish to create.
+ * @param {object} base The base object for this plugin.
+ * @param {object} context The context which you would like to create.
+ * @return {object} The new plugin object.
+ */
+osmplayer.prototype.create = function(name, base, context) {
+  return minplayer.prototype.create.call(this, name, 'osmplayer', context);
+};
+
+/**
+ * @see minplayer.plugin.construct
+ */
+osmplayer.prototype.construct = function() {
+
+  // Make sure we provide default options...
+  this.options = jQuery.extend({
+    playlist: '',
+    node: {},
+    swfplayer: 'minplayer/flash/minplayer.swf',
+    logo: 'logo.png',
+    link: 'http://www.mediafront.org'
+  }, this.options);
+
+  // Call the minplayer display constructor.
+  minplayer.prototype.construct.call(this);
+
+  /** The play queue and index. */
+  this.playQueue = [];
+  this.playIndex = 0;
+
+  /** The playlist for this media player. */
+  this.create('playlist', 'osmplayer');
+
+  /** Get the playlist or any other playlist that connects. */
+  this.get('playlist', function(playlist) {
+    playlist.bind('nodeLoad', (function(player) {
+      return function(event, data) {
+        player.loadNode(data);
+      };
+    })(this));
+  });
+
+  // Play each media sequentially...
+  this.get('media', (function(player) {
+    return function(media) {
+      media.bind('ended', function() {
+        player.options.autoplay = true;
+        player.playNext();
+      });
+    };
+  })(this));
+
+  // Load the node if one is provided.
+  if (this.options.node) {
+    this.loadNode(this.options.node);
+  }
+};
+
+/**
+ * Gets the full screen element.
+ *
+ * @return {object} The element that will go into fullscreen.
+ */
+osmplayer.prototype.fullScreenElement = function() {
+  return this.elements.minplayer;
+};
+
+/**
+ * The load node function.
+ *
+ * @param {object} node A media node object.
+ */
+osmplayer.prototype.loadNode = function(node) {
+  if (node && node.mediafiles) {
+
+    // Load the media files.
+    var media = node.mediafiles.media;
+    if (media) {
+      this.playQueue.length = 0;
+      this.playQueue = [];
+      this.playIndex = 0;
+      var file = null;
+      var types = [];
+
+      // For mobile devices, we should only show the main media.
+      if (minplayer.isAndroid || minplayer.isIDevice) {
+        types = ['media'];
+      }
+      else {
+        types = ['intro', 'commercial', 'prereel', 'media', 'postreel'];
+      }
+
+      // Iterate through the types.
+      jQuery.each(types, (function(player) {
+        return function(key, type) {
+          if (file = player.addToQueue(media[type])) {
+            file.queueType = type;
+          }
+        };
+      })(this));
+    }
+
+    // Load the preview image.
+    osmplayer.getImage(node.mediafiles, 'preview', (function(player) {
+      return function(image) {
+        player.options.preview = image.path;
+        if (player.playLoader) {
+          player.playLoader.initialize();
+        }
+      };
+    })(this));
+
+    // Play the next media
+    this.playNext();
+  }
+};
+
+/**
+ * Adds a file to the play queue.
+ *
+ * @param {object} file The file to add to the queue.
+ * @return {object} The file that was added to the queue.
+ */
+osmplayer.prototype.addToQueue = function(file) {
+  if (file = minplayer.getMediaFile(file)) {
+    this.playQueue.push(file);
+  }
+  return file;
+};
+
+/**
+ * Plays the next media file in the queue.
+ */
+osmplayer.prototype.playNext = function() {
+  if (this.playQueue.length > this.playIndex) {
+    this.load(this.playQueue[this.playIndex]);
+    this.playIndex++;
+  }
+  else if (this.options.repeat) {
+    this.playIndex = 0;
+    this.playNext();
+  }
+  else if (this.playQueue.length > 0) {
+    // If there is no playlist, and no repeat, we will
+    // just seek to the beginning and pause.
+    this.options.autoplay = false;
+    this.playIndex = 0;
+    this.playNext();
+  }
+  else if (this.media) {
+    // Stop the player and unload.
+    this.media.stop();
+  }
+};
+
+/**
+ * Returns an image provided image array.
+ *
+ * @param {object} mediafiles The mediafiles to search within.
+ * @param {string} type The type of image to look for.
+ * @param {function} callback Called when the image is retrieved.
+ */
+osmplayer.getImage = function(mediafiles, type, callback) {
+
+  var image = '';
+  var images = mediafiles.image;
+  if (images) {
+
+    // If the image type exists, then just use that one...
+    if (images[type]) {
+      image = images[type];
+    }
+    // Or try the original image...
+    else if (images['image']) {
+      image = images['image'];
+    }
+    // Otherwise, just try ANY image...
+    else {
+
+      // Or, just pick the first one available.
+      for (type in images) {
+        if (images.hasOwnProperty(type)) {
+          image = images[type];
+          break;
+        }
+      }
+    }
+  }
+
+  // If the image exists, then callback with that image.
+  if (image) {
+    callback(new minplayer.file(image));
+  }
+  else {
+    // Get the image from the media player...
+    var mediaFile = minplayer.getMediaFile(mediafiles.media.media);
+    if (mediaFile) {
+      var player = minplayer.players[mediaFile.player];
+      if (player && (typeof player.getImage === 'function')) {
+        player.getImage(mediaFile, type, function(src) {
+          callback(new minplayer.file(src));
+        });
+      }
+    }
+  }
+};
diff --git a/public/admin/js/osmplayer/src/osmplayer.pager.js b/public/admin/js/osmplayer/src/osmplayer.pager.js
new file mode 100644
index 0000000000000000000000000000000000000000..f813a27219fd68791df94c0432beec11983f3d95
--- /dev/null
+++ b/public/admin/js/osmplayer/src/osmplayer.pager.js
@@ -0,0 +1,51 @@
+/** The osmplayer namespace. */
+var osmplayer = osmplayer || {};
+
+/**
+ * @constructor
+ * @extends minplayer.display
+ * @class This class provides pager functionality.
+ *
+ * @param {object} context The jQuery context.
+ * @param {object} options This components options.
+ */
+osmplayer.pager = function(context, options) {
+
+  // Derive from display
+  minplayer.display.call(this, 'pager', context, options);
+};
+
+/** Derive from minplayer.display. */
+osmplayer.pager.prototype = new minplayer.display();
+
+/** Reset the constructor. */
+osmplayer.pager.prototype.constructor = osmplayer.pager;
+
+/**
+ * @see minplayer.plugin#construct
+ */
+osmplayer.pager.prototype.construct = function() {
+
+  // Call the minplayer plugin constructor.
+  minplayer.display.prototype.construct.call(this);
+
+  // Setup the prev button.
+  if (this.elements.prevPage) {
+    this.prevPage = this.elements.prevPage.click((function(pager) {
+      return function(event) {
+        event.preventDefault();
+        pager.trigger('prevPage');
+      };
+    })(this));
+  }
+
+  // Setup the next button.
+  if (this.elements.nextPage) {
+    this.nextPage = this.elements.nextPage.click((function(pager) {
+      return function(event) {
+        event.preventDefault();
+        pager.trigger('nextPage');
+      };
+    })(this));
+  }
+};
diff --git a/public/admin/js/osmplayer/src/osmplayer.parser.asx.js b/public/admin/js/osmplayer/src/osmplayer.parser.asx.js
new file mode 100644
index 0000000000000000000000000000000000000000..62dbb40774ffa4174673a6484d7b94eb3b2122b8
--- /dev/null
+++ b/public/admin/js/osmplayer/src/osmplayer.parser.asx.js
@@ -0,0 +1,44 @@
+/** The osmplayer namespace. */
+var osmplayer = osmplayer || {};
+
+/** The parser object. */
+osmplayer.parser = osmplayer.parser || {};
+
+/**
+ * The asx parser object.
+ *
+ * @return {object} The asx parser.
+ **/
+osmplayer.parser.asx = {
+
+  // The priority for this parser.
+  priority: 8,
+
+  // Return if this is a valid youtube feed.
+  valid: function(feed) {
+    feed = feed.replace(/(.*)\??(.*)/i, '$1');
+    return feed.match(/\.asx$/i) !== null;
+  },
+
+  // Returns the type of request to make.
+  getType: function(feed) {
+    return 'xml';
+  },
+
+  // Returns the feed provided the start and numItems.
+  getFeed: function(feed, start, numItems) {
+    return feed;
+  },
+
+  // Parse the feed.
+  parse: function(data) {
+    var playlist = {
+      total_rows: 0,
+      nodes: []
+    };
+    jQuery('asx entry', data).each(function(index) {
+      osmplayer.parser.rss.addRSSItem(playlist, jQuery(this));
+    });
+    return playlist;
+  }
+};
diff --git a/public/admin/js/osmplayer/src/osmplayer.parser.default.js b/public/admin/js/osmplayer/src/osmplayer.parser.default.js
new file mode 100644
index 0000000000000000000000000000000000000000..1668951ed756ba1ec46f2966a72707eaee5c6db1
--- /dev/null
+++ b/public/admin/js/osmplayer/src/osmplayer.parser.default.js
@@ -0,0 +1,39 @@
+/** The osmplayer namespace. */
+var osmplayer = osmplayer || {};
+
+/** The parser object. */
+osmplayer.parser = osmplayer.parser || {};
+
+/**
+ * The default parser object.
+ *
+ * @return {object} The default parser.
+ **/
+osmplayer.parser['default'] = {
+
+  // The priority for this parser.
+  priority: 1,
+
+  // This parser is always valid.
+  valid: function(feed) {
+    return true;
+  },
+
+  // Returns the type of request to make.
+  getType: function(feed) {
+    return 'json';
+  },
+
+  // Returns the feed provided the start and numItems.
+  getFeed: function(feed, start, numItems) {
+    feed = feed.replace(/(.*)\??(.*)/i, '$1');
+    feed += '?start-index=' + start;
+    feed += '&max-results=' + numItems;
+    return feed;
+  },
+
+  // Parse the feed.
+  parse: function(data) {
+    return data;
+  }
+};
diff --git a/public/admin/js/osmplayer/src/osmplayer.parser.rss.js b/public/admin/js/osmplayer/src/osmplayer.parser.rss.js
new file mode 100644
index 0000000000000000000000000000000000000000..b47c3880a27f9470e3ceffbc9c11c634a7d3d2fb
--- /dev/null
+++ b/public/admin/js/osmplayer/src/osmplayer.parser.rss.js
@@ -0,0 +1,65 @@
+/** The osmplayer namespace. */
+var osmplayer = osmplayer || {};
+
+/** The parser object. */
+osmplayer.parser = osmplayer.parser || {};
+
+/**
+ * The rss parser object.
+ *
+ * @return {object} The rss parser.
+ **/
+osmplayer.parser.rss = {
+
+  // The priority for this parser.
+  priority: 8,
+
+  // Return if this is a valid youtube feed.
+  valid: function(feed) {
+    feed = feed.replace(/(.*)\??(.*)/i, '$1');
+    return feed.match(/\.rss$/i) !== null;
+  },
+
+  // Returns the type of request to make.
+  getType: function(feed) {
+    return 'xml';
+  },
+
+  // Returns the feed provided the start and numItems.
+  getFeed: function(feed, start, numItems) {
+    return feed;
+  },
+
+  // Parse the feed.
+  parse: function(data) {
+    var playlist = {
+      total_rows: 0,
+      nodes: []
+    };
+    jQuery('rss channel', data).find('item').each(function(index) {
+      osmplayer.parser.rss.addRSSItem(playlist, jQuery(this));
+    });
+    return playlist;
+  },
+
+  // Parse an RSS item.
+  addRSSItem: function(playlist, item) {
+    playlist.total_rows++;
+    playlist.nodes.push({
+      title: item.find('title').text(),
+      description: item.find('annotation').text(),
+      mediafiles: {
+        image: {
+          'image': {
+            path: item.find('image').text()
+          }
+        },
+        media: {
+          'media': {
+            path: item.find('location').text()
+          }
+        }
+      }
+    });
+  }
+};
diff --git a/public/admin/js/osmplayer/src/osmplayer.parser.xspf.js b/public/admin/js/osmplayer/src/osmplayer.parser.xspf.js
new file mode 100644
index 0000000000000000000000000000000000000000..9b86340d2b73ecc757347294e72e6acecc46ef64
--- /dev/null
+++ b/public/admin/js/osmplayer/src/osmplayer.parser.xspf.js
@@ -0,0 +1,44 @@
+/** The osmplayer namespace. */
+var osmplayer = osmplayer || {};
+
+/** The parser object. */
+osmplayer.parser = osmplayer.parser || {};
+
+/**
+ * The xsfp parser object.
+ *
+ * @return {object} The xsfp parser.
+ **/
+osmplayer.parser.xsfp = {
+
+  // The priority for this parser.
+  priority: 8,
+
+  // Return if this is a valid youtube feed.
+  valid: function(feed) {
+    feed = feed.replace(/(.*)\??(.*)/i, '$1');
+    return feed.match(/\.xml$/i) !== null;
+  },
+
+  // Returns the type of request to make.
+  getType: function(feed) {
+    return 'xml';
+  },
+
+  // Returns the feed provided the start and numItems.
+  getFeed: function(feed, start, numItems) {
+    return feed;
+  },
+
+  // Parse the feed.
+  parse: function(data) {
+    var playlist = {
+      total_rows: 0,
+      nodes: []
+    };
+    jQuery('playlist trackList track', data).each(function(index) {
+      osmplayer.parser.rss.addRSSItem(playlist, jQuery(this));
+    });
+    return playlist;
+  }
+};
diff --git a/public/admin/js/osmplayer/src/osmplayer.parser.youtube.js b/public/admin/js/osmplayer/src/osmplayer.parser.youtube.js
new file mode 100644
index 0000000000000000000000000000000000000000..62910a3f639e3b997c855ba5c88b1f5c16878f71
--- /dev/null
+++ b/public/admin/js/osmplayer/src/osmplayer.parser.youtube.js
@@ -0,0 +1,73 @@
+/** The osmplayer namespace. */
+var osmplayer = osmplayer || {};
+
+/** The parser object. */
+osmplayer.parser = osmplayer.parser || {};
+
+/**
+ * The youtube parser object.
+ *
+ * @return {object} The youtube parser.
+ **/
+osmplayer.parser.youtube = {
+
+  // The priority for this parser.
+  priority: 10,
+
+  // Return if this is a valid youtube feed.
+  valid: function(feed) {
+    return (feed.search(/^http(s)?\:\/\/gdata\.youtube\.com/i) === 0);
+  },
+
+  // Returns the type of request to make.
+  getType: function(feed) {
+    return 'jsonp';
+  },
+
+  // Returns the feed provided the start and numItems.
+  getFeed: function(feed, start, numItems) {
+    feed = feed.replace(/(.*)\??(.*)/i, '$1');
+    feed += '?start-index=' + (start + 1);
+    feed += '&max-results=' + (numItems);
+    feed += '&v=2&alt=jsonc';
+    return feed;
+  },
+
+  // Parse the feed.
+  parse: function(data) {
+    data = data.data;
+    var playlist = {
+      total_rows: data.totalItems,
+      nodes: []
+    };
+
+    // Iterate through the items and parse it.
+    for (var index in data.items) {
+      if (data.items.hasOwnProperty(index)) {
+        var item = data.items[index];
+        playlist.nodes.push({
+          title: item.title,
+          description: item.description,
+          mediafiles: {
+            image: {
+              'thumbnail': {
+                path: item.thumbnail.sqDefault
+              },
+              'image': {
+                path: item.thumbnail.hqDefault
+              }
+            },
+            media: {
+              'media': {
+                player: 'youtube',
+                id: item.id
+              }
+            }
+          }
+        });
+      }
+    }
+
+    return playlist;
+  }
+};
diff --git a/public/admin/js/osmplayer/src/osmplayer.playlist.js b/public/admin/js/osmplayer/src/osmplayer.playlist.js
new file mode 100644
index 0000000000000000000000000000000000000000..633eb13063647350f3d198da3eebce20d060d7aa
--- /dev/null
+++ b/public/admin/js/osmplayer/src/osmplayer.playlist.js
@@ -0,0 +1,550 @@
+/** The osmplayer namespace. */
+var osmplayer = osmplayer || {};
+
+/**
+ * @constructor
+ * @extends minplayer.display
+ * @class This class creates the playlist functionality for the minplayer.
+ *
+ * @param {object} context The jQuery context.
+ * @param {object} options This components options.
+ */
+osmplayer.playlist = function(context, options) {
+
+  // Derive from display
+  minplayer.display.call(this, 'playlist', context, options);
+};
+
+/** Derive from minplayer.display. */
+osmplayer.playlist.prototype = new minplayer.display();
+
+/** Reset the constructor. */
+osmplayer.playlist.prototype.constructor = osmplayer.playlist;
+
+/**
+ * @see minplayer.plugin#construct
+ */
+osmplayer.playlist.prototype.construct = function() {
+
+  // Make sure we provide default options...
+  this.options = jQuery.extend({
+    vertical: true,
+    playlist: '',
+    pageLimit: 10,
+    autoNext: true,
+    shuffle: false,
+    loop: false,
+    hysteresis: 40,
+    scrollSpeed: 20,
+    scrollMode: 'auto'
+  }, this.options);
+
+  // Call the minplayer plugin constructor.
+  minplayer.display.prototype.construct.call(this);
+
+  /** The nodes within this playlist. */
+  this.nodes = [];
+
+  // Current page.
+  this.page = -1;
+
+  // The total amount of nodes.
+  this.totalItems = 0;
+
+  // The current loaded item index.
+  this.currentItem = -1;
+
+  // The play playqueue.
+  this.playqueue = [];
+
+  // The playqueue position.
+  this.playqueuepos = 0;
+
+  // The current playlist.
+  this.playlist = this.options.playlist;
+
+  // Create the scroll bar.
+  this.scroll = null;
+
+  // Create our orientation variable.
+  this.orient = {
+    pos: this.options.vertical ? 'y' : 'x',
+    pagePos: this.options.vertical ? 'pageY' : 'pageX',
+    offset: this.options.vertical ? 'top' : 'left',
+    wrapperSize: this.options.vertical ? 'wrapperH' : 'wrapperW',
+    minScroll: this.options.vertical ? 'minScrollY' : 'minScrollX',
+    maxScroll: this.options.vertical ? 'maxScrollY' : 'maxScrollX',
+    size: this.options.vertical ? 'height' : 'width'
+  };
+
+  // Create the pager.
+  this.pager = this.create('pager', 'osmplayer');
+  this.pager.bind('nextPage', (function(playlist) {
+    return function(event) {
+      playlist.nextPage();
+    };
+  })(this));
+  this.pager.bind('prevPage', (function(playlist) {
+    return function(event) {
+      playlist.prevPage();
+    };
+  })(this));
+
+  // Load the "next" item.
+  if (this.next()) {
+
+    // Get the media.
+    if (this.options.autoNext) {
+      this.get('media', function(media) {
+        media.bind('ended', (function(playlist) {
+          return function(event) {
+            media.options.autoplay = true;
+            playlist.next();
+          };
+        })(this));
+      });
+    }
+  }
+
+  // Say that we are ready.
+  this.ready();
+};
+
+/**
+ * Wrapper around the scroll scrollTo method.
+ *
+ * @param {number} pos The position you would like to set the list.
+ * @param {boolean} relative If this is a relative position change.
+ */
+osmplayer.playlist.prototype.scrollTo = function(pos, relative) {
+  if (this.scroll) {
+    this.scroll.options.hideScrollbar = false;
+    if (this.options.vertical) {
+      this.scroll.scrollTo(0, pos, 0, relative);
+    }
+    else {
+      this.scroll.scrollTo(pos, 0, 0, relative);
+    }
+    this.scroll.options.hideScrollbar = true;
+  }
+};
+
+/**
+ * Refresh the scrollbar.
+ */
+osmplayer.playlist.prototype.refreshScroll = function() {
+
+  // Make sure that our window has the addEventListener to keep IE happy.
+  if (!window.addEventListener) {
+    setTimeout((function(playlist) {
+      return function() {
+        playlist.refreshScroll.call(playlist);
+      }
+    })(this), 200);
+    return;
+  }
+
+  // Check the size of the playlist.
+  var list = this.elements.list;
+  var scroll = this.elements.scroll;
+
+  // Check to see if we should add a scroll bar functionality.
+  if ((!this.scroll) &&
+      (list.length > 0) &&
+      (scroll.length > 0) &&
+      (list[this.orient.size]() > scroll[this.orient.size]())) {
+
+    // Setup the iScroll component.
+    this.scroll = new iScroll(this.elements.scroll.eq(0)[0], {
+      hScroll: !this.options.vertical,
+      hScrollbar: !this.options.vertical,
+      vScroll: this.options.vertical,
+      vScrollbar: this.options.vertical,
+      hideScrollbar: true
+    });
+
+    // Use autoScroll for non-touch devices.
+    if ((this.options.scrollMode == 'auto') && !minplayer.hasTouch) {
+
+      // Bind to the mouse events for autoscrolling.
+      this.elements.list.bind('mousemove', (function(playlist) {
+        return function(event) {
+          event.preventDefault();
+          var offset = playlist.display.offset()[playlist.orient.offset];
+          playlist.mousePos = event[playlist.orient.pagePos];
+          playlist.mousePos -= offset;
+        };
+      })(this)).bind('mouseenter', (function(playlist) {
+        return function(event) {
+          event.preventDefault();
+          playlist.scrolling = true;
+          var setScroll = function() {
+            if (playlist.scrolling) {
+              var scrollSize = playlist.scroll[playlist.orient.wrapperSize];
+              var scrollMid = (scrollSize / 2);
+              var delta = playlist.mousePos - scrollMid;
+              if (Math.abs(delta) > playlist.options.hysteresis) {
+                var hyst = playlist.options.hysteresis;
+                hyst *= (delta > 0) ? -1 : 0;
+                delta = (playlist.options.scrollSpeed * (delta + hyst));
+                delta /= scrollMid;
+                var pos = playlist.scroll[playlist.orient.pos] - delta;
+                var min = playlist.scroll[playlist.orient.minScroll] || 0;
+                var max = playlist.scroll[playlist.orient.maxScroll];
+                if (pos >= min) {
+                  playlist.scrollTo(min);
+                }
+                else if (pos <= max) {
+                  playlist.scrollTo(max);
+                }
+                else {
+                  playlist.scrollTo(delta, true);
+                }
+              }
+
+              // Set timeout to try again.
+              setTimeout(setScroll, 30);
+            }
+          };
+          setScroll();
+        };
+      })(this)).bind('mouseleave', (function(playlist) {
+        return function(event) {
+          event.preventDefault();
+          playlist.scrolling = false;
+        };
+      })(this));
+    }
+
+    // Need to force the width of the list.
+    if (!this.options.vertical) {
+      var listSize = 0;
+      jQuery.each(this.elements.list.children(), function() {
+        listSize += jQuery(this).outerWidth();
+      });
+      this.elements.list.width(listSize);
+    }
+
+    this.scroll.refresh();
+    this.scroll.scrollTo(0, 0, 200);
+  }
+  else if (this.scroll) {
+
+    // Disable the scroll bar.
+    this.scroll.disable();
+    this.elements.list
+      .unbind('mousemove')
+      .unbind('mouseenter')
+      .unbind('mouseleave');
+  }
+};
+
+/**
+ * Sets the playlist.
+ *
+ * @param {object} playlist The playlist object.
+ * @param {integer} loadIndex The index of the item to load.
+ */
+osmplayer.playlist.prototype.set = function(playlist, loadIndex) {
+
+  // Check to make sure the playlist is an object.
+  if (typeof playlist !== 'object') {
+    this.trigger('error', 'Playlist must be an object to set');
+    return;
+  }
+
+  // Check to make sure the playlist has correct format.
+  if (!playlist.hasOwnProperty('total_rows')) {
+    this.trigger('error', 'Unknown playlist format.');
+    return;
+  }
+
+  // Make sure the playlist has some rows.
+  if (playlist.total_rows && playlist.nodes.length) {
+
+    // Set the total rows.
+    this.totalItems = playlist.total_rows;
+    this.currentItem = 0;
+
+    // Show or hide the next page if there is or is not a next page.
+    if (((this.page + 1) * this.options.pageLimit) >= this.totalItems) {
+      this.pager.nextPage.hide();
+    }
+    else {
+      this.pager.nextPage.show();
+    }
+
+    var teaser = null;
+    var numNodes = playlist.nodes.length;
+    this.elements.list.empty();
+    this.nodes = [];
+
+    // Iterate through all the nodes.
+    for (var index = 0; index < numNodes; index++) {
+
+      // Create the teaser object.
+      teaser = this.create('teaser', 'osmplayer', this.elements.list);
+      teaser.setNode(playlist.nodes[index]);
+      teaser.bind('nodeLoad', (function(playlist, index) {
+        return function(event, data) {
+          playlist.loadItem(index);
+        };
+      })(this, index));
+
+      // Add this to our nodes array.
+      this.nodes.push(teaser);
+
+      // If the index is equal to the loadIndex.
+      if (loadIndex === index) {
+        this.loadItem(index);
+      }
+    }
+
+    // Refresh the sizes.
+    this.refreshScroll();
+
+    // Trigger that the playlist has loaded.
+    this.trigger('playlistLoad', playlist);
+  }
+
+  // Show that we are no longer busy.
+  if (this.elements.playlist_busy) {
+    this.elements.playlist_busy.hide();
+  }
+};
+
+/**
+ * Stores the current playlist state in the playqueue.
+ */
+osmplayer.playlist.prototype.setQueue = function() {
+
+  // Add this item to the playqueue.
+  this.playqueue.push({
+    page: this.page,
+    item: this.currentItem
+  });
+
+  // Store the current playqueue position.
+  this.playqueuepos = this.playqueue.length;
+};
+
+/**
+ * Loads the next item.
+ *
+ * @return {boolean} TRUE if loaded, FALSE if not.
+ */
+osmplayer.playlist.prototype.next = function() {
+  var item = 0, page = this.page;
+
+  // See if we are at the front of the playqueue.
+  if (this.playqueuepos >= this.playqueue.length) {
+
+    // If this is shuffle, then load a random item.
+    if (this.options.shuffle) {
+      item = Math.floor(Math.random() * this.totalItems);
+      page = Math.floor(item / this.options.pageLimit);
+      item = item % this.options.pageLimit;
+      return this.load(page, item);
+    }
+    else {
+
+      // Otherwise, increment the current item by one.
+      item = (this.currentItem + 1);
+      if (item >= this.nodes.length) {
+        return this.load(page + 1, 0);
+      }
+      else {
+        return this.loadItem(item);
+      }
+    }
+  }
+  else {
+
+    // Load the next item in the playqueue.
+    this.playqueuepos = this.playqueuepos + 1;
+    var currentQueue = this.playqueue[this.playqueuepos];
+    return this.load(currentQueue.page, currentQueue.item);
+  }
+};
+
+/**
+ * Loads the previous item.
+ *
+ * @return {boolean} TRUE if loaded, FALSE if not.
+ */
+osmplayer.playlist.prototype.prev = function() {
+
+  // Move back into the playqueue.
+  this.playqueuepos = this.playqueuepos - 1;
+  this.playqueuepos = (this.playqueuepos < 0) ? 0 : this.playqueuepos;
+  var currentQueue = this.playqueue[this.playqueuepos];
+  if (currentQueue) {
+    return this.load(currentQueue.page, currentQueue.item);
+  }
+  return false;
+};
+
+/**
+ * Loads a playlist node.
+ *
+ * @param {number} index The index of the item you would like to load.
+ * @return {boolean} TRUE if loaded, FALSE if not.
+ */
+osmplayer.playlist.prototype.loadItem = function(index) {
+  if (index < this.nodes.length) {
+    this.setQueue();
+
+    // Get the teaser at the current index and deselect it.
+    var teaser = this.nodes[this.currentItem];
+    teaser.select(false);
+    this.currentItem = index;
+
+    // Get the new teaser and select it.
+    teaser = this.nodes[index];
+    teaser.select(true);
+    this.trigger('nodeLoad', teaser.node);
+    return true;
+  }
+
+  return false;
+};
+
+/**
+ * Loads the next page.
+ *
+ * @param {integer} loadIndex The index of the item to load.
+ * @return {boolean} TRUE if loaded, FALSE if not.
+ */
+osmplayer.playlist.prototype.nextPage = function(loadIndex) {
+  return this.load(this.page + 1, loadIndex);
+};
+
+/**
+ * Loads the previous page.
+ *
+ * @param {integer} loadIndex The index of the item to load.
+ * @return {boolean} TRUE if loaded, FALSE if not.
+ */
+osmplayer.playlist.prototype.prevPage = function(loadIndex) {
+  return this.load(this.page - 1, loadIndex);
+};
+
+/**
+ * Loads a playlist.
+ *
+ * @param {integer} page The page to load.
+ * @param {integer} loadIndex The index of the item to load.
+ * @return {boolean} TRUE if loaded, FALSE if not.
+ */
+osmplayer.playlist.prototype.load = function(page, loadIndex) {
+
+  // If the playlist and pages are the same, then no need to load.
+  if ((this.playlist == this.options.playlist) && (page == this.page)) {
+    return this.loadItem(loadIndex);
+  }
+
+  // Set the new playlist.
+  this.playlist = this.options.playlist;
+
+  // Return if there aren't any playlists to play.
+  if (!this.playlist) {
+    return false;
+  }
+
+  // Determine if we need to loop.
+  var maxPages = Math.floor(this.totalItems / this.options.pageLimit);
+  if (page > maxPages) {
+    if (this.options.loop) {
+      page = 0;
+      loadIndex = 0;
+    }
+    else {
+      return false;
+    }
+  }
+
+  // Say that we are busy.
+  if (this.elements.playlist_busy) {
+    this.elements.playlist_busy.show();
+  }
+
+  // Normalize the page.
+  page = page || 0;
+  page = (page < 0) ? 0 : page;
+
+  // Set the queue.
+  this.setQueue();
+
+  // Set the new page.
+  this.page = page;
+
+  // Hide or show the page based on if we are on the first page.
+  if (this.page == 0) {
+    this.pager.prevPage.hide();
+  }
+  else {
+    this.pager.prevPage.show();
+  }
+
+  // If the playlist is an object, then go ahead and set it.
+  if (typeof this.playlist == 'object') {
+    this.set(this.playlist, loadIndex);
+    if (this.playlist.endpoint) {
+      this.playlist = this.options.playlist = this.playlist.endpoint;
+    }
+    return true;
+  }
+
+  // Get the highest priority parser.
+  var parser = osmplayer.parser['default'];
+  for (var name in osmplayer.parser) {
+    if (osmplayer.parser.hasOwnProperty(name)) {
+      if (osmplayer.parser[name].valid(this.playlist)) {
+        if (osmplayer.parser[name].priority > parser.priority) {
+          parser = osmplayer.parser[name];
+        }
+      }
+    }
+  }
+
+  // The start index.
+  var start = this.page * this.options.pageLimit;
+
+  // Get the feed from the parser.
+  var feed = parser.getFeed(
+    this.playlist,
+    start,
+    this.options.pageLimit
+  );
+
+  // Build our request.
+  var request = {
+    type: 'GET',
+    url: feed,
+    success: (function(playlist) {
+      return function(data) {
+        playlist.set(parser.parse(data), loadIndex);
+      };
+    })(this),
+    error: (function(playlist) {
+      return function(XMLHttpRequest, textStatus, errorThrown) {
+        if (playlist.elements.playlist_busy) {
+          playlist.elements.playlist_busy.hide();
+        }
+        playlist.trigger('error', textStatus);
+      }
+    })(this)
+  };
+
+  // Set the data if applicable.
+  var dataType = '';
+  if (dataType = parser.getType()) {
+    request.dataType = dataType;
+  }
+
+  // Perform an ajax callback.
+  jQuery.ajax(request);
+
+  // Return that we did something.
+  return true;
+};
diff --git a/public/admin/js/osmplayer/src/osmplayer.teaser.js b/public/admin/js/osmplayer/src/osmplayer.teaser.js
new file mode 100644
index 0000000000000000000000000000000000000000..3d8eb1377df6d1dcab6fa87f4048dcfb50e5bbae
--- /dev/null
+++ b/public/admin/js/osmplayer/src/osmplayer.teaser.js
@@ -0,0 +1,68 @@
+/** The osmplayer namespace. */
+var osmplayer = osmplayer || {};
+
+/**
+ * @constructor
+ * @extends minplayer.display
+ * @class This class provides teaser functionality.
+ *
+ * @param {object} context The jQuery context.
+ * @param {object} options This components options.
+ */
+osmplayer.teaser = function(context, options) {
+
+  /** The preview image. */
+  this.preview = null;
+
+  // Derive from display
+  minplayer.display.call(this, 'teaser', context, options);
+};
+
+/** Derive from minplayer.display. */
+osmplayer.teaser.prototype = new minplayer.display();
+
+/** Reset the constructor. */
+osmplayer.teaser.prototype.constructor = osmplayer.teaser;
+
+/**
+ * Selects the teaser.
+ *
+ * @param {boolean} selected TRUE if selected, FALSE otherwise.
+ */
+osmplayer.teaser.prototype.select = function(selected) {
+};
+
+/**
+ * Sets the node.
+ *
+ * @param {object} node The node object to set.
+ */
+osmplayer.teaser.prototype.setNode = function(node) {
+
+  // Add this to the node info for this teaser.
+  this.node = node;
+
+  // Set the title of the teaser.
+  if (this.elements.title) {
+    this.elements.title.text(node.title);
+  }
+
+  // Load the thumbnail image if it exists.
+  if (node.mediafiles && node.mediafiles.image) {
+    var image = osmplayer.getImage(node.mediafiles, 'thumbnail');
+    if (image) {
+      if (this.elements.image) {
+        this.preview = new minplayer.image(this.elements.image);
+        this.preview.load(image);
+      }
+    }
+  }
+
+  // Bind when they click on this teaser.
+  this.display.unbind('click').click((function(teaser) {
+    return function(event) {
+      event.preventDefault();
+      teaser.trigger('nodeLoad', teaser.node);
+    };
+  })(this));
+};
diff --git a/public/admin/js/osmplayer/templates/default/css/images/loader.gif b/public/admin/js/osmplayer/templates/default/css/images/loader.gif
new file mode 100644
index 0000000000000000000000000000000000000000..5e2d16730415c52b18d085af4b497b6f9d009666
Binary files /dev/null and b/public/admin/js/osmplayer/templates/default/css/images/loader.gif differ
diff --git a/public/admin/js/osmplayer/templates/default/css/osmplayer_default.css b/public/admin/js/osmplayer/templates/default/css/osmplayer_default.css
new file mode 100644
index 0000000000000000000000000000000000000000..e669e7e895c1b263ac26b17b529de927ff609d14
--- /dev/null
+++ b/public/admin/js/osmplayer/templates/default/css/osmplayer_default.css
@@ -0,0 +1,691 @@
+/* base styles */
+.minplayer-default {
+  position: relative;
+  font-family:"Trebuchet MS", Helvetica, sans-serif;
+  -moz-box-shadow:0px 5px 10px #333;/*no-important moz*/
+  -webkit-box-shadow:0px 5px 10px #333;/*no-important chrome*/
+}
+
+.player-ui .minplayer-default-error {
+  display:none;
+  color: #eee;
+  position: absolute;
+  top: 80%;
+  left: 50%;
+  width: 320px;
+  height: 40px;
+  line-height: 40px;
+  margin: -20px 0 0 -160px;
+  text-align: center;
+  vertical-align: center;
+  border: none;
+  z-index: 200;
+  opacity: 0.9;
+  border-radius: 10px;
+  -webkit-border-radius: 10px;
+  -moz-border-radius: 10px;
+  background: rgba(23, 35, 34, 0.9);
+  box-shadow: 2px 2px 4px #000;
+  -webkit-box-shadow: 2px 2px 4px #000;
+  -moz-box-shadow: 2px 2px 4px #000;
+}
+
+.player-ui.controller-only .minplayer-default-error {
+  display:none !important;
+}
+
+.player-ui .minplayer-default-display {
+  width:100%;
+  height:100%;
+}
+
+.player-ui .minplayer-default-display video {
+  width: 100%;
+  height: 100%;
+}
+
+.player-ui .minplayer-default-preview {
+  width:100%;
+  height:100%;
+  position:absolute;
+  z-index:1;
+}
+
+.player-ui .minplayer-default-loader-wrapper {
+  width:100%;
+  height:100%;
+  position:absolute;
+  z-index:2;
+  background: rgb(0, 0, 0);
+  background: rgba(0, 0, 0, 0.3);
+  filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#55000000, endColorstr=#55000000);
+  -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#55000000, endColorstr=#55000000)";
+}
+
+.player-ui.controller-only .minplayer-default-loader-wrapper {
+  display:none !important;
+}
+
+.player-ui .minplayer-default-loader {
+  width:42px;
+  height:10px;
+  position: absolute;
+  z-index: 4;
+  top: 50%;
+  left: 50%;
+  margin: -5px 0 0 -21px;
+  text-align:center;
+  vertical-align:center;
+  background: url(images/loader.gif) no-repeat;
+}
+
+/* Big play button */
+.player-ui .minplayer-default-big-play {
+  position: absolute;
+  top: 50%;
+  left: 50%;
+  width: 80px;
+  height: 80px;
+  margin: -40px 0 0 -40px;
+  text-align: center;
+  vertical-align: center;
+  cursor: pointer !important;
+  border: none;
+  opacity: 0.9;
+  z-index:3;
+  border-radius: 10px;
+  -webkit-border-radius: 10px;
+  -moz-border-radius: 10px;
+  background: rgba(23, 35, 34, 0.746094);
+  box-shadow: 2px 2px 4px #000;
+  -webkit-box-shadow: 2px 2px 4px #000;
+  -moz-box-shadow: 2px 2px 4px #000;
+}
+
+.player-ui .minplayer-default-big-play span {
+  display: block;
+  font-size: 0;
+  line-height: 0;
+  width: 0;
+  height: 0;
+  margin: 20px 0 0 23px;
+  border-left: 40px solid white;
+  border-top: 20px solid transparent;
+  border-bottom: 20px solid transparent;
+}
+
+.player-ui .minplayer-default.fullscreen, .player-ui .minplayer-default.fullscreen .minplayer-default-display, .player-ui .minplayer-default.fullscreen .minplayer-default-loader-wrapper {
+  position: fixed;
+  left: 0;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  overflow: hidden;
+  z-index:1000;
+  width: 100% !important;
+  height: 100% !important;
+}
+
+.player-ui .minplayer-default.fullscreen .minplayer-default-play-loader {
+  z-index:1001;
+}
+
+.player-ui.controller-only .minplayer-default-play-loader {
+  display:none !important;
+}
+
+.player-ui .minplayer-default-controls {
+  position: absolute;
+  display: block;
+  z-index:3;
+  bottom:0px;
+  left:0px;
+  right:0px;
+  height:30px;
+}
+
+.player-ui.controller-only {
+  height: 32px !important;
+}
+
+.player-ui .minplayer-default-controls-left {
+  float:left;
+  width:29px;
+  margin: 3px;
+  border-right:1px solid #888;
+}
+
+.player-ui .minplayer-default.fullscreen .minplayer-default-controls-left {
+  width:40px;
+  border:none;
+}
+
+.player-ui .minplayer-default-controls-right {
+  float:right;
+  width:120px;
+  margin: 3px;
+}
+
+.player-ui .minplayer-controls-volume-horizontal .minplayer-default-controls-right {
+  width: 200px;
+}
+
+.player-ui .minplayer-default.fullscreen .minplayer-default-controls-right {
+  width:110px;
+}
+
+.player-ui .minplayer-default-controls-mid {
+  position:absolute;
+  left:40px;
+  right:130px;
+  height:30px;
+  margin: 3px;
+}
+
+.player-ui .minplayer-controls-volume-horizontal .minplayer-default-controls-mid {
+  right: 210px;
+}
+
+.player-ui .minplayer-default.fullscreen .minplayer-default-controls-mid {
+  left:50px;
+}
+
+.player-ui .minplayer-default-play, .minplayer-default-volume, .player-ui .minplayer-default-timer, .player-ui .minplayer-default-mute, .player-ui .minplayer-default-unmute {
+  float: left;
+}
+
+.player-ui .minplayer-default-play, .minplayer-default-fullscreen, .minplayer-default-mute, .minplayer-default-unmute {
+  cursor: pointer;
+}
+
+.player-ui .minplayer-default-timer {
+  cursor: default;
+}
+
+/* play, pause */
+.player-ui .minplayer-default-button {
+  display: block;
+  width: 24px;
+  height: 24px;
+  opacity: 0.7;
+  -moz-transition: all 0.2s ease-in-out; /* Firefox */
+  -webkit-transition: all 0.2s ease-in-out; /* Safari and Chrome */
+  -o-transition: all 0.2s ease-in-out;  /* Opera */
+  transition: all 0.2s ease-in-out;
+}
+
+.player-ui .minplayer-default-button:hover {
+  opacity: 1;
+}
+
+.player-ui .minplayer-default-button span {
+  margin: 4px 0 0 4px;
+  margin-top: 3px\9;
+}
+
+.player-ui .minplayer-default-button span.ui-icon-pause {
+  margin-left: 3px;
+}
+
+.player-ui .minplayer-default-pause {
+  display:none;
+}
+
+/* seek */
+.player-ui .minplayer-default-seek {
+  position:relative;
+  height: 10px;
+  margin-top: 7px;
+  -moz-border-radius:4px;
+  -webkit-border-radius:4px;
+  border-radius:4px;
+  background: #535353;
+  background-image: -moz-linear-gradient(top, #535353, #333333);
+  background-image: -webkit-gradient(linear,left top,left bottom,color-stop(0, #535353),color-stop(1, #333333));
+  box-shadow: inset 0 -3px 3px #333333;
+}
+
+.player-ui .minplayer-default-seek .ui-slider-handle {
+  position: absolute;
+  width: 16px;
+  height: 16px;
+  border: 1px solid #333;
+  z-index:20;
+  -moz-border-radius:10px;
+  -webkit-border-radius:10px;
+  border-radius:10px;
+  background: #e6e6e6;
+  background-image: -moz-linear-gradient(top, #e6e6e6, #d5d5d5);
+  background-image: -webkit-gradient(linear,left top,left bottom,color-stop(0, #e6e6e6),color-stop(1, #d5d5d5));
+  box-shadow: inset 0 -3px 3px #d5d5d5;
+}
+
+.player-ui .minplayer-default-seek .ui-slider-handle.ui-state-hover {
+  background: #fff;
+}
+
+.player-ui .minplayer-default-seek .ui-slider-range {
+  position: absolute;
+  height: 10px;
+  -moz-border-radius:15px;
+  -webkit-border-radius:15px;
+  z-index:10px;
+  border-radius:15px;
+}
+
+.player-ui .minplayer-default-progress {
+  position: absolute;
+  width:0px;
+  height:10px;
+  -moz-border-radius:15px;
+  -webkit-border-radius:15px;
+  z-index:8px;
+  border-radius:15px;
+  border: 0 !important;
+}
+
+/* timer */
+.player-ui .minplayer-default-timer {
+  position:relative;
+  height: 22px;
+  float:left;
+  padding-right:6px;
+  font-size: 16px;
+  font-weight: bold;
+  border-right:1px solid #888;
+}
+
+.player-ui .minplayer-default.fullscreen .minplayer-default-timer {
+  border:none;
+}
+
+/* volume */
+.player-ui .minplayer-default-volume {
+  height: 26px;
+  -moz-transition: all 0.1s ease-in-out; /* Firefox */
+  -webkit-transition: all 0.1s ease-in-out; /* Safari and Chrome */
+  -o-transition: all 0.2s ease-in-out;  /* Opera */
+  transition: all 0.1s ease-in-out;
+}
+
+.player-ui .minplayer-controls-volume-vertical .minplayer-default-volume {
+  position: absolute;
+  right:38px;
+  bottom:1px;
+  overflow: hidden;
+  width: 26px;
+}
+
+.player-ui .minplayer-controls-volume-horizontal .minplayer-default-volume {
+  position: relative;
+  width: 126px;
+  margin-left: 5px;
+}
+
+.player-ui .minplayer-default.fullscreen .minplayer-default-volume {
+  right:44px;
+  bottom:12px;
+}
+
+.player-ui .minplayer-controls-volume-vertical .minplayer-default-volume:hover {
+  height: 133px;
+  height: 130px\9;
+}
+
+
+.player-ui .minplayer-controls-volume-vertical .minplayer-default-volume:hover .minplayer-default-volume-slider {
+  position: relative;
+  display: block;
+  visibility: visible;
+  opacity: 1;
+}
+
+.player-ui .minplayer-default-volume-slider {
+  position: relative;
+  border: 1px solid #444;
+  -moz-border-radius:15px;
+  -webkit-border-radius:15px;
+  border-radius:15px;
+  -moz-transition: all 0.1s ease-in-out; /* Firefox */
+  -webkit-transition: all 0.1s ease-in-out; /* Safari and Chrome */
+  -o-transition: all 0.1s ease-in-out;  /* Opera */
+  transition: all 0.1s ease-in-out;
+}
+
+.player-ui .minplayer-controls-volume-vertical .minplayer-default-volume-slider {
+  height: 100px;
+  width: 7px;
+  left: 8px;
+  visiblity: hidden;
+  display: none;
+  opacity: 0;
+}
+
+.player-ui .minplayer-controls-volume-horizontal .minplayer-default-volume-slider {
+  height: 7px;
+  width: 78px;
+  top: 8px;
+  left: 34px;
+}
+
+.player-ui .minplayer-default-volume-slider .ui-slider-handle {
+  position: absolute;
+  z-index: 20;
+  width: 12px;
+  height: 12px;
+  border: 1px solid #333;
+  -moz-border-radius:10px;
+  -webkit-border-radius:10px;
+  border-radius:10px;
+  background: #e6e6e6;
+  background-image: -moz-linear-gradient(top, #e6e6e6, #d5d5d5);
+  background-image: -webkit-gradient(linear,left top,left bottom,color-stop(0, #e6e6e6),color-stop(1, #d5d5d5));
+  box-shadow: inset 0 3px 3px #d5d5d5;
+}
+
+.player-ui .minplayer-controls-volume-horizontal .minplayer-default-volume-slider .ui-slider-handle {
+  margin-top:1px;
+}
+
+.player-ui .minplayer-controls-volume-vertical .minplayer-default-volume-slider .ui-slider-handle {
+  left: -4px;
+  margin-bottom:-0.6em;
+  margin-left:0;
+}
+
+.player-ui .minplayer-default-volume-slider .ui-slider-handle.ui-state-hover {
+  background: #fff;
+}
+
+.player-ui .minplayer-default-volume-slider .ui-slider-range {
+  position: absolute;
+  bottom: 0;
+  left: 0;
+  width: 100%;
+  z-index: 1;
+  -moz-border-radius:15px;
+  -webkit-border-radius:15px;
+  border-radius:15px;
+}
+
+/* volume button */
+.player-ui .minplayer-default-volume-mute, .player-ui .minplayer-default-volume-unmute {
+  position: absolute;
+  bottom: 0px;
+}
+
+.player-ui .minplayer-default-volume-unmute {
+  display: none;
+}
+
+/* Fullscreen button */
+.player-ui .minplayer-default-fullscreen {
+  position: absolute;
+  right:6px;
+  bottom:7px;
+  width: 22px;
+  height: 14px;
+}
+
+.player-ui .minplayer-default.fullscreen .minplayer-default-fullscreen {
+  right:14px;
+  bottom:16px;
+}
+
+.player-ui .minplayer-default-fullscreen-inner, .player-ui .minplayer-default.fullscreen .minplayer-default-fullscreen:hover .minplayer-default-fullscreen-inner {
+  position:absolute;
+  bottom:0;
+  width:16px;
+  height:8px;
+  -moz-transition: all 0.1s ease-in-out; /* Firefox */
+  -webkit-transition: all 0.1s ease-in-out; /* Safari and Chrome */
+  -o-transition: all 0.1s ease-in-out;  /* Opera */
+  transition: all 0.1s ease-in-out;
+}
+
+.player-ui .minplayer-default-fullscreen:hover .minplayer-default-fullscreen-inner, .player-ui .minplayer-default.fullscreen .minplayer-default-fullscreen-inner {
+  width:20px;
+  height:12px;
+}
+
+.player-ui .minplayer-default.fullscreen .minplayer-default-controls {
+  position: absolute;
+  z-index:1002;
+  width:500px;
+  left: 50%;
+  bottom:10px;
+  margin: 0 0 0 -260px;
+  padding: 10px;
+  border: 1px solid #2E2E2E;
+  -moz-border-radius: 5px; /* FF1+ */
+  -webkit-border-radius: 5px; /* Saf3+, Chrome */
+  border-radius: 5px; /* Opera 10.5, IE 9 */
+  -moz-transition: all 0.1s ease-in-out; /* Firefox */
+  -webkit-transition: all 0.1s ease-in-out; /* Safari and Chrome */
+  -o-transition: all 0.1s ease-in-out;  /* Opera */
+  transition: all 0.1s ease-in-out;
+}
+
+.player-ui .minplayer-default-logo {
+  z-index: 200;
+  line-height: 0px;
+  position: absolute;
+  bottom: 3px;
+  left: 3px;
+}
+
+.player-ui.controller-only .minplayer-default-logo {
+  display: none !important;
+}
+
+.player-ui .minplayer-default.fullscreen .minplayer-default-logo {
+  z-index: 1002;
+}
+
+.with-controller .minplayer-default-logo {
+  bottom: 34px;
+}
+
+.player-ui .ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
+
+
+/** OSM Player Styles **/
+.osmplayer-default {
+  position:relative;
+  width: 100%;
+  height: 100%;
+  overflow: hidden;
+  font-family:"Trebuchet MS", Helvetica, sans-serif;
+  -moz-box-shadow:0px 5px 10px #333;/*no-important moz*/
+  -webkit-box-shadow:0px 5px 10px #333;/*no-important chrome*/
+}
+
+.minplayer-default {
+  position: absolute;
+  top: 0px;
+  right: 0px;
+  bottom: 0px;
+  left: 0px;
+}
+
+.player-ui .osmplayer-default-playlist {
+  position: absolute;
+  width: 160px;
+  top: 0px;
+  bottom: 0px;
+  right: 0px;
+}
+
+.player-ui .osmplayer-default-playlist.playlist-only {
+  width: 100%;
+  height: 100%;
+}
+
+.player-ui .playlist-horizontal {
+  width: 100%;
+  height: 160px;
+  top: inherit;
+  bottom: 0px;
+  left: 0px;
+  right: 0px;
+}
+
+.player-ui .osmplayer-default-hide-show-playlist {
+  position: absolute;
+  z-index: 3;
+  top: 50%;
+  left: -16px;
+  width: 16px;
+  height: 40px;
+  margin: -20px 0 0 0;
+  text-align: center;
+  vertical-align: center;
+  opacity: 0.5;
+}
+
+.player-ui .playlist-horizontal .osmplayer-default-hide-show-playlist {
+  top: inherit;
+  left: 50%;
+  bottom: 191px; /* Playlist height + control bar. */
+  width: 40px;
+  height: 16px;
+  margin: 0 0 0 -20px;
+}
+
+.player-ui .osmplayer-default-hide-show-playlist span {
+  position: absolute;
+  top: 50%;
+  margin-top: -8px;
+}
+
+.player-ui .playlist-horizontal .osmplayer-default-hide-show-playlist span {
+  top: inherit;
+  left: 50%;
+  margin-top: 0px;
+  margin-left: -8px;
+}
+
+.player-ui .osmplayer-default-playlist-scroll {
+  position: absolute;
+  overflow: hidden;
+  top: 0px;
+  right: 0px;
+  left: 0px;
+  bottom: 32px;
+}
+
+.player-ui .playlist-horizontal .osmplayer-default-playlist-scroll {
+  bottom: 30px;
+}
+
+.player-ui .osmplayer-default-playlist-scrollbar {
+  position: absolute;
+  width: 10px;
+  height: 100%;
+  bottom: 0px;
+  right: 0px;
+  z-index: 20;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  border-radius: 0px;
+}
+
+.player-ui .playlist-vertical .osmplayer-default-playlist-scrollbar {
+  top: 0px;
+}
+
+.player-ui .playlist-horizontal .osmplayer-default-playlist-scrollbar {
+  width: 100%;
+  height: 10px;
+  bottom: 0px;
+}
+
+.player-ui .osmplayer-default-playlist-scrollbar .ui-slider-handle {
+  width: 8px;
+  height: 15px;
+  border: 1px solid #333;
+  right: 0;
+  left: 0;
+  margin: 0;
+  z-index:20px;
+  -moz-border-radius:2px;
+  -webkit-border-radius:2px;
+  border-radius:2px;
+  background: #e6e6e6;
+  background-image: -moz-linear-gradient(top, #e6e6e6, #d5d5d5);
+  background-image: -webkit-gradient(linear,left top,left bottom,color-stop(0, #e6e6e6),color-stop(1, #d5d5d5));
+  box-shadow: inset 0 -3px 3px #d5d5d5;
+}
+
+.player-ui .playlist-horizontal .osmplayer-default-playlist-scrollbar .ui-slider-handle {
+  width: 15px;
+  height: 8px;
+  top: 0px;
+  bottom: 0px;
+  right: inherit;
+  left: inherit;
+}
+
+.player-ui .osmplayer-default-playlist-scrollbar .ui-slider-handle.ui-state-hover {
+  background: #fff;
+}
+
+.player-ui .osmplayer-default-playlist-list {
+  margin: 2px 2px 2px 2px;
+}
+
+.player-ui .playlist-horizontal .osmplayer-default-playlist-list {
+  position: absolute;
+  margin: 1px 2px 1px 2px;
+  top: 0px;
+  bottom: 0px;
+}
+
+.player-ui .osmplayer-default-teaser {
+  margin:1px 0 1px 0;
+  cursor:pointer;
+  padding: 0;
+}
+
+.player-ui .playlist-horizontal .osmplayer-default-teaser {
+  width: 160px;
+  height: 100%;
+  float: left;
+}
+
+.player-ui .osmplayer-default-teaser-image {
+  width: 100%;
+  height: 80px;
+  margin: auto;
+}
+
+.player-ui .osmplayer-default-teaser-info {
+  z-index: 20;
+  font-size: 12px;
+  margin-top: 2px;
+  padding: 4px;
+}
+
+.player-ui .osmplayer-default-playlist-pager {
+  position: absolute;
+  display: block;
+  z-index:3;
+  bottom:0px;
+  left:0px;
+  right:0px;
+  height:30px;
+}
+
+.player-ui .osmplayer-default-playlist-pager-link {
+  float:left;
+}
+
+.player-ui .osmplayer-default-playlist-pager-left {
+  float:left;
+  margin: 3px;
+}
+
+.player-ui .osmplayer-default-playlist-pager-right {
+  float:right;
+  margin: 3px;
+}
diff --git a/public/admin/js/osmplayer/templates/default/js/osmplayer.controller.default.js b/public/admin/js/osmplayer/templates/default/js/osmplayer.controller.default.js
new file mode 100644
index 0000000000000000000000000000000000000000..e5e54a830f882818eed3c5af77e092e7a6d36315
--- /dev/null
+++ b/public/admin/js/osmplayer/templates/default/js/osmplayer.controller.default.js
@@ -0,0 +1,123 @@
+(function(template, osmplayer) {
+
+  /** The osmplayer namespace. */
+  var osmplayer = osmplayer || {};
+
+  // Define the controller object.
+  osmplayer.controller = osmplayer.controller || {};
+
+  /**
+   * Constructor for the minplayer.controller
+   */
+  osmplayer.controller[template] = function(context, options) {
+
+    // Make sure we provide default options...
+    this.options = jQuery.extend({
+      volumeVertical: true
+    }, this.options);
+
+    // Derive from default controller
+    minplayer.controller.call(this, context, options);
+  };
+
+  /** Derive from controller. */
+  osmplayer.controller[template].prototype = new minplayer.controller();
+  osmplayer.controller[template].prototype.constructor = osmplayer.controller[template];
+
+  /**
+   * @see minplayer.plugin#construct
+   */
+  osmplayer.controller[template].prototype.construct = function() {
+    minplayer.controller.prototype.construct.call(this);
+    if (!this.options.volumeVertical || this.options.controllerOnly) {
+      this.display.addClass('minplayer-controls-volume-horizontal');
+      this.display.removeClass('minplayer-controls-volume-vertical');
+      this.volumeBar.slider("option", "orientation", "horizontal");
+    }
+    else {
+      this.display.addClass('minplayer-controls-volume-vertical');
+      this.display.removeClass('minplayer-controls-volume-horizontal');
+    }
+
+    if (!this.options.controllerOnly) {
+      this.get('player', function(player) {
+        this.get('media', function(media) {
+          if (!media.hasController()) {
+            minplayer.showThenHide(this.display, 5000, function(shown) {
+              var op = shown ? 'addClass' : 'removeClass';
+              player.display[op]('with-controller');
+            });
+          }
+          else {
+            player.display.addClass('with-controller');
+          }
+        });
+      });
+    }
+  }
+
+  /**
+   * Return the display for this plugin.
+   */
+  osmplayer.controller[template].prototype.getDisplay = function() {
+
+    // See if we need to build out the controller.
+    if (this.options.build) {
+
+      // Prepend the control template.
+      jQuery('.minplayer-' + template, this.context).prepend('\
+      <div class="minplayer-' + template + '-controls ui-widget-header">\
+        <div class="minplayer-' + template + '-controls-left">\
+          <a class="minplayer-' + template + '-play minplayer-' + template + '-button ui-state-default ui-corner-all" title="Play">\
+            <span class="ui-icon ui-icon-play"></span>\
+          </a>\
+          <a class="minplayer-' + template + '-pause minplayer-' + template + '-button ui-state-default ui-corner-all" title="Pause">\
+            <span class="ui-icon ui-icon-pause"></span>\
+          </a>\
+        </div>\
+        <div class="minplayer-' + template + '-controls-right">\
+          <div class="minplayer-' + template + '-timer">00:00</div>\
+          <div class="minplayer-' + template + '-fullscreen ui-widget-content">\
+            <div class="minplayer-' + template + '-fullscreen-inner ui-state-default"></div>\
+          </div>\
+          <div class="minplayer-' + template + '-volume">\
+            <div class="minplayer-' + template + '-volume-slider"></div>\
+            <a class="minplayer-' + template + '-volume-mute minplayer-' + template + '-button ui-state-default ui-corner-all" title="Mute">\
+              <span class="ui-icon ui-icon-volume-on"></span>\
+            </a>\
+            <a class="minplayer-' + template + '-volume-unmute minplayer-' + template + '-button ui-state-default ui-corner-all" title="Unmute">\
+              <span class="ui-icon ui-icon-volume-off"></span>\
+            </a>\
+          </div>\
+        </div>\
+        <div class="minplayer-' + template + '-controls-mid">\
+          <div class="minplayer-' + template + '-seek">\
+            <div class="minplayer-' + template + '-progress ui-state-default"></div>\
+          </div>\
+        </div>\
+      </div>');
+    }
+
+    // Let our template know we have a controller.
+    this.context.addClass('with-controller');
+
+    return jQuery('.minplayer-' + template + '-controls', this.context);
+  }
+
+  // Return the elements
+  osmplayer.controller[template].prototype.getElements = function() {
+    var elements = minplayer.controller.prototype.getElements.call(this);
+    var timer = jQuery('.minplayer-' + template + '-timer', this.display);
+    return jQuery.extend(elements, {
+      play: jQuery('.minplayer-' + template + '-play', this.display),
+      pause: jQuery('.minplayer-' + template + '-pause', this.display),
+      fullscreen: jQuery('.minplayer-' + template + '-fullscreen', this.display),
+      seek: jQuery('.minplayer-' + template + '-seek', this.display),
+      progress: jQuery('.minplayer-' + template + '-progress', this.display),
+      volume: jQuery('.minplayer-' + template + '-volume-slider', this.display),
+      mute: jQuery('.minplayer-' + template + '-volume-mute', this.display),
+      timer:timer,
+      duration:timer
+    });
+  };
+})('default', osmplayer);
diff --git a/public/admin/js/osmplayer/templates/default/js/osmplayer.default.js b/public/admin/js/osmplayer/templates/default/js/osmplayer.default.js
new file mode 100644
index 0000000000000000000000000000000000000000..ad92209c6f71bcbb5289c9ef95a6a217f8533432
--- /dev/null
+++ b/public/admin/js/osmplayer/templates/default/js/osmplayer.default.js
@@ -0,0 +1,93 @@
+(function(template, osmplayer) {
+
+  /** The osmplayer namespace. */
+  var osmplayer = osmplayer || {};
+
+  // templated player.
+  osmplayer[template] = function(context, options) {
+
+    // Make sure we provide default options...
+    this.options = jQuery.extend({
+      controllerOnly: false
+    }, this.options);
+
+    // Derive from osmplayer.
+    osmplayer.call(this, context, options);
+  };
+
+  /**
+   * Define this template prototype.
+   */
+  osmplayer[template].prototype = new osmplayer();
+  osmplayer[template].prototype.constructor = osmplayer[template];
+
+  /**
+   * The player constructor.
+   */
+  osmplayer[template].prototype.construct = function() {
+    osmplayer.prototype.construct.call(this);
+    if (this.options.controllerOnly) {
+      this.display.addClass('controller-only');
+    }
+  };
+
+  /**
+   * Return the display for this plugin.
+   */
+  osmplayer[template].prototype.getDisplay = function() {
+
+    // If this is the bottom element, then we need to build.
+    if (this.context.children().length == 0) {
+
+      // Build out the player provided the base tag.
+      this.context = this.context.attr({
+        'id': this.options.id + '-player',
+        'class': 'minplayer-' + template + '-media'
+      })
+      .wrap(jQuery(document.createElement('div')).attr({
+        'class': 'minplayer-' + template + '-display ui-widget-content'
+      })).parent('.minplayer-' + template + '-display')
+      .wrap(jQuery(document.createElement('div')).attr({
+        'class': 'minplayer-' + template
+      })).parent('.minplayer-' + template)
+      .prepend('\
+        <div class="minplayer-' + template + '-logo"></div>\
+        <div class="minplayer-' + template + '-error"></div>'
+      )
+      .wrap(jQuery(document.createElement('div')).attr({
+        'id': this.options.id,
+        'class': 'osmplayer-' + template + ' player-ui'
+      })).parent('.osmplayer-' + template);
+
+      // Mark a flag that says this display needs to be built.
+      this.options.build = true;
+    }
+
+    return this.context;
+  }
+
+  // Get the elements for this player.
+  osmplayer[template].prototype.getElements = function() {
+    var elements = osmplayer.prototype.getElements.call(this);
+
+    // Set the width and height of this element.
+    this.display.width(this.options.width);
+    this.display.height(this.options.height);
+
+    // Get the minplayer component.
+    var minplayer = jQuery('.minplayer-' + template, this.display);
+    if (this.options.playlistOnly) {
+      minplayer.remove();
+      minplayer = null;
+    }
+
+    return jQuery.extend(elements, {
+      player:this.display,
+      minplayer: minplayer,
+      display:jQuery('.minplayer-' + template + '-display', this.display),
+      media:jQuery('.minplayer-' + template + '-media', this.display),
+      error:jQuery('.minplayer-' + template + '-error', this.display),
+      logo:jQuery('.minplayer-' + template + '-logo', this.display)
+    });
+  };
+})('default', osmplayer);
diff --git a/public/admin/js/osmplayer/templates/default/js/osmplayer.pager.default.js b/public/admin/js/osmplayer/templates/default/js/osmplayer.pager.default.js
new file mode 100644
index 0000000000000000000000000000000000000000..2935dca0de9d2d591bc3c65d8ffb93c88ee21ea7
--- /dev/null
+++ b/public/admin/js/osmplayer/templates/default/js/osmplayer.pager.default.js
@@ -0,0 +1,55 @@
+(function(template, osmplayer) {
+
+  /** The osmplayer namespace. */
+  var osmplayer = osmplayer || {};
+
+  // Define the busy object.
+  osmplayer.pager = osmplayer.pager || {};
+
+  // constructor.
+  osmplayer.pager[template] = function(context, options) {
+
+    // Derive from pager
+    osmplayer.pager.call(this, context, options);
+  };
+
+  // Define the prototype for all controllers.
+  osmplayer.pager[template].prototype = new osmplayer.pager();
+  osmplayer.pager[template].prototype.constructor = osmplayer.pager[template];
+
+  /**
+   * Return the display for this plugin.
+   */
+  osmplayer.pager[template].prototype.getDisplay = function() {
+
+    if (this.options.build) {
+
+      // append the pager.
+      this.context.append('\
+      <div class="osmplayer-' + template + '-playlist-pager ui-widget-header">\
+        <div class="osmplayer-' + template + '-playlist-pager-left">\
+          <a href="#" class="osmplayer-' + template + '-playlist-pager-link osmplayer-' + template + '-playlist-pager-prevpage minplayer-' + template + '-button ui-state-default ui-corner-all">\
+            <span class="ui-icon ui-icon-circle-triangle-w"></span>\
+          </a>\
+        </div>\
+        <div class="osmplayer-' + template + '-playlist-pager-right">\
+          <a href="#" class="osmplayer-' + template + '-playlist-pager-link osmplayer-' + template + '-playlist-pager-nextpage minplayer-' + template + '-button ui-state-default ui-corner-all">\
+            <span class="ui-icon ui-icon-circle-triangle-e"></span>\
+          </a>\
+        </div>\
+      </div>');
+    }
+
+    return jQuery('.osmplayer-' + template + '-playlist-pager', this.context);
+  }
+
+  // Return the elements
+  osmplayer.pager[template].prototype.getElements = function() {
+    var elements = osmplayer.pager.prototype.getElements.call(this);
+    return jQuery.extend(elements, {
+      prevPage:jQuery('.osmplayer-' + template + '-playlist-pager-prevpage', this.display),
+      nextPage:jQuery('.osmplayer-' + template + '-playlist-pager-nextpage', this.display)
+    });
+  };
+})('default', osmplayer);
+
diff --git a/public/admin/js/osmplayer/templates/default/js/osmplayer.playLoader.default.js b/public/admin/js/osmplayer/templates/default/js/osmplayer.playLoader.default.js
new file mode 100644
index 0000000000000000000000000000000000000000..c8fe50b733b540f879180d45180840072025e3a9
--- /dev/null
+++ b/public/admin/js/osmplayer/templates/default/js/osmplayer.playLoader.default.js
@@ -0,0 +1,50 @@
+(function(template, osmplayer) {
+
+  /** The osmplayer namespace. */
+  var osmplayer = osmplayer || {};
+
+  // Define the busy object.
+  osmplayer.playLoader = osmplayer.playLoader || {};
+
+  // constructor.
+  osmplayer.playLoader[template] = function(context, options) {
+
+    // Derive from playLoader
+    minplayer.playLoader.call(this, context, options);
+  };
+
+  // Define the prototype for all controllers.
+  osmplayer.playLoader[template].prototype = new minplayer.playLoader();
+  osmplayer.playLoader[template].prototype.constructor = osmplayer.playLoader[template];
+
+  /**
+   * Return the display for this plugin.
+   */
+  osmplayer.playLoader[template].prototype.getDisplay = function() {
+
+    // See if we need to build out the controller.
+    if (this.options.build) {
+
+      // Prepend the playloader template.
+      jQuery('.minplayer-' + template + '', this.context).prepend('\
+      <div class="minplayer-' + template + '-loader-wrapper">\
+        <div class="minplayer-' + template + '-big-play ui-state-default"><span></span></div>\
+        <div class="minplayer-' + template + '-loader">&nbsp;</div>\
+        <div class="minplayer-' + template + '-preview ui-widget-content"></div>\
+      </div>');
+    }
+
+    return jQuery('.minplayer-' + template + ' .minplayer-' + template + '-loader-wrapper', this.context);
+  }
+
+  // Return the elements
+  osmplayer.playLoader[template].prototype.getElements = function() {
+    var elements = minplayer.playLoader.prototype.getElements.call(this);
+    return jQuery.extend(elements, {
+      busy:jQuery('.minplayer-' + template + '-loader', this.display),
+      bigPlay:jQuery('.minplayer-' + template + '-big-play', this.display),
+      preview:jQuery('.minplayer-' + template + '-preview', this.display)
+    });
+  };
+})('default', osmplayer);
+
diff --git a/public/admin/js/osmplayer/templates/default/js/osmplayer.playlist.default.js b/public/admin/js/osmplayer/templates/default/js/osmplayer.playlist.default.js
new file mode 100644
index 0000000000000000000000000000000000000000..0aac1cb42c84786d5ce5373fd91ead625c398766
--- /dev/null
+++ b/public/admin/js/osmplayer/templates/default/js/osmplayer.playlist.default.js
@@ -0,0 +1,172 @@
+(function(template, osmplayer) {
+
+  /** The osmplayer namespace. */
+  var osmplayer = osmplayer || {};
+
+  // Define the busy object.
+  osmplayer.playlist = osmplayer.playlist || {};
+
+  // constructor.
+  osmplayer.playlist[template] = function(context, options) {
+
+    // Derive from playlist
+    osmplayer.playlist.call(this, context, options);
+  };
+
+  // Define the prototype for all controllers.
+  osmplayer.playlist[template].prototype = new osmplayer.playlist();
+  osmplayer.playlist[template].prototype.constructor = osmplayer.playlist[template];
+
+  /**
+   * @see minplayer.plugin#construct
+   */
+  osmplayer.playlist[template].prototype.construct = function() {
+
+    this.options = jQuery.extend({
+      showPlaylist: true
+    }, this.options);
+
+    osmplayer.playlist.prototype.construct.call(this);
+
+    // Show then hide the element.
+    minplayer.showThenHide(this.elements.hideShow);
+
+    // Make the main minplayer have the same width as the playlist.
+    this.get('player', function(player) {
+
+      // Set the size.
+      var size = this.options.vertical ? 'width' : 'height';
+      var position = this.options.vertical ? 'right' : 'bottom';
+      var margin = this.options.vertical ? 'marginRight' : 'marginBottom';
+
+      // Hide and show the playlist.
+      this.hideShow = function(show, animate) {
+        var playerPos = {}, displayPos = {};
+        var displaySize = this.display[size]();
+        var e = this.options.vertical ? 'e' : 's';
+        var w = this.options.vertical ? 'w' : 'n';
+        var from = show ? 'ui-icon-triangle-1-' + w : 'ui-icon-triangle-1-' + e;
+        var to = show ? 'ui-icon-triangle-1-' + e : 'ui-icon-triangle-1-' + w;
+        jQuery('span', this.elements.hideShow).removeClass(from).addClass(to);
+        playerPos[position] = show ? displaySize : 0;
+        if (player.elements.minplayer) {
+          if (animate) {
+            player.elements.minplayer.animate(playerPos, 'fast');
+          }
+          else {
+            player.elements.minplayer.css(playerPos);
+          }
+        }
+        displayPos[margin] = show ? 0 : -displaySize;
+        if (animate) {
+          this.display.animate(displayPos, 'fast', function() {
+            player.resize();
+          });
+        }
+        else {
+          this.display.css(displayPos);
+        }
+      };
+
+      // Bind when the playlist loads.
+      this.bind('playlistLoad', (function(playlist) {
+        return function(event, data) {
+          if (data.nodes.length === 1) {
+            playlist.hideShow(false, true);
+          }
+          else {
+            playlist.hideShow(true, true);
+          }
+        };
+      })(this));
+
+      // Perform the show hide functionality of the playlist.
+      if (this.elements.hideShow) {
+        this.elements.hideShow.bind('click', (function(playlist) {
+          return function(event) {
+            event.preventDefault();
+            var button = jQuery('span', playlist.elements.hideShow);
+            var e = playlist.options.vertical ? 'e' : 's';
+            var w = playlist.options.vertical ? 'w' : 'n';
+            var show = button.hasClass('ui-icon-triangle-1-' + w);
+            playlist.hideShow(show, true);
+          };
+        })(this));
+      }
+
+      // If they wish to show the playlist.
+      if (player.elements.minplayer) {
+        if (this.options.showPlaylist) {
+
+          // Set the player to have the correct margin if the playlist is present.
+          if (this.options.vertical) {
+            player.elements.minplayer.css('right', this.display.width() + 'px');
+          }
+          else {
+            player.elements.minplayer.css('bottom', this.display.height() + 'px');
+          }
+        }
+        else {
+
+          // Hide the playlist.
+          this.hideShow(false);
+        }
+      }
+    });
+  };
+
+  /**
+   * Return the display for this plugin.
+   */
+  osmplayer.playlist[template].prototype.getDisplay = function() {
+    if (this.options.build) {
+      this.context.append('\
+      <div class="osmplayer-' + template + '-playlist">\
+        <div class="osmplayer-' + template + '-hide-show-playlist ui-state-default">\
+          <span class="ui-icon"></span>\
+        </div>\
+        <div class="minplayer-' + template + '-loader-wrapper">\
+          <div class="minplayer-' + template + '-loader"></div>\
+        </div>\
+        <div class="osmplayer-' + template + '-playlist-scroll ui-widget-content">\
+          <div class="osmplayer-' + template + '-playlist-list"></div>\
+      </div>\
+      </div>');
+    }
+    return jQuery('.osmplayer-' + template + '-playlist', this.context);
+  };
+
+  // Return the elements
+  osmplayer.playlist[template].prototype.getElements = function() {
+    var elements = osmplayer.playlist.prototype.getElements.call(this);
+
+    // Setup the dynamic settings.
+    var cName = this.options.vertical ? 'playlist-vertical' : 'playlist-horizontal';
+    cName += this.options.playlistOnly ? ' playlist-only' : '';
+    var show = this.options.showPlaylist;
+    var icon = this.options.vertical ? (show ? 'e' : 'w') : (show ? 's' : 'n');
+    var corner = this.options.vertical ? 'ui-corner-left' : 'ui-corner-top';
+
+    // Remove the playlist if we need to.
+    if (this.options.disablePlaylist || !this.options.playlist) {
+      this.display.remove();
+    }
+
+    this.display.addClass(cName);
+    var hideShow = jQuery('.osmplayer-' + template + '-hide-show-playlist', this.display);
+    hideShow.addClass(corner);
+    if (this.options.playlistOnly) {
+      hideShow.hide();
+      hideShow = null;
+    }
+    jQuery('span', hideShow).addClass('ui-icon-triangle-1-' + icon);
+
+    return jQuery.extend(elements, {
+      playlist_busy:jQuery('.minplayer-' + template + '-loader-wrapper', this.display),
+      list:jQuery('.osmplayer-' + template + '-playlist-list', this.display),
+      scroll:jQuery('.osmplayer-' + template + '-playlist-scroll', this.display),
+      hideShow: hideShow
+    });
+  };
+})('default', osmplayer);
+
diff --git a/public/admin/js/osmplayer/templates/default/js/osmplayer.teaser.default.js b/public/admin/js/osmplayer/templates/default/js/osmplayer.teaser.default.js
new file mode 100644
index 0000000000000000000000000000000000000000..4dd244016d5865837f4f80765ed123d15774f6fe
--- /dev/null
+++ b/public/admin/js/osmplayer/templates/default/js/osmplayer.teaser.default.js
@@ -0,0 +1,80 @@
+(function(template, osmplayer) {
+
+  /** The osmplayer namespace. */
+  var osmplayer = osmplayer || {};
+
+  // Define the teaser object.
+  osmplayer.teaser = osmplayer.teaser || {};
+
+  // constructor.
+  osmplayer.teaser[template] = function(context, options) {
+
+    // Derive from teaser
+    osmplayer.teaser.call(this, context, options);
+  };
+
+  // Define the prototype for all controllers.
+  osmplayer.teaser[template].prototype = new osmplayer.teaser();
+  osmplayer.teaser[template].prototype.constructor = osmplayer.teaser[template];
+
+  /**
+   * @see minplayer.plugin#construct
+   */
+  osmplayer.teaser[template].prototype.construct = function() {
+
+    minplayer.display.prototype.construct.call(this);
+
+    // Add some hover events.
+    this.display.bind('mouseenter', (function(info) {
+      return function() {
+        info.addClass('ui-state-hover');
+      };
+    })(this.elements.info)).bind('mouseleave', (function(info) {
+      return function() {
+        info.removeClass('ui-state-hover');
+      };
+    })(this.elements.info));
+  };
+
+  /**
+   * Return the display for this plugin.
+   */
+  osmplayer.teaser[template].prototype.getDisplay = function() {
+
+    // Append this to the list.
+    this.context.append('\
+    <div class="osmplayer-' + template + '-teaser ui-widget-content">\
+      <div class="osmplayer-' + template + '-teaser-image"></div>\
+      <div class="osmplayer-' + template + '-teaser-info ui-state-default">\
+        <div class="osmplayer-' + template + '-teaser-title">Sample Title</div>\
+      </div>\
+    </div>');
+
+    var teasers = jQuery('.osmplayer-' + template + '-teaser', this.context);
+    return teasers.eq(teasers.length - 1);
+  }
+
+  /**
+   * Selects the teaser.
+   */
+  osmplayer.teaser[template].prototype.select = function(selected) {
+    if (selected) {
+      this.elements.info.addClass('ui-state-active');
+    }
+    else {
+      this.elements.info.removeClass('ui-state-active');
+    }
+  }
+
+
+  // Return the elements
+  osmplayer.teaser[template].prototype.getElements = function() {
+    var elements = osmplayer.teaser.prototype.getElements.call(this);
+    return jQuery.extend(elements, {
+      info: jQuery('.osmplayer-' + template + '-teaser-info', this.display),
+      title:jQuery('.osmplayer-' + template + '-teaser-title', this.display),
+      image:jQuery('.osmplayer-' + template + '-teaser-image', this.display)
+    });
+  };
+})('default', osmplayer);
+
diff --git a/public/admin/js/osmplayer/templates/default/osmplayer.default.js b/public/admin/js/osmplayer/templates/default/osmplayer.default.js
new file mode 100644
index 0000000000000000000000000000000000000000..8bdf0903a38ca423abb570a42b4dd9047d88aebe
--- /dev/null
+++ b/public/admin/js/osmplayer/templates/default/osmplayer.default.js
@@ -0,0 +1,25 @@
+(function(a,b){b=b||{};b.playLoader=b.playLoader||{};b.playLoader[a]=function(a,b){minplayer.playLoader.call(this,a,b)};b.playLoader[a].prototype=new minplayer.playLoader;b.playLoader[a].prototype.constructor=b.playLoader[a];b.playLoader[a].prototype.getDisplay=function(){this.options.build&&jQuery(".minplayer-"+a+"",this.context).prepend('      <div class="minplayer-'+a+'-loader-wrapper">        <div class="minplayer-'+a+'-big-play ui-state-default"><span></span></div>        <div class="minplayer-'+
+a+'-loader">&nbsp;</div>        <div class="minplayer-'+a+'-preview ui-widget-content"></div>      </div>');return jQuery(".minplayer-"+a+" .minplayer-"+a+"-loader-wrapper",this.context)};b.playLoader[a].prototype.getElements=function(){var b=minplayer.playLoader.prototype.getElements.call(this);return jQuery.extend(b,{busy:jQuery(".minplayer-"+a+"-loader",this.display),bigPlay:jQuery(".minplayer-"+a+"-big-play",this.display),preview:jQuery(".minplayer-"+a+"-preview",this.display)})}})("default",
+osmplayer);
+(function(a,b){b=b||{};b.controller=b.controller||{};b.controller[a]=function(a,b){this.options=jQuery.extend({volumeVertical:!0},this.options);minplayer.controller.call(this,a,b)};b.controller[a].prototype=new minplayer.controller;b.controller[a].prototype.constructor=b.controller[a];b.controller[a].prototype.construct=function(){minplayer.controller.prototype.construct.call(this);!this.options.volumeVertical||this.options.controllerOnly?(this.display.addClass("minplayer-controls-volume-horizontal"),this.display.removeClass("minplayer-controls-volume-vertical"),
+this.volumeBar.slider("option","orientation","horizontal")):(this.display.addClass("minplayer-controls-volume-vertical"),this.display.removeClass("minplayer-controls-volume-horizontal"));this.options.controllerOnly||this.get("player",function(a){this.get("media",function(b){b.hasController()?a.display.addClass("with-controller"):minplayer.showThenHide(this.display,5E3,function(b){a.display[b?"addClass":"removeClass"]("with-controller")})})})};b.controller[a].prototype.getDisplay=function(){this.options.build&&
+jQuery(".minplayer-"+a,this.context).prepend('      <div class="minplayer-'+a+'-controls ui-widget-header">        <div class="minplayer-'+a+'-controls-left">          <a class="minplayer-'+a+"-play minplayer-"+a+'-button ui-state-default ui-corner-all" title="Play">            <span class="ui-icon ui-icon-play"></span>          </a>          <a class="minplayer-'+a+"-pause minplayer-"+a+'-button ui-state-default ui-corner-all" title="Pause">            <span class="ui-icon ui-icon-pause"></span>          </a>        </div>        <div class="minplayer-'+
+a+'-controls-right">          <div class="minplayer-'+a+'-timer">00:00</div>          <div class="minplayer-'+a+'-fullscreen ui-widget-content">            <div class="minplayer-'+a+'-fullscreen-inner ui-state-default"></div>          </div>          <div class="minplayer-'+a+'-volume">            <div class="minplayer-'+a+'-volume-slider"></div>            <a class="minplayer-'+a+"-volume-mute minplayer-"+a+'-button ui-state-default ui-corner-all" title="Mute">              <span class="ui-icon ui-icon-volume-on"></span>            </a>            <a class="minplayer-'+
+a+"-volume-unmute minplayer-"+a+'-button ui-state-default ui-corner-all" title="Unmute">              <span class="ui-icon ui-icon-volume-off"></span>            </a>          </div>        </div>        <div class="minplayer-'+a+'-controls-mid">          <div class="minplayer-'+a+'-seek">            <div class="minplayer-'+a+'-progress ui-state-default"></div>          </div>        </div>      </div>');this.context.addClass("with-controller");return jQuery(".minplayer-"+a+"-controls",this.context)};
+b.controller[a].prototype.getElements=function(){var b=minplayer.controller.prototype.getElements.call(this),c=jQuery(".minplayer-"+a+"-timer",this.display);return jQuery.extend(b,{play:jQuery(".minplayer-"+a+"-play",this.display),pause:jQuery(".minplayer-"+a+"-pause",this.display),fullscreen:jQuery(".minplayer-"+a+"-fullscreen",this.display),seek:jQuery(".minplayer-"+a+"-seek",this.display),progress:jQuery(".minplayer-"+a+"-progress",this.display),volume:jQuery(".minplayer-"+a+"-volume-slider",this.display),
+mute:jQuery(".minplayer-"+a+"-volume-mute",this.display),timer:c,duration:c})}})("default",osmplayer);
+(function(a,b){b=b||{};b.playlist=b.playlist||{};b.playlist[a]=function(a,c){b.playlist.call(this,a,c)};b.playlist[a].prototype=new b.playlist;b.playlist[a].prototype.constructor=b.playlist[a];b.playlist[a].prototype.construct=function(){this.options=jQuery.extend({showPlaylist:!0},this.options);b.playlist.prototype.construct.call(this);minplayer.showThenHide(this.elements.hideShow);this.get("player",function(a){var b=this.options.vertical?"width":"height",e=this.options.vertical?"right":"bottom",
+g=this.options.vertical?"marginRight":"marginBottom";this.hideShow=function(f,j){var h={},i={},k=this.display[b](),l=this.options.vertical?"e":"s",m=this.options.vertical?"w":"n";jQuery("span",this.elements.hideShow).removeClass(f?"ui-icon-triangle-1-"+m:"ui-icon-triangle-1-"+l).addClass(f?"ui-icon-triangle-1-"+l:"ui-icon-triangle-1-"+m);h[e]=f?k:0;a.elements.minplayer&&(j?a.elements.minplayer.animate(h,"fast"):a.elements.minplayer.css(h));i[g]=f?0:-k;j?this.display.animate(i,"fast",function(){a.resize()}):
+this.display.css(i)};this.bind("playlistLoad",function(a){return function(b,c){1===c.nodes.length?a.hideShow(!1,!0):a.hideShow(!0,!0)}}(this));this.elements.hideShow&&this.elements.hideShow.bind("click",function(a){return function(b){b.preventDefault();b=jQuery("span",a.elements.hideShow).hasClass("ui-icon-triangle-1-"+(a.options.vertical?"w":"n"));a.hideShow(b,!0)}}(this));a.elements.minplayer&&(this.options.showPlaylist?this.options.vertical?a.elements.minplayer.css("right",this.display.width()+
+"px"):a.elements.minplayer.css("bottom",this.display.height()+"px"):this.hideShow(!1))})};b.playlist[a].prototype.getDisplay=function(){this.options.build&&this.context.append('      <div class="osmplayer-'+a+'-playlist">        <div class="osmplayer-'+a+'-hide-show-playlist ui-state-default">          <span class="ui-icon"></span>        </div>        <div class="minplayer-'+a+'-loader-wrapper">          <div class="minplayer-'+a+'-loader"></div>        </div>        <div class="osmplayer-'+a+'-playlist-scroll ui-widget-content">          <div class="osmplayer-'+
+a+'-playlist-list"></div>      </div>      </div>');return jQuery(".osmplayer-"+a+"-playlist",this.context)};b.playlist[a].prototype.getElements=function(){var d=b.playlist.prototype.getElements.call(this),c=this.options.vertical?"playlist-vertical":"playlist-horizontal",c=c+(this.options.playlistOnly?" playlist-only":""),e=this.options.showPlaylist,e=this.options.vertical?e?"e":"w":e?"s":"n",g=this.options.vertical?"ui-corner-left":"ui-corner-top";(this.options.disablePlaylist||!this.options.playlist)&&
+this.display.remove();this.display.addClass(c);c=jQuery(".osmplayer-"+a+"-hide-show-playlist",this.display);c.addClass(g);this.options.playlistOnly&&(c.hide(),c=null);jQuery("span",c).addClass("ui-icon-triangle-1-"+e);return jQuery.extend(d,{playlist_busy:jQuery(".minplayer-"+a+"-loader-wrapper",this.display),list:jQuery(".osmplayer-"+a+"-playlist-list",this.display),scroll:jQuery(".osmplayer-"+a+"-playlist-scroll",this.display),hideShow:c})}})("default",osmplayer);
+(function(a,b){b=b||{};b.teaser=b.teaser||{};b.teaser[a]=function(a,c){b.teaser.call(this,a,c)};b.teaser[a].prototype=new b.teaser;b.teaser[a].prototype.constructor=b.teaser[a];b.teaser[a].prototype.construct=function(){minplayer.display.prototype.construct.call(this);this.display.bind("mouseenter",function(a){return function(){a.addClass("ui-state-hover")}}(this.elements.info)).bind("mouseleave",function(a){return function(){a.removeClass("ui-state-hover")}}(this.elements.info))};b.teaser[a].prototype.getDisplay=
+function(){this.context.append('    <div class="osmplayer-'+a+'-teaser ui-widget-content">      <div class="osmplayer-'+a+'-teaser-image"></div>      <div class="osmplayer-'+a+'-teaser-info ui-state-default">        <div class="osmplayer-'+a+'-teaser-title">Sample Title</div>      </div>    </div>');var b=jQuery(".osmplayer-"+a+"-teaser",this.context);return b.eq(b.length-1)};b.teaser[a].prototype.select=function(a){a?this.elements.info.addClass("ui-state-active"):this.elements.info.removeClass("ui-state-active")};
+b.teaser[a].prototype.getElements=function(){var d=b.teaser.prototype.getElements.call(this);return jQuery.extend(d,{info:jQuery(".osmplayer-"+a+"-teaser-info",this.display),title:jQuery(".osmplayer-"+a+"-teaser-title",this.display),image:jQuery(".osmplayer-"+a+"-teaser-image",this.display)})}})("default",osmplayer);
+(function(a,b){b=b||{};b.pager=b.pager||{};b.pager[a]=function(a,c){b.pager.call(this,a,c)};b.pager[a].prototype=new b.pager;b.pager[a].prototype.constructor=b.pager[a];b.pager[a].prototype.getDisplay=function(){this.options.build&&this.context.append('      <div class="osmplayer-'+a+'-playlist-pager ui-widget-header">        <div class="osmplayer-'+a+'-playlist-pager-left">          <a href="#" class="osmplayer-'+a+"-playlist-pager-link osmplayer-"+a+"-playlist-pager-prevpage minplayer-"+a+'-button ui-state-default ui-corner-all">            <span class="ui-icon ui-icon-circle-triangle-w"></span>          </a>        </div>        <div class="osmplayer-'+
+a+'-playlist-pager-right">          <a href="#" class="osmplayer-'+a+"-playlist-pager-link osmplayer-"+a+"-playlist-pager-nextpage minplayer-"+a+'-button ui-state-default ui-corner-all">            <span class="ui-icon ui-icon-circle-triangle-e"></span>          </a>        </div>      </div>');return jQuery(".osmplayer-"+a+"-playlist-pager",this.context)};b.pager[a].prototype.getElements=function(){var d=b.pager.prototype.getElements.call(this);return jQuery.extend(d,{prevPage:jQuery(".osmplayer-"+
+a+"-playlist-pager-prevpage",this.display),nextPage:jQuery(".osmplayer-"+a+"-playlist-pager-nextpage",this.display)})}})("default",osmplayer);
+(function(a,b){b=b||{};b[a]=function(a,c){this.options=jQuery.extend({controllerOnly:!1},this.options);b.call(this,a,c)};b[a].prototype=new b;b[a].prototype.constructor=b[a];b[a].prototype.construct=function(){b.prototype.construct.call(this);this.options.controllerOnly&&this.display.addClass("controller-only")};b[a].prototype.getDisplay=function(){0==this.context.children().length&&(this.context=this.context.attr({id:this.options.id+"-player","class":"minplayer-"+a+"-media"}).wrap(jQuery(document.createElement("div")).attr({"class":"minplayer-"+
+a+"-display ui-widget-content"})).parent(".minplayer-"+a+"-display").wrap(jQuery(document.createElement("div")).attr({"class":"minplayer-"+a})).parent(".minplayer-"+a).prepend('        <div class="minplayer-'+a+'-logo"></div>        <div class="minplayer-'+a+'-error"></div>').wrap(jQuery(document.createElement("div")).attr({id:this.options.id,"class":"osmplayer-"+a+" player-ui"})).parent(".osmplayer-"+a),this.options.build=!0);return this.context};b[a].prototype.getElements=function(){var d=b.prototype.getElements.call(this);
+this.display.width(this.options.width);this.display.height(this.options.height);var c=jQuery(".minplayer-"+a,this.display);this.options.playlistOnly&&(c.remove(),c=null);return jQuery.extend(d,{player:this.display,minplayer:c,display:jQuery(".minplayer-"+a+"-display",this.display),media:jQuery(".minplayer-"+a+"-media",this.display),error:jQuery(".minplayer-"+a+"-error",this.display),logo:jQuery(".minplayer-"+a+"-logo",this.display)})}})("default",osmplayer);
diff --git a/public/admin/js/osmplayer/templates/default/osmplayer_default.tpl.php b/public/admin/js/osmplayer/templates/default/osmplayer_default.tpl.php
new file mode 100644
index 0000000000000000000000000000000000000000..f3e57ec756554bf0873f972b88228086debe7e10
--- /dev/null
+++ b/public/admin/js/osmplayer/templates/default/osmplayer_default.tpl.php
@@ -0,0 +1,65 @@
+<div id="<?php print $params['id']; ?>" class="osmplayer-<?php print $params['template']; ?> player-ui" style="width=<?php print $params['width']; ?>; height=<?php print $params['height']; ?>;">
+  <div class="minplayer-<?php print $params['template']; ?> player-ui">
+    <div class="minplayer-<?php print $params['template']; ?>-loader-wrapper">
+      <div class="minplayer-<?php print $params['template']; ?>-big-play ui-state-default"><span></span></div>
+      <div class="minplayer-<?php print $params['template']; ?>-loader">&nbsp;</div>
+      <div class="minplayer-<?php print $params['template']; ?>-preview ui-widget-content"></div>
+    </div>
+    <div class="minplayer-<?php print $params['template']; ?>-controls ui-widget-header">
+      <div class="minplayer-<?php print $params['template']; ?>-controls-left">
+        <a class="minplayer-<?php print $params['template']; ?>-play minplayer-<?php print $params['template']; ?>-button ui-state-default ui-corner-all" title="Play">
+          <span class="ui-icon ui-icon-play"></span>
+        </a>
+        <a class="minplayer-<?php print $params['template']; ?>-pause minplayer-<?php print $params['template']; ?>-button ui-state-default ui-corner-all" title="Pause">
+          <span class="ui-icon ui-icon-pause"></span>
+        </a>
+      </div>
+      <div class="minplayer-<?php print $params['template']; ?>-controls-right">
+        <div class="minplayer-<?php print $params['template']; ?>-timer">00:00</div>
+        <div class="minplayer-<?php print $params['template']; ?>-fullscreen ui-widget-content">
+          <div class="minplayer-<?php print $params['template']; ?>-fullscreen-inner ui-state-default"></div>
+        </div>
+        <div class="minplayer-<?php print $params['template']; ?>-volume">
+          <a class="minplayer-<?php print $params['template']; ?>-volume-mute minplayer-<?php print $params['template']; ?>-button ui-state-default ui-corner-all" title="Mute">
+            <span class="ui-icon ui-icon-volume-on"></span>
+          </a>
+          <a class="minplayer-<?php print $params['template']; ?>-volume-unmute minplayer-<?php print $params['template']; ?>-button ui-state-default ui-corner-all" title="Unmute">
+            <span class="ui-icon ui-icon-volume-off"></span>
+          </a>
+          <div class="minplayer-<?php print $params['template']; ?>-volume-slider"></div>
+        </div>
+      </div>
+      <div class="minplayer-<?php print $params['template']; ?>-controls-mid">
+        <div class="minplayer-<?php print $params['template']; ?>-seek">
+          <div class="minplayer-<?php print $params['template']; ?>-progress ui-state-default"></div>
+        </div>
+      </div>
+    </div>
+    <div class="minplayer-<?php print $params['template']; ?>-logo"></div>
+    <div class="minplayer-<?php print $params['template']; ?>-error"></div>
+    <div class="minplayer-<?php print $params['template']; ?>-display ui-widget-content"></div>
+  </div>
+  <div class="osmplayer-<?php print $params['template']; ?>-playlist">
+    <div class="osmplayer-<?php print $params['template']; ?>-hide-show-playlist ui-state-default">
+      <span class="ui-icon"></span>
+    </div>
+    <div class="minplayer-<?php print $params['template']; ?>-loader-wrapper">
+      <div class="minplayer-<?php print $params['template']; ?>-loader"></div>
+    </div>
+    <div class="osmplayer-<?php print $params['template']; ?>-playlist-scroll ui-widget-content">
+      <div class="osmplayer-<?php print $params['template']; ?>-playlist-list"></div>
+    </div>
+    <div class="osmplayer-<?php print $params['template']; ?>-playlist-pager ui-widget-header">
+      <div class="osmplayer-<?php print $params['template']; ?>-playlist-pager-left">
+        <a href="#" class="osmplayer-<?php print $params['template']; ?>-playlist-pager-link osmplayer-<?php print $params['template']; ?>-playlist-pager-prevpage minplayer-<?php print $params['template']; ?>-button ui-state-default ui-corner-all">
+          <span class="ui-icon ui-icon-circle-triangle-w"></span>
+        </a>
+      </div>
+      <div class="osmplayer-<?php print $params['template']; ?>-playlist-pager-right">
+        <a href="#" class="osmplayer-<?php print $params['template']; ?>-playlist-pager-link osmplayer-<?php print $params['template']; ?>-playlist-pager-nextpage minplayer-<?php print $params['template']; ?>-button ui-state-default ui-corner-all">
+          <span class="ui-icon ui-icon-circle-triangle-e"></span>
+        </a>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/public/admin/js/osmplayer/templates/simpleblack/css/images/busy.gif b/public/admin/js/osmplayer/templates/simpleblack/css/images/busy.gif
new file mode 100644
index 0000000000000000000000000000000000000000..bd6dd974121f17d5c4dd79a8a579db1061166c72
Binary files /dev/null and b/public/admin/js/osmplayer/templates/simpleblack/css/images/busy.gif differ
diff --git a/public/admin/js/osmplayer/templates/simpleblack/css/images/mask.png b/public/admin/js/osmplayer/templates/simpleblack/css/images/mask.png
new file mode 100644
index 0000000000000000000000000000000000000000..00ac71b07c59d36a06dd0487383f9aaa7d57a775
Binary files /dev/null and b/public/admin/js/osmplayer/templates/simpleblack/css/images/mask.png differ
diff --git a/public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_audioslidebarbg.png b/public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_audioslidebarbg.png
new file mode 100644
index 0000000000000000000000000000000000000000..9a86971461c338dcd19db6020ba2388be4716a35
Binary files /dev/null and b/public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_audioslidebarbg.png differ
diff --git a/public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_back.png b/public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_back.png
new file mode 100644
index 0000000000000000000000000000000000000000..1db313531e08bad14893077e05f35f3e8c34ce85
Binary files /dev/null and b/public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_back.png differ
diff --git a/public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_bigplay.png b/public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_bigplay.png
new file mode 100644
index 0000000000000000000000000000000000000000..0de2df44fe8290fbfcbcb92d1fbe13fdc17189bc
Binary files /dev/null and b/public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_bigplay.png differ
diff --git a/public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_black40.png b/public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_black40.png
new file mode 100644
index 0000000000000000000000000000000000000000..0d0a76471f2862c795474941aec0e83f2cb59ecf
Binary files /dev/null and b/public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_black40.png differ
diff --git a/public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_blue20.png b/public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_blue20.png
new file mode 100644
index 0000000000000000000000000000000000000000..3559a57c6a1678a4c9983b420d2b1b74e9591f70
Binary files /dev/null and b/public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_blue20.png differ
diff --git a/public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_buttonaudioslidebar.png b/public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_buttonaudioslidebar.png
new file mode 100644
index 0000000000000000000000000000000000000000..a71654b9fcb86a66aaea8403a2127f8a15541cdd
Binary files /dev/null and b/public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_buttonaudioslidebar.png differ
diff --git a/public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_buttoncontroler.png b/public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_buttoncontroler.png
new file mode 100644
index 0000000000000000000000000000000000000000..92a7e70b969019c76a5de9fb601e569ba7f1339f
Binary files /dev/null and b/public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_buttoncontroler.png differ
diff --git a/public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_buttoninfo.png b/public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_buttoninfo.png
new file mode 100644
index 0000000000000000000000000000000000000000..0d2018ee2e87d4f35d65dc058eb48464813db2a2
Binary files /dev/null and b/public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_buttoninfo.png differ
diff --git a/public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_buttonpause.png b/public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_buttonpause.png
new file mode 100644
index 0000000000000000000000000000000000000000..4d3ef5a479aa9970491bbb6bf8df44e37de6ca52
Binary files /dev/null and b/public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_buttonpause.png differ
diff --git a/public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_buttonplay.png b/public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_buttonplay.png
new file mode 100644
index 0000000000000000000000000000000000000000..aace68a2378aecb8c32bb8bdd40dafba8962872c
Binary files /dev/null and b/public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_buttonplay.png differ
diff --git a/public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_buttonresizescreen.png b/public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_buttonresizescreen.png
new file mode 100644
index 0000000000000000000000000000000000000000..69aa1a290d06e5c01b85132b55b6c2a1512a6435
Binary files /dev/null and b/public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_buttonresizescreen.png differ
diff --git a/public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_buttonsound.png b/public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_buttonsound.png
new file mode 100644
index 0000000000000000000000000000000000000000..8c898f587645f11842394e8ec9e24b60ecf6e884
Binary files /dev/null and b/public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_buttonsound.png differ
diff --git a/public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_close.png b/public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_close.png
new file mode 100644
index 0000000000000000000000000000000000000000..9ed8c2e70b1de99fe0f4c8e1548931f29b7d3a66
Binary files /dev/null and b/public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_close.png differ
diff --git a/public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_controlerbarBg.png b/public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_controlerbarBg.png
new file mode 100644
index 0000000000000000000000000000000000000000..ffb7ceb7a4986160105f19e03465cb6075e26dcb
Binary files /dev/null and b/public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_controlerbarBg.png differ
diff --git a/public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_forward.png b/public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_forward.png
new file mode 100644
index 0000000000000000000000000000000000000000..d89f122da0130fed91b6a660085059cc795f1b56
Binary files /dev/null and b/public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_forward.png differ
diff --git a/public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_infobox.png b/public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_infobox.png
new file mode 100644
index 0000000000000000000000000000000000000000..087d263f1815a8c4fcd14455827dd37835bee4f0
Binary files /dev/null and b/public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_infobox.png differ
diff --git a/public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_logo.png b/public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..05b62c82697a5a5bad077eb0fa08ae1ac141578f
Binary files /dev/null and b/public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_logo.png differ
diff --git a/public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_movie640x360.png b/public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_movie640x360.png
new file mode 100644
index 0000000000000000000000000000000000000000..4e42b428adf0b0aca530726d01f3036998ced959
Binary files /dev/null and b/public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_movie640x360.png differ
diff --git a/public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_moviethumb.png b/public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_moviethumb.png
new file mode 100644
index 0000000000000000000000000000000000000000..ee48fecd73bffb9418b41307331fa501785052f6
Binary files /dev/null and b/public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_moviethumb.png differ
diff --git a/public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_playlistbg.png b/public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_playlistbg.png
new file mode 100644
index 0000000000000000000000000000000000000000..21ee040e931a1c94dae7f9826280c348ea2f4870
Binary files /dev/null and b/public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_playlistbg.png differ
diff --git a/public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_playlistshadow.png b/public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_playlistshadow.png
new file mode 100644
index 0000000000000000000000000000000000000000..d98142bf513e3f23b4f06fb3856ada58fe784d89
Binary files /dev/null and b/public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_playlistshadow.png differ
diff --git a/public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_playlisttitlebg.png b/public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_playlisttitlebg.png
new file mode 100644
index 0000000000000000000000000000000000000000..52632b95bee81743dcc027953e21d2f0f93da1ed
Binary files /dev/null and b/public/admin/js/osmplayer/templates/simpleblack/css/images/mediafront_playlisttitlebg.png differ
diff --git a/public/admin/js/osmplayer/templates/simpleblack/css/osmplayer_simpleblack.css b/public/admin/js/osmplayer/templates/simpleblack/css/osmplayer_simpleblack.css
new file mode 100755
index 0000000000000000000000000000000000000000..cea37d7b672b170cc1807f8b625cb90ca0bc7792
--- /dev/null
+++ b/public/admin/js/osmplayer/templates/simpleblack/css/osmplayer_simpleblack.css
@@ -0,0 +1,405 @@
+#mediaplayer {
+  position:relative;
+  background:#000;
+  border:1px solid #333;
+  font-family:"Trebuchet MS", Helvetica, sans-serif;
+  -moz-box-shadow:0px 10px 20px #666;/*no-important moz*/
+  -webkit-box-shadow:0px 10px 20px #666;/*no-important chrome*/
+}
+
+#mediaplayer img {
+  border:0;
+}
+
+#mediaplayer_display {
+  background-color:#000;
+  width:100%;
+  height:100%;
+  z-index:400;
+  position:absolute;
+}
+
+#mediaplayer_minplayer.fullscreen #mediaplayer_display, #mediaplayer_minplayer.fullscreen #mediaplayer_preview {
+  position: fixed;
+  left: 0;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  overflow: hidden;
+  z-index:1000;
+  width: 100%;
+  height: 100%;
+}
+
+#mediaplayer_minplayer.fullscreen #mediaplayer_preview {
+  z-index:1001;
+}
+
+#mediaplayer_minplayer.nomedia #mediaplayer_display {
+  display:none;
+}
+
+/*--------------------------- Media Fields ---------------------------*/
+.mediafield {
+  margin:5px;
+  color:#ddd;
+}
+
+
+/*--------------------------- Play Loader ---------------------------*/
+#mediaplayer_play_loader {
+  background:url(images/mask.png);
+  display: table-cell;
+  vertical-align:middle;
+  position:absolute;
+  width:100%;
+  height:100%;
+  cursor:pointer;
+}
+
+#mediaplayer_minplayer.fullscreen #mediaplayer_play_loader {
+  position:fixed;
+  top:0;
+  left:0;
+}
+
+#mediaplayer_preview {
+  background-color:#000;
+  position:absolute;
+  width:100%;
+  height:100%;
+  z-index:401;
+}
+
+#mediaplayer_bigPlay {
+  width:174px;
+  height:174px;
+  position: absolute;
+  top: 50%;
+  left: 50%;
+  margin: -87px 0 0 -87px;
+  text-align:center;
+  vertical-align:center;
+  z-index:402;
+  background: url(images/mediafront_bigplay.png) no-repeat;
+}
+
+#mediaplayer_busy {
+  width:32px;
+  height:32px;
+  position: absolute;
+  top: 50%;
+  left: 50%;
+  margin: -16px 0 0 -16px;
+  text-align:center;
+  vertical-align:center;
+  z-index:403;
+  background: url(images/busy.gif) no-repeat;
+}
+
+/*--------------------------- control bar ---------------------------*/
+#mediaplayer_control {
+  z-index:403;
+  position:absolute;
+  bottom:10px;
+  background:url(images/mediafront_controlerbarBg.png) center repeat-x;
+  height:36px;
+  width:100%;
+}
+
+#mediaplayer_minplayer.nomedia #mediaplayer_control {
+  display:none;
+}
+
+#mediaplayer_minplayer.fullscreen #mediaplayer_control {
+  position: fixed;
+  left:0;
+  z-index:1010;
+}
+
+#mediaplayer_control span {
+  display:none;
+}
+
+#mediaplayer_controlLeft {
+  float:left;
+  width:70px;
+  height:36px;
+}
+
+#mediaplayer_controlRight {
+  float:right;
+  width:100px;
+  height:36px;
+}
+
+.mediaplayer_controlspace {
+  margin:9px 3px 0;
+}
+
+/*---------------------------progress bar---------------------------*/
+#mediaplayer_seekBar {
+  background: url(images/mediafront_black40.png);
+  height:27px;
+  margin:5px 104px 0 70px;
+  border-top: none;
+  border-bottom: none;
+  border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+}
+#mediaplayer_seekProgress {
+  background: url(images/mediafront_black40.png);
+  position:absolute;
+  z-index:404;
+  height:27px;
+}
+#mediaplayer_seekBar .ui-slider-range {
+  background: url(images/mediafront_blue20.png);
+  position:absolute;
+  z-index:405;
+  height:27px;
+}
+#mediaplayer_seekBar .ui-slider-handle {
+  background:url(images/mediafront_buttoncontroler.png) no-repeat 0 0;
+  position:absolute;
+  z-index:409;
+  width:8px;
+  height:27px;
+  top:-0.1em;
+  border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+}
+
+/*--------------------------- playing time ---------------------------*/
+#mediafront_playtime, #mediafront_totaltime {
+  color:#FFF;
+  float:left;
+  position:relative;
+  font-size:12px;
+}
+
+/*--------------------------- play | pause ---------------------------*/
+#mediaplayer_playPause {
+  float:left;
+  position:relative;
+  height:20px;
+  width:19px;
+}
+#mediaplayer_play, #mediaplayer_pause {
+  position:absolute;
+  z-index:404;
+  height:20px;
+  width:19px;
+}
+#mediaplayer_play {
+  background:url(images/mediafront_buttonplay.png) no-repeat 0 0;
+}
+#mediaplayer_play:hover {
+  background:url(images/mediafront_buttonplay.png) no-repeat 0 -20px;
+}
+#mediaplayer_pause {
+  background:url(images/mediafront_buttonpause.png) no-repeat 0 0;
+}
+#mediaplayer_pause:hover {
+  background:url(images/mediafront_buttonpause.png) no-repeat 0 -20px;
+}
+
+/*-------------------------info buttons---------------------------*/
+#mediafront_information {
+  float:left;
+  position:relative;
+  width:22px;
+  height:23px;
+  margin-top:7px;
+}
+#mediafront_menuButton {
+  position:absolute;
+  z-index:404;
+  width:22px;
+  height:23px;
+  background:url(images/mediafront_buttoninfo.png) no-repeat 0 0;
+}
+#mediafront_menuButton:hover {
+  background:url(images/mediafront_buttoninfo.png) no-repeat center -22px;
+}
+
+/*--------------------------- fullscreen button ---------------------------*/
+#mediafront_resizeScreen {
+  position:absolute;
+  z-index:404;
+  position:absolute;
+  bottom:6px;
+  right:0px;
+  width:33px;
+  height:24px;
+}
+
+#mediaplayer_minplayer.nomedia #mediafront_resizeScreen {
+  bottom:23px;
+  right:30px;
+}
+
+#mediaplayer_minplayer.fullscreen #mediafront_resizeScreen {
+  position: fixed;
+  right:0px;
+  bottom:16px;
+  z-index:1012;
+}
+
+#mediaplayer_minplayer.fullscreen.nomedia #mediafront_resizeScreen {
+  position: fixed;
+  right:0px;
+  bottom:5px;
+  z-index:1012;
+}
+
+#mediafront_resizeScreen span {
+  display:none;
+}
+
+#mediafront_resize_to_fullScreen, #mediafront_resize_to_normalScreen {
+  position:absolute;
+  z-index:404;
+  width:33px;
+  height:24px;
+}
+#mediafront_resize_to_fullScreen {
+  background: url(images/mediafront_buttonresizescreen.png) no-repeat 0 0;
+}
+#mediafront_resize_to_fullScreen:hover {
+  background:url(images/mediafront_buttonresizescreen.png) no-repeat 0 -24px;
+}
+#mediafront_resize_to_normalScreen {
+  background:url(images/mediafront_buttonresizescreen.png) no-repeat 0 -24px;
+}
+#mediafront_resize_to_normalScreen:hover {
+  background:url(images/mediafront_buttonresizescreen.png) no-repeat 0 0;
+}
+
+/*--------------------------- volume ---------------------------*/
+#mediafront_audio {
+  float:left;
+  position:relative;
+  width:18px;
+  height:21px;
+  margin-top:7px;
+}
+#mediaplayer_audioButton {
+  position:absolute;
+  z-index:404;
+  width:18px;
+  height:21px;
+  background: url(images/mediafront_buttonsound.png) center 0 no-repeat;
+}
+#mediaplayer_audioButton:hover {
+  background: url(images/mediafront_buttonsound.png) center -21px no-repeat;
+}
+#mediaplayer_audioBar {
+  background:url(images/mediafront_audioslidebarbg.png) no-repeat 0 0;
+  position:absolute;
+  z-index:404;
+  height:72px;
+  width:39px;
+  margin-top:-76px;
+  margin-left:-10px;
+  border:none;
+  border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+}
+
+#mediaplayer_audioBar .ui-slider-range {
+  background: url(images/mediafront_black40.png);
+  position:absolute;
+  font-size:0px;
+  z-index:405;
+  bottom:0px;
+  width:26px;
+  left:5px;
+}
+#mediaplayer_audioBar .ui-slider-handle {
+  background:url(images/mediafront_buttonaudioslidebar.png) no-repeat 0 0;
+  width:27px;
+  height:8px;
+  position:absolute;
+  z-index:406;
+  left:5px;
+  border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+}
+
+/*--------------------------- menu ---------------------------*/
+#mediaplayer_menu {
+  position:absolute;
+  display:none;
+  width:300px;
+  height:150px;
+  z-index:420;
+  top: 50%;
+  left: 50%;
+  margin: -75px 0 0 -150px;
+  text-align:center;
+  vertical-align:center;
+  background:url(images/mediafront_infobox.png) repeat-x;
+  -moz-box-shadow:0px 5px 15px #000;/*no-important moz*/
+  -webkit-box-shadow:0px 5px 15px #000;/*no-important chrome*/
+}
+#mediaplayer_menu.fullscreen {
+  position: fixed;
+  top: 50%;
+  left: 50%;
+}
+
+#mediaplayer_menuHeader {
+  text-align:left;
+  padding:9px 8px 8px 11px;
+  border-bottom:1px solid #000;
+  height:20px;
+}
+#mediaplayer_menuHeader div {
+  float:left;
+  border:1px solid #dbdbdb;
+  margin:0 1px;
+}
+#mediaplayer_menuHeader div a {
+  color:#dbdbdb;
+  text-decoration:none;
+  padding:0px 12px;
+}
+#mediaplayer_menuHeader div a:hover, #mediaplayer_menuHeader div.active a {
+  color:#000;
+  background:#dbdbdb;
+}
+#mediaplayer_menuHeader div#mediaplayer_menuClose {
+  background:url(images/mediafront_close.png) no-repeat;
+  height:19px;
+  width:19px;
+  float:right;
+  border:0;
+}
+.mediaplayer_info {
+  text-align:left;
+  padding:6px 8px 8px 11px;
+  color:#dbdbdb;
+  border-top:1px solid #666;
+}
+
+/*---------------------------logo---------------------------*/
+.medialogo {
+  position:absolute;
+  width:49px;
+  height:15px;
+  bottom:45px;
+  left:5px;
+  z-index:500;
+}
+
+#mediaplayer_minplayer.fullscreen .medialogo {
+  position:fixed;
+  z-index:1500;
+  left:5px;
+  bottom:45px;
+}
diff --git a/public/admin/js/osmplayer/templates/simpleblack/js/osmplayer.controller.simpleblack.js b/public/admin/js/osmplayer/templates/simpleblack/js/osmplayer.controller.simpleblack.js
new file mode 100644
index 0000000000000000000000000000000000000000..89d672d1323b910a1173d336b0143ca498ed1811
--- /dev/null
+++ b/public/admin/js/osmplayer/templates/simpleblack/js/osmplayer.controller.simpleblack.js
@@ -0,0 +1,102 @@
+(function(template, osmplayer) {
+
+  /** The osmplayer namespace. */
+  var osmplayer = osmplayer || {};
+
+  // Define the controller object.
+  osmplayer.controller = osmplayer.controller || {};
+
+  /**
+   * Constructor for the minplayer.controller
+   */
+  osmplayer.controller[template] = function(context, options) {
+
+    // Derive from default controller
+    minplayer.controller.call(this, context, options);
+  };
+
+  /** Derive from controller. */
+  osmplayer.controller[template].prototype = new minplayer.controller();
+  osmplayer.controller[template].prototype.constructor = osmplayer.controller[template];
+
+  /**
+   * @see minplayer.plugin#construct
+   */
+  osmplayer.controller[template].prototype.construct = function() {
+    minplayer.controller.prototype.construct.call(this);
+    if (!this.options.controllerOnly) {
+      this.get('player', function(player) {
+        this.get('media', function(media) {
+          if (!media.hasController()) {
+            minplayer.showThenHide(this.display, 5000, function(shown) {
+              var op = shown ? 'addClass' : 'removeClass';
+              player.display[op]('with-controller');
+            });
+          }
+          else {
+            player.display.addClass('with-controller');
+          }
+        });
+      });
+    }
+  }
+
+  /**
+   * Return the display for this plugin.
+   */
+  osmplayer.controller[template].prototype.getDisplay = function() {
+
+    // See if we need to build out the controller.
+    if (this.options.build) {
+
+      // Prepend the control template.
+      jQuery('#mediaplayer_minplayer', this.context).append('\
+      <div id="mediaplayer_control">\
+        <div id="mediaplayer_controlLeft">\
+          <div id="mediaplayer_playPause" class="mediaplayer_controlspace">\
+            <div id="mediaplayer_play" class="on"><span>play</span></div>\
+            <div id="mediaplayer_pause" class="off"><span>pause</span></div>\
+          </div>\
+          <div id="mediafront_playtime" class="mediaplayer_controlspace">00:00</div>\
+        </div>\
+        <div id="mediaplayer_controlRight">\
+          <a id="mediafront_resizeScreen" class="mediaplayerlink mediaplayer_controlspace" href="#fullscreen">\
+            <div id="mediafront_resize_to_fullScreen" class="on"><span>make full screen</span></div>\
+            <div id="mediafront_resize_to_normalScreen" class="off"><span>make normal screen</span></div>\
+          </a>\
+          <div id="mediafront_totaltime" class="mediaplayer_controlspace">00:00</div>\
+          <div id="mediafront_audio" class="mediaplayer_controlspace">\
+             <div id="mediaplayer_audioButton"></div>\
+             <div id="mediaplayer_audioBar"></div>\
+          </div>\
+          <a id="mediafront_information" class="mediaplayerlink mediaplayer_controlspace" href="#menu">\
+            <div id="mediafront_menuButton"><span>information</span></div>\
+          </a>\
+        </div>\
+        <div id="mediaplayer_seekBar">\
+          <div id="mediaplayer_seekProgress"></div>\
+        </div>\
+      </div>');
+    }
+
+    // Let our template know we have a controller.
+    this.context.addClass('with-controller');
+    return jQuery('#mediaplayer_control', this.context);
+  }
+
+  // Return the elements
+  osmplayer.controller[template].prototype.getElements = function() {
+    var elements = minplayer.controller.prototype.getElements.call(this);
+    return jQuery.extend(elements, {
+      play: jQuery('#mediaplayer_play', this.display),
+      pause: jQuery('#mediaplayer_pause', this.display),
+      fullscreen: jQuery('#mediafront_resizeScreen', this.display),
+      seek: jQuery('#mediaplayer_seekBar', this.display),
+      progress: jQuery('#mediaplayer_seekProgress', this.display),
+      volume: jQuery('#mediaplayer_audioBar', this.display),
+      mute: jQuery('#mediaplayer_audioButton', this.display),
+      timer: jQuery('#mediafront_playtime', this.display),
+      duration: jQuery('#mediafront_totaltime', this.display)
+    });
+  };
+})('simpleblack', osmplayer);
diff --git a/public/admin/js/osmplayer/templates/simpleblack/js/osmplayer.playLoader.simpleblack.js b/public/admin/js/osmplayer/templates/simpleblack/js/osmplayer.playLoader.simpleblack.js
new file mode 100644
index 0000000000000000000000000000000000000000..289d962a7d97d8c86444f7a13a9e91e9d1d76a4f
--- /dev/null
+++ b/public/admin/js/osmplayer/templates/simpleblack/js/osmplayer.playLoader.simpleblack.js
@@ -0,0 +1,45 @@
+(function(template, osmplayer) {
+
+  /** The osmplayer namespace. */
+  var osmplayer = osmplayer || {};
+
+  // Define the busy object.
+  osmplayer.playLoader = osmplayer.playLoader || {};
+
+  // constructor.
+  osmplayer.playLoader[template] = function(context, options) {
+
+    // Derive from playLoader
+    minplayer.playLoader.call(this, context, options);
+  };
+
+  // Define the prototype for all controllers.
+  osmplayer.playLoader[template].prototype = new minplayer.playLoader();
+  osmplayer.playLoader[template].prototype.constructor = osmplayer.playLoader[template];
+
+  /**
+   * Return the display for this plugin.
+   */
+  osmplayer.playLoader[template].prototype.getDisplay = function() {
+    if (this.options.build) {
+      jQuery('#mediaplayer_minplayer', this.context).prepend('\
+      <div id="mediaplayer_play_loader">\
+        <div id="mediaplayer_busy"></div>\
+        <div id="mediaplayer_bigPlay"></div>\
+        <div id="mediaplayer_preview"></div>\
+      </div>');
+    }
+    return jQuery('#mediaplayer_play_loader', this.context);
+  }
+
+  // Return the elements
+  osmplayer.playLoader[template].prototype.getElements = function() {
+    var elements = minplayer.playLoader.prototype.getElements.call(this);
+    return jQuery.extend(elements, {
+      busy:jQuery('#mediaplayer_busy', this.display),
+      bigPlay:jQuery('#mediaplayer_bigPlay', this.display),
+      preview:jQuery('#mediaplayer_preview', this.display)
+    });
+  };
+})('simpleblack', osmplayer);
+
diff --git a/public/admin/js/osmplayer/templates/simpleblack/js/osmplayer.simpleblack.js b/public/admin/js/osmplayer/templates/simpleblack/js/osmplayer.simpleblack.js
new file mode 100644
index 0000000000000000000000000000000000000000..6aeabc4ea900f8957cdd57d1fd2397c93fafe71d
--- /dev/null
+++ b/public/admin/js/osmplayer/templates/simpleblack/js/osmplayer.simpleblack.js
@@ -0,0 +1,88 @@
+(function(template, osmplayer) {
+
+  /** The osmplayer namespace. */
+  var osmplayer = osmplayer || {};
+
+  // templated player.
+  osmplayer[template] = function(context, options) {
+
+    // Make sure we provide default options...
+    this.options = jQuery.extend({
+      controllerOnly: false
+    }, this.options);
+
+    // Derive from osmplayer.
+    osmplayer.call(this, context, options);
+  };
+
+  /**
+   * Define this template prototype.
+   */
+  osmplayer[template].prototype = new osmplayer();
+  osmplayer[template].prototype.constructor = osmplayer[template];
+
+  /**
+   * The player constructor.
+   */
+  osmplayer[template].prototype.construct = function() {
+    osmplayer.prototype.construct.call(this);
+    if (this.options.controllerOnly) {
+      this.display.addClass('controller-only');
+    }
+  };
+
+  /**
+   * Return the display for this plugin.
+   */
+  osmplayer[template].prototype.getDisplay = function() {
+
+    // If this is the bottom element, then we need to build.
+    if (this.context.children().length == 0) {
+
+      // Build out the player provided the base tag.
+      this.context = this.context.attr({
+        'id': this.options.id + '-player',
+        'class': 'mediaplayer-' + template + '-media'
+      })
+      .wrap(jQuery(document.createElement('div')).attr({
+        'id': 'mediaplayer_display'
+      })).parent('#mediaplayer_display')
+      .wrap(jQuery(document.createElement('div')).attr({
+        'id': 'mediaplayer_minplayer'
+      })).parent('#mediaplayer_minplayer')
+      .prepend('\
+        <div id="mediaplayer_busy"></div>\
+        <div id="mediaplayer_bigPlay"></div>\
+        <div id="mediaplayer_preview"></div>\
+      ')
+      .wrap(jQuery(document.createElement('div')).attr({
+        'id': 'mediaplayer_node'
+      })).parent('#mediaplayer_node')
+      .wrap(jQuery(document.createElement('div')).attr({
+        'id': 'mediaplayer'
+      })).parent('#mediaplayer')
+      .wrap(jQuery(document.createElement('div')).attr({
+        'id': this.options.id,
+        'class': 'osmplayer-' + template + ' player-ui'
+      })).parent('.osmplayer-' + template);
+
+      // Mark a flag that says this display needs to be built.
+      this.options.build = true;
+    }
+
+    return this.context;
+  }
+
+  // Get the elements for this player.
+  osmplayer[template].prototype.getElements = function() {
+    var elements = osmplayer.prototype.getElements.call(this);
+    this.display.width(this.options.width);
+    this.display.height(this.options.height);
+    return jQuery.extend(elements, {
+      player:this.display,
+      minplayer: jQuery('#mediaplayer_minplayer', this.display),
+      display:jQuery('#mediaplayer_display', this.display),
+      media:jQuery('.minplayer-' + template + '-media', this.display)
+    });
+  };
+})('simpleblack', osmplayer);
diff --git a/public/admin/js/osmplayer/templates/simpleblack/osmplayer_simpleblack.tpl.php b/public/admin/js/osmplayer/templates/simpleblack/osmplayer_simpleblack.tpl.php
new file mode 100755
index 0000000000000000000000000000000000000000..a645132b067b07605a6a8a169f7b93810c12c458
--- /dev/null
+++ b/public/admin/js/osmplayer/templates/simpleblack/osmplayer_simpleblack.tpl.php
@@ -0,0 +1,37 @@
+<div id="<?php print $params['id']; ?>" class="osmplayer-<?php print $params['template']; ?> player-ui">
+  <div id="mediaplayer" style="height:<?php print $params['height']; ?>">
+    <div id="mediaplayer_node">
+      <div id="mediaplayer_minplayer">
+        <div id="mediaplayer_play_loader">
+          <div id="mediaplayer_busy"></div>
+          <div id="mediaplayer_bigPlay"></div>
+          <div id="mediaplayer_preview"></div>
+        </div>
+        <div id="mediaplayer_display"></div>
+        <div id="mediaplayer_control">
+          <div id="mediaplayer_controlLeft">
+            <div id="mediaplayer_playPause" class="mediaplayer_controlspace">
+              <div id="mediaplayer_play" class="on"><span>play</span></div>
+              <div id="mediaplayer_pause" class="off"><span>pause</span></div>
+            </div>
+            <div id="mediafront_playtime" class="mediaplayer_controlspace">00:00</div>
+          </div>
+          <div id="mediaplayer_controlRight">
+            <a id="mediafront_resizeScreen" class="mediaplayerlink mediaplayer_controlspace" href="#fullscreen">
+              <div id="mediafront_resize_to_fullScreen" class="on"><span>make full screen</span></div>
+              <div id="mediafront_resize_to_normalScreen" class="off"><span>make normal screen</span></div>
+            </a>
+            <div id="mediafront_totaltime" class="mediaplayer_controlspace">00:00</div>
+            <div id="mediafront_audio" class="mediaplayer_controlspace">
+               <div id="mediaplayer_audioButton"></div>
+               <div id="mediaplayer_audioBar"></div>
+            </div>
+          </div>
+          <div id="mediaplayer_seekBar">
+            <div id="mediaplayer_seekProgress"></div>
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
diff --git a/public/admin/js/osmplayer/version.txt b/public/admin/js/osmplayer/version.txt
new file mode 100755
index 0000000000000000000000000000000000000000..f1ff8548958db1516552a3cb2d47aad47a20e37d
--- /dev/null
+++ b/public/admin/js/osmplayer/version.txt
@@ -0,0 +1 @@
+2.0-alpha1