├── .gitignore ├── .gitmodules ├── Gruntfile.js ├── LICENSE.TXT ├── README.md ├── bin ├── osmplayer.compressed.js ├── osmplayer.js └── osmplayer.min.js ├── doc ├── classes.list.html ├── files.html ├── global.html ├── global.html#osmplayer ├── img │ ├── glyphicons-halflings-white.png │ └── glyphicons-halflings.png ├── index.html ├── osmplayer.js.html ├── osmplayer.pager.html ├── osmplayer.pager.js.html ├── osmplayer.parser.asx.js.html ├── osmplayer.parser.default.js.html ├── osmplayer.parser.rss.js.html ├── osmplayer.parser.xspf.js.html ├── osmplayer.parser.youtube.js.html ├── osmplayer.playlist.html ├── osmplayer.playlist.js.html ├── osmplayer.teaser.html ├── osmplayer.teaser.js.html ├── prototype..html ├── scripts │ ├── URI.js │ ├── bootstrap-dropdown.js │ ├── bootstrap-tab.js │ ├── docstrap.lib.js │ ├── jquery.localScroll.js │ ├── jquery.min.js │ ├── jquery.scrollTo.js │ ├── jquery.sunlight.js │ ├── prettify │ │ ├── Apache-License-2.0.txt │ │ ├── jquery.min.js │ │ ├── lang-css.js │ │ └── prettify.js │ ├── sunlight-plugin.doclinks.js │ ├── sunlight-plugin.linenumbers.js │ ├── sunlight-plugin.menu.js │ ├── sunlight.javascript.js │ ├── sunlight.js │ └── toc.js ├── styles │ ├── darkstrap.css │ ├── prettify-tomorrow.css │ ├── site.amelia.css │ ├── site.cerulean.css │ ├── site.cosmo.css │ ├── site.cyborg.css │ ├── site.darkstrap.css │ ├── site.flatly.css │ ├── site.journal.css │ ├── site.readable.css │ ├── site.simplex.css │ ├── site.slate.css │ ├── site.spacelab.css │ ├── site.spruce.css │ ├── site.superhero.css │ ├── site.united.css │ ├── sunlight.dark.css │ └── sunlight.default.css └── symbols │ ├── _global_.html │ ├── jQuery.fn.minplayer.html │ ├── jQuery.fn.osmplayer.html │ ├── minplayer.async.html │ ├── minplayer.compatibility.html │ ├── minplayer.display.html │ ├── minplayer.file.html │ ├── minplayer.flags.html │ ├── minplayer.image.html │ ├── minplayer.players.base.html │ ├── minplayer.players.flash.html │ ├── minplayer.players.html5.html │ ├── minplayer.players.kaltura.html │ ├── minplayer.players.limelight.html │ ├── minplayer.players.minplayer.html │ ├── minplayer.players.vimeo.html │ ├── minplayer.players.youtube.html │ ├── minplayer.plugin.html │ ├── osmplayer.html │ ├── osmplayer.pager.html │ ├── osmplayer.playlist.html │ ├── osmplayer.scroll.html │ ├── osmplayer.teaser.html │ └── src │ ├── minplayer_src_minplayer.async.js.html │ ├── minplayer_src_minplayer.compatibility.js.html │ ├── minplayer_src_minplayer.controller.js.html │ ├── minplayer_src_minplayer.display.js.html │ ├── minplayer_src_minplayer.file.js.html │ ├── minplayer_src_minplayer.flags.js.html │ ├── minplayer_src_minplayer.image.js.html │ ├── minplayer_src_minplayer.js.html │ ├── minplayer_src_minplayer.playLoader.js.html │ ├── minplayer_src_minplayer.players.base.js.html │ ├── minplayer_src_minplayer.players.flash.js.html │ ├── minplayer_src_minplayer.players.html5.js.html │ ├── minplayer_src_minplayer.players.kaltura.js.html │ ├── minplayer_src_minplayer.players.limelight.js.html │ ├── minplayer_src_minplayer.players.minplayer.js.html │ ├── minplayer_src_minplayer.players.vimeo.js.html │ ├── minplayer_src_minplayer.players.youtube.js.html │ ├── minplayer_src_minplayer.plugin.js.html │ ├── src_osmplayer.js.html │ ├── src_osmplayer.pager.js.html │ ├── src_osmplayer.parser.asx.js.html │ ├── src_osmplayer.parser.default.js.html │ ├── src_osmplayer.parser.rss.js.html │ ├── src_osmplayer.parser.xspf.js.html │ ├── src_osmplayer.parser.youtube.js.html │ ├── src_osmplayer.playlist.js.html │ ├── src_osmplayer.scroll.js.html │ └── src_osmplayer.teaser.js.html ├── index.html ├── jquery-ui ├── Aristo │ ├── Aristo.css │ └── images │ │ ├── bg_fallback.png │ │ ├── icon_sprite.png │ │ ├── progress_bar.gif │ │ ├── slider_handles.png │ │ ├── ui-icons_222222_256x240.png │ │ └── ui-icons_454545_256x240.png ├── README.md ├── absolution │ ├── absolution.css │ └── images │ │ ├── ajax-loader.gif │ │ ├── ajax-loader.png │ │ ├── corner.png │ │ ├── icons-18-black.png │ │ ├── icons-18-white.png │ │ ├── icons-36-black.png │ │ ├── icons-36-white.png │ │ ├── selector.png │ │ ├── ui-icons_222222_256x240.png │ │ ├── ui-icons_eeeeee_256x240.png │ │ └── ui-icons_ffffff_256x240.png ├── black-tie │ ├── images │ │ ├── animated-overlay.gif │ │ ├── ui-bg_diagonals-thick_8_333333_40x40.png │ │ ├── ui-bg_flat_65_ffffff_40x100.png │ │ ├── ui-bg_glass_40_111111_1x400.png │ │ ├── ui-bg_glass_55_1c1c1c_1x400.png │ │ ├── ui-bg_highlight-hard_100_f9f9f9_1x100.png │ │ ├── ui-bg_highlight-hard_40_aaaaaa_1x100.png │ │ ├── ui-bg_highlight-soft_50_aaaaaa_1x100.png │ │ ├── ui-bg_inset-hard_45_cd0a0a_1x100.png │ │ ├── ui-bg_inset-hard_55_ffeb80_1x100.png │ │ ├── ui-icons_222222_256x240.png │ │ ├── ui-icons_4ca300_256x240.png │ │ ├── ui-icons_bbbbbb_256x240.png │ │ ├── ui-icons_ededed_256x240.png │ │ ├── ui-icons_ffcf29_256x240.png │ │ └── ui-icons_ffffff_256x240.png │ ├── jquery-ui-1.8.18.custom.css │ └── jquery-ui.css ├── blitzer │ ├── images │ │ ├── animated-overlay.gif │ │ ├── ui-bg_diagonals-thick_75_f3d8d8_40x40.png │ │ ├── ui-bg_dots-small_65_a6a6a6_2x2.png │ │ ├── ui-bg_flat_0_333333_40x100.png │ │ ├── ui-bg_flat_65_ffffff_40x100.png │ │ ├── ui-bg_flat_75_ffffff_40x100.png │ │ ├── ui-bg_glass_55_fbf8ee_1x400.png │ │ ├── ui-bg_highlight-hard_100_eeeeee_1x100.png │ │ ├── ui-bg_highlight-hard_100_f6f6f6_1x100.png │ │ ├── ui-bg_highlight-soft_15_cc0000_1x100.png │ │ ├── ui-icons_004276_256x240.png │ │ ├── ui-icons_cc0000_256x240.png │ │ └── ui-icons_ffffff_256x240.png │ ├── jquery-ui-1.8.18.custom.css │ └── jquery-ui.css ├── cupertino │ ├── images │ │ ├── animated-overlay.gif │ │ ├── ui-bg_diagonals-thick_90_eeeeee_40x40.png │ │ ├── ui-bg_flat_15_cd0a0a_40x100.png │ │ ├── ui-bg_glass_100_e4f1fb_1x400.png │ │ ├── ui-bg_glass_50_3baae3_1x400.png │ │ ├── ui-bg_glass_80_d7ebf9_1x400.png │ │ ├── ui-bg_highlight-hard_100_f2f5f7_1x100.png │ │ ├── ui-bg_highlight-hard_70_000000_1x100.png │ │ ├── ui-bg_highlight-soft_100_deedf7_1x100.png │ │ ├── ui-bg_highlight-soft_25_ffef8f_1x100.png │ │ ├── ui-icons_2694e8_256x240.png │ │ ├── ui-icons_2e83ff_256x240.png │ │ ├── ui-icons_3d80b3_256x240.png │ │ ├── ui-icons_72a7cf_256x240.png │ │ └── ui-icons_ffffff_256x240.png │ ├── jquery-ui-1.8.18.custom.css │ └── jquery-ui.css ├── dark-hive │ ├── images │ │ ├── animated-overlay.gif │ │ ├── ui-bg_flat_30_cccccc_40x100.png │ │ ├── ui-bg_flat_50_5c5c5c_40x100.png │ │ ├── ui-bg_glass_40_ffc73d_1x400.png │ │ ├── ui-bg_highlight-hard_20_0972a5_1x100.png │ │ ├── ui-bg_highlight-soft_33_003147_1x100.png │ │ ├── ui-bg_highlight-soft_35_222222_1x100.png │ │ ├── ui-bg_highlight-soft_44_444444_1x100.png │ │ ├── ui-bg_highlight-soft_80_eeeeee_1x100.png │ │ ├── ui-bg_loop_25_000000_21x21.png │ │ ├── ui-icons_222222_256x240.png │ │ ├── ui-icons_4b8e0b_256x240.png │ │ ├── ui-icons_a83300_256x240.png │ │ ├── ui-icons_cccccc_256x240.png │ │ └── ui-icons_ffffff_256x240.png │ ├── jquery-ui-1.8.18.custom.css │ └── jquery-ui.css ├── dot-luv │ ├── images │ │ ├── animated-overlay.gif │ │ ├── ui-bg_diagonals-thick_15_0b3e6f_40x40.png │ │ ├── ui-bg_dots-medium_30_0b58a2_4x4.png │ │ ├── ui-bg_dots-small_20_333333_2x2.png │ │ ├── ui-bg_dots-small_30_a32d00_2x2.png │ │ ├── ui-bg_dots-small_40_00498f_2x2.png │ │ ├── ui-bg_flat_0_aaaaaa_40x100.png │ │ ├── ui-bg_flat_40_292929_40x100.png │ │ ├── ui-bg_gloss-wave_20_111111_500x100.png │ │ ├── ui-icons_00498f_256x240.png │ │ ├── ui-icons_98d2fb_256x240.png │ │ ├── ui-icons_9ccdfc_256x240.png │ │ └── ui-icons_ffffff_256x240.png │ ├── jquery-ui-1.8.18.custom.css │ └── jquery-ui.css ├── eggplant │ ├── images │ │ ├── animated-overlay.gif │ │ ├── ui-bg_flat_0_aaaaaa_40x100.png │ │ ├── ui-bg_flat_0_eeeeee_40x100.png │ │ ├── ui-bg_flat_55_994d53_40x100.png │ │ ├── ui-bg_flat_55_fafafa_40x100.png │ │ ├── ui-bg_gloss-wave_30_3d3644_500x100.png │ │ ├── ui-bg_highlight-soft_100_dcd9de_1x100.png │ │ ├── ui-bg_highlight-soft_100_eae6ea_1x100.png │ │ ├── ui-bg_highlight-soft_25_30273a_1x100.png │ │ ├── ui-bg_highlight-soft_45_5f5964_1x100.png │ │ ├── ui-icons_454545_256x240.png │ │ ├── ui-icons_734d99_256x240.png │ │ ├── ui-icons_8d78a5_256x240.png │ │ ├── ui-icons_a8a3ae_256x240.png │ │ ├── ui-icons_ebccce_256x240.png │ │ └── ui-icons_ffffff_256x240.png │ ├── jquery-ui-1.8.18.custom.css │ └── jquery-ui.css ├── excite-bike │ ├── images │ │ ├── animated-overlay.gif │ │ ├── ui-bg_diagonals-small_25_c5ddfc_40x40.png │ │ ├── ui-bg_diagonals-thick_20_e69700_40x40.png │ │ ├── ui-bg_diagonals-thick_22_1484e6_40x40.png │ │ ├── ui-bg_diagonals-thick_26_2293f7_40x40.png │ │ ├── ui-bg_flat_0_e69700_40x100.png │ │ ├── ui-bg_flat_0_e6b900_40x100.png │ │ ├── ui-bg_highlight-soft_100_f9f9f9_1x100.png │ │ ├── ui-bg_inset-hard_100_eeeeee_1x100.png │ │ ├── ui-icons_0a82eb_256x240.png │ │ ├── ui-icons_0b54d5_256x240.png │ │ ├── ui-icons_5fa5e3_256x240.png │ │ ├── ui-icons_fcdd4a_256x240.png │ │ └── ui-icons_ffffff_256x240.png │ ├── jquery-ui-1.8.18.custom.css │ └── jquery-ui.css ├── flick │ ├── images │ │ ├── animated-overlay.gif │ │ ├── ui-bg_flat_0_aaaaaa_40x100.png │ │ ├── ui-bg_flat_0_eeeeee_40x100.png │ │ ├── ui-bg_flat_55_ffffff_40x100.png │ │ ├── ui-bg_flat_75_ffffff_40x100.png │ │ ├── ui-bg_glass_65_ffffff_1x400.png │ │ ├── ui-bg_highlight-soft_100_f6f6f6_1x100.png │ │ ├── ui-bg_highlight-soft_25_0073ea_1x100.png │ │ ├── ui-bg_highlight-soft_50_dddddd_1x100.png │ │ ├── ui-icons_0073ea_256x240.png │ │ ├── ui-icons_454545_256x240.png │ │ ├── ui-icons_666666_256x240.png │ │ ├── ui-icons_ff0084_256x240.png │ │ └── ui-icons_ffffff_256x240.png │ ├── jquery-ui-1.8.18.custom.css │ └── jquery-ui.css ├── hot-sneaks │ ├── images │ │ ├── animated-overlay.gif │ │ ├── ui-bg_diagonals-small_40_db4865_40x40.png │ │ ├── ui-bg_diagonals-small_50_93c3cd_40x40.png │ │ ├── ui-bg_diagonals-small_50_ff3853_40x40.png │ │ ├── ui-bg_diagonals-small_75_ccd232_40x40.png │ │ ├── ui-bg_dots-medium_80_ffff38_4x4.png │ │ ├── ui-bg_dots-small_35_35414f_2x2.png │ │ ├── ui-bg_flat_75_ba9217_40x100.png │ │ ├── ui-bg_flat_75_ffffff_40x100.png │ │ ├── ui-bg_white-lines_85_f7f7ba_40x100.png │ │ ├── ui-icons_454545_256x240.png │ │ ├── ui-icons_88a206_256x240.png │ │ ├── ui-icons_c02669_256x240.png │ │ ├── ui-icons_e1e463_256x240.png │ │ ├── ui-icons_ffeb33_256x240.png │ │ └── ui-icons_ffffff_256x240.png │ ├── jquery-ui-1.8.18.custom.css │ └── jquery-ui.css ├── humanity │ ├── images │ │ ├── animated-overlay.gif │ │ ├── ui-bg_flat_75_aaaaaa_40x100.png │ │ ├── ui-bg_glass_100_f5f0e5_1x400.png │ │ ├── ui-bg_glass_25_cb842e_1x400.png │ │ ├── ui-bg_glass_70_ede4d4_1x400.png │ │ ├── ui-bg_highlight-hard_100_f4f0ec_1x100.png │ │ ├── ui-bg_highlight-hard_65_fee4bd_1x100.png │ │ ├── ui-bg_highlight-hard_75_f5f5b5_1x100.png │ │ ├── ui-bg_inset-soft_100_f4f0ec_1x100.png │ │ ├── ui-icons_c47a23_256x240.png │ │ ├── ui-icons_cb672b_256x240.png │ │ ├── ui-icons_f08000_256x240.png │ │ ├── ui-icons_f35f07_256x240.png │ │ ├── ui-icons_ff7519_256x240.png │ │ └── ui-icons_ffffff_256x240.png │ ├── jquery-ui-1.8.18.custom.css │ └── jquery-ui.css ├── mint-choc │ ├── images │ │ ├── animated-overlay.gif │ │ ├── ui-bg_flat_0_aaaaaa_40x100.png │ │ ├── ui-bg_glass_15_5f391b_1x400.png │ │ ├── ui-bg_gloss-wave_20_1c160d_500x100.png │ │ ├── ui-bg_gloss-wave_25_453326_500x100.png │ │ ├── ui-bg_gloss-wave_30_44372c_500x100.png │ │ ├── ui-bg_highlight-soft_20_201913_1x100.png │ │ ├── ui-bg_highlight-soft_20_619226_1x100.png │ │ ├── ui-bg_inset-soft_10_201913_1x100.png │ │ ├── ui-icons_222222_256x240.png │ │ ├── ui-icons_9bcc60_256x240.png │ │ ├── ui-icons_add978_256x240.png │ │ ├── ui-icons_e3ddc9_256x240.png │ │ ├── ui-icons_f1fd86_256x240.png │ │ └── ui-icons_ffffff_256x240.png │ ├── jquery-ui-1.8.18.custom.css │ └── jquery-ui.css ├── overcast │ ├── images │ │ ├── animated-overlay.gif │ │ ├── ui-bg_flat_0_aaaaaa_40x100.png │ │ ├── ui-bg_flat_0_eeeeee_40x100.png │ │ ├── ui-bg_flat_55_c0402a_40x100.png │ │ ├── ui-bg_flat_55_eeeeee_40x100.png │ │ ├── ui-bg_glass_100_f8f8f8_1x400.png │ │ ├── ui-bg_glass_35_dddddd_1x400.png │ │ ├── ui-bg_glass_60_eeeeee_1x400.png │ │ ├── ui-bg_inset-hard_75_999999_1x100.png │ │ ├── ui-bg_inset-soft_50_c9c9c9_1x100.png │ │ ├── ui-icons_3383bb_256x240.png │ │ ├── ui-icons_454545_256x240.png │ │ ├── ui-icons_70b2e1_256x240.png │ │ ├── ui-icons_999999_256x240.png │ │ └── ui-icons_fbc856_256x240.png │ ├── jquery-ui-1.8.18.custom.css │ └── jquery-ui.css ├── pepper-grinder │ ├── images │ │ ├── animated-overlay.gif │ │ ├── ui-bg_diagonal-maze_20_6e4f1c_10x10.png │ │ ├── ui-bg_diagonal-maze_40_000000_10x10.png │ │ ├── ui-bg_fine-grain_10_eceadf_60x60.png │ │ ├── ui-bg_fine-grain_10_f8f7f6_60x60.png │ │ ├── ui-bg_fine-grain_15_eceadf_60x60.png │ │ ├── ui-bg_fine-grain_15_f7f3de_60x60.png │ │ ├── ui-bg_fine-grain_15_ffffff_60x60.png │ │ ├── ui-bg_fine-grain_65_654b24_60x60.png │ │ ├── ui-bg_fine-grain_68_b83400_60x60.png │ │ ├── ui-icons_222222_256x240.png │ │ ├── ui-icons_3572ac_256x240.png │ │ ├── ui-icons_8c291d_256x240.png │ │ ├── ui-icons_b83400_256x240.png │ │ ├── ui-icons_fbdb93_256x240.png │ │ └── ui-icons_ffffff_256x240.png │ ├── jquery-ui-1.8.18.custom.css │ └── jquery-ui.css ├── redmond │ ├── images │ │ ├── animated-overlay.gif │ │ ├── ui-bg_flat_0_aaaaaa_40x100.png │ │ ├── ui-bg_flat_55_fbec88_40x100.png │ │ ├── ui-bg_glass_75_d0e5f5_1x400.png │ │ ├── ui-bg_glass_85_dfeffc_1x400.png │ │ ├── ui-bg_glass_95_fef1ec_1x400.png │ │ ├── ui-bg_gloss-wave_55_5c9ccc_500x100.png │ │ ├── ui-bg_inset-hard_100_f5f8f9_1x100.png │ │ ├── ui-bg_inset-hard_100_fcfdfd_1x100.png │ │ ├── ui-icons_217bc0_256x240.png │ │ ├── ui-icons_2e83ff_256x240.png │ │ ├── ui-icons_469bdd_256x240.png │ │ ├── ui-icons_6da8d5_256x240.png │ │ ├── ui-icons_cd0a0a_256x240.png │ │ ├── ui-icons_d8e7f3_256x240.png │ │ └── ui-icons_f9bd01_256x240.png │ ├── jquery-ui-1.8.18.custom.css │ └── jquery-ui.css ├── smoothness │ ├── images │ │ ├── animated-overlay.gif │ │ ├── ui-bg_flat_0_aaaaaa_40x100.png │ │ ├── ui-bg_flat_75_ffffff_40x100.png │ │ ├── ui-bg_glass_55_fbf9ee_1x400.png │ │ ├── ui-bg_glass_65_ffffff_1x400.png │ │ ├── ui-bg_glass_75_dadada_1x400.png │ │ ├── ui-bg_glass_75_e6e6e6_1x400.png │ │ ├── ui-bg_glass_95_fef1ec_1x400.png │ │ ├── ui-bg_highlight-soft_75_cccccc_1x100.png │ │ ├── ui-icons_222222_256x240.png │ │ ├── ui-icons_2e83ff_256x240.png │ │ ├── ui-icons_454545_256x240.png │ │ ├── ui-icons_888888_256x240.png │ │ └── ui-icons_cd0a0a_256x240.png │ ├── jquery-ui-1.8.18.custom.css │ └── jquery-ui.css ├── south-street │ ├── images │ │ ├── animated-overlay.gif │ │ ├── ui-bg_glass_55_fcf0ba_1x400.png │ │ ├── ui-bg_gloss-wave_100_ece8da_500x100.png │ │ ├── ui-bg_highlight-hard_100_f5f3e5_1x100.png │ │ ├── ui-bg_highlight-hard_100_fafaf4_1x100.png │ │ ├── ui-bg_highlight-hard_15_459e00_1x100.png │ │ ├── ui-bg_highlight-hard_95_cccccc_1x100.png │ │ ├── ui-bg_highlight-soft_25_67b021_1x100.png │ │ ├── ui-bg_highlight-soft_95_ffedad_1x100.png │ │ ├── ui-bg_inset-soft_15_2b2922_1x100.png │ │ ├── ui-icons_808080_256x240.png │ │ ├── ui-icons_847e71_256x240.png │ │ ├── ui-icons_8DC262_256x240.png │ │ ├── ui-icons_cd0a0a_256x240.png │ │ ├── ui-icons_eeeeee_256x240.png │ │ └── ui-icons_ffffff_256x240.png │ ├── jquery-ui-1.8.18.custom.css │ └── jquery-ui.css ├── start │ ├── images │ │ ├── animated-overlay.gif │ │ ├── ui-bg_flat_55_999999_40x100.png │ │ ├── ui-bg_flat_75_aaaaaa_40x100.png │ │ ├── ui-bg_glass_45_0078ae_1x400.png │ │ ├── ui-bg_glass_55_f8da4e_1x400.png │ │ ├── ui-bg_glass_75_79c9ec_1x400.png │ │ ├── ui-bg_gloss-wave_45_e14f1c_500x100.png │ │ ├── ui-bg_gloss-wave_50_6eac2c_500x100.png │ │ ├── ui-bg_gloss-wave_75_2191c0_500x100.png │ │ ├── ui-bg_inset-hard_100_fcfdfd_1x100.png │ │ ├── ui-icons_0078ae_256x240.png │ │ ├── ui-icons_056b93_256x240.png │ │ ├── ui-icons_d8e7f3_256x240.png │ │ ├── ui-icons_e0fdff_256x240.png │ │ ├── ui-icons_f5e175_256x240.png │ │ ├── ui-icons_f7a50d_256x240.png │ │ └── ui-icons_fcd113_256x240.png │ ├── jquery-ui-1.8.18.custom.css │ └── jquery-ui.css ├── sunny │ ├── images │ │ ├── animated-overlay.gif │ │ ├── ui-bg_diagonals-medium_20_d34d17_40x40.png │ │ ├── ui-bg_flat_30_cccccc_40x100.png │ │ ├── ui-bg_flat_50_5c5c5c_40x100.png │ │ ├── ui-bg_gloss-wave_45_817865_500x100.png │ │ ├── ui-bg_gloss-wave_60_fece2f_500x100.png │ │ ├── ui-bg_gloss-wave_70_ffdd57_500x100.png │ │ ├── ui-bg_gloss-wave_90_fff9e5_500x100.png │ │ ├── ui-bg_highlight-soft_100_feeebd_1x100.png │ │ ├── ui-bg_inset-soft_30_ffffff_1x100.png │ │ ├── ui-icons_3d3d3d_256x240.png │ │ ├── ui-icons_bd7b00_256x240.png │ │ ├── ui-icons_d19405_256x240.png │ │ ├── ui-icons_eb990f_256x240.png │ │ ├── ui-icons_ed9f26_256x240.png │ │ ├── ui-icons_fadc7a_256x240.png │ │ └── ui-icons_ffe180_256x240.png │ ├── jquery-ui-1.8.18.custom.css │ └── jquery-ui.css ├── swanky-purse │ ├── images │ │ ├── animated-overlay.gif │ │ ├── ui-bg_diamond_10_4f4221_10x8.png │ │ ├── ui-bg_diamond_20_372806_10x8.png │ │ ├── ui-bg_diamond_25_675423_10x8.png │ │ ├── ui-bg_diamond_25_d5ac5d_10x8.png │ │ ├── ui-bg_diamond_8_261803_10x8.png │ │ ├── ui-bg_diamond_8_443113_10x8.png │ │ ├── ui-bg_flat_75_ddd4b0_40x100.png │ │ ├── ui-bg_highlight-hard_65_fee4bd_1x100.png │ │ ├── ui-icons_070603_256x240.png │ │ ├── ui-icons_e8e2b5_256x240.png │ │ ├── ui-icons_e9cd86_256x240.png │ │ ├── ui-icons_efec9f_256x240.png │ │ ├── ui-icons_f2ec64_256x240.png │ │ ├── ui-icons_f9f2bd_256x240.png │ │ └── ui-icons_ff7519_256x240.png │ ├── jquery-ui-1.8.18.custom.css │ └── jquery-ui.css ├── trontastic │ ├── images │ │ ├── animated-overlay.gif │ │ ├── ui-bg_diagonals-small_50_262626_40x40.png │ │ ├── ui-bg_flat_0_303030_40x100.png │ │ ├── ui-bg_flat_0_4c4c4c_40x100.png │ │ ├── ui-bg_glass_40_0a0a0a_1x400.png │ │ ├── ui-bg_glass_55_f1fbe5_1x400.png │ │ ├── ui-bg_glass_60_000000_1x400.png │ │ ├── ui-bg_gloss-wave_55_000000_500x100.png │ │ ├── ui-bg_gloss-wave_85_9fda58_500x100.png │ │ ├── ui-bg_gloss-wave_95_f6ecd5_500x100.png │ │ ├── ui-icons_000000_256x240.png │ │ ├── ui-icons_1f1f1f_256x240.png │ │ ├── ui-icons_9fda58_256x240.png │ │ ├── ui-icons_b8ec79_256x240.png │ │ ├── ui-icons_cd0a0a_256x240.png │ │ └── ui-icons_ffffff_256x240.png │ ├── jquery-ui-1.8.18.custom.css │ └── jquery-ui.css ├── ui-darkness │ ├── images │ │ ├── animated-overlay.gif │ │ ├── ui-bg_flat_30_cccccc_40x100.png │ │ ├── ui-bg_flat_50_5c5c5c_40x100.png │ │ ├── ui-bg_glass_20_555555_1x400.png │ │ ├── ui-bg_glass_40_0078a3_1x400.png │ │ ├── ui-bg_glass_40_ffc73d_1x400.png │ │ ├── ui-bg_gloss-wave_25_333333_500x100.png │ │ ├── ui-bg_highlight-soft_80_eeeeee_1x100.png │ │ ├── ui-bg_inset-soft_25_000000_1x100.png │ │ ├── ui-bg_inset-soft_30_f58400_1x100.png │ │ ├── ui-icons_222222_256x240.png │ │ ├── ui-icons_4b8e0b_256x240.png │ │ ├── ui-icons_a83300_256x240.png │ │ ├── ui-icons_cccccc_256x240.png │ │ └── ui-icons_ffffff_256x240.png │ ├── jquery-ui-1.8.18.custom.css │ └── jquery-ui.css ├── ui-lightness │ ├── images │ │ ├── animated-overlay.gif │ │ ├── ui-bg_diagonals-thick_18_b81900_40x40.png │ │ ├── ui-bg_diagonals-thick_20_666666_40x40.png │ │ ├── ui-bg_flat_10_000000_40x100.png │ │ ├── ui-bg_glass_100_f6f6f6_1x400.png │ │ ├── ui-bg_glass_100_fdf5ce_1x400.png │ │ ├── ui-bg_glass_65_ffffff_1x400.png │ │ ├── ui-bg_gloss-wave_35_f6a828_500x100.png │ │ ├── ui-bg_highlight-soft_100_eeeeee_1x100.png │ │ ├── ui-bg_highlight-soft_75_ffe45c_1x100.png │ │ ├── ui-icons_222222_256x240.png │ │ ├── ui-icons_228ef1_256x240.png │ │ ├── ui-icons_ef8c08_256x240.png │ │ ├── ui-icons_ffd27a_256x240.png │ │ └── ui-icons_ffffff_256x240.png │ ├── jquery-ui-1.8.18.custom.css │ └── jquery-ui.css └── vader │ ├── images │ ├── animated-overlay.gif │ ├── ui-bg_flat_0_aaaaaa_40x100.png │ ├── ui-bg_glass_95_fef1ec_1x400.png │ ├── ui-bg_gloss-wave_16_121212_500x100.png │ ├── ui-bg_highlight-hard_15_888888_1x100.png │ ├── ui-bg_highlight-hard_55_555555_1x100.png │ ├── ui-bg_highlight-soft_35_adadad_1x100.png │ ├── ui-bg_highlight-soft_60_dddddd_1x100.png │ ├── ui-bg_inset-soft_15_121212_1x100.png │ ├── ui-icons_666666_256x240.png │ ├── ui-icons_aaaaaa_256x240.png │ ├── ui-icons_bbbbbb_256x240.png │ ├── ui-icons_c98000_256x240.png │ ├── ui-icons_cccccc_256x240.png │ ├── ui-icons_cd0a0a_256x240.png │ └── ui-icons_f29a00_256x240.png │ ├── jquery-ui-1.8.18.custom.css │ └── jquery-ui.css ├── logo.png ├── package.json ├── playlist.xml ├── src ├── osmplayer.iscroll.js ├── osmplayer.js ├── osmplayer.pager.js ├── osmplayer.parser.asx.js ├── osmplayer.parser.default.js ├── osmplayer.parser.rss.js ├── osmplayer.parser.xspf.js ├── osmplayer.parser.youtube.js ├── osmplayer.playlist.js └── osmplayer.teaser.js ├── templates ├── default │ ├── css │ │ ├── images │ │ │ └── loader.gif │ │ └── osmplayer_default.css │ ├── js │ │ ├── osmplayer.controller.default.js │ │ ├── osmplayer.default.js │ │ ├── osmplayer.pager.default.js │ │ ├── osmplayer.playLoader.default.js │ │ ├── osmplayer.playlist.default.js │ │ └── osmplayer.teaser.default.js │ ├── osmplayer.default.js │ └── osmplayer_default.tpl.php ├── electric │ ├── css │ │ ├── images │ │ │ ├── loader.gif │ │ │ ├── pause-icon.png │ │ │ ├── play-icon.png │ │ │ ├── volume-full-icon.png │ │ │ └── volume-mute-icon.png │ │ └── osmplayer_electric.css │ ├── js │ │ ├── osmplayer.controller.electric.js │ │ ├── osmplayer.electric.js │ │ └── osmplayer.playLoader.electric.js │ └── osmplayer_electric.tpl.php ├── simpleblack │ ├── css │ │ ├── images │ │ │ ├── busy.gif │ │ │ ├── mask.png │ │ │ ├── mediafront_audioslidebarbg.png │ │ │ ├── mediafront_back.png │ │ │ ├── mediafront_bigplay.png │ │ │ ├── mediafront_black40.png │ │ │ ├── mediafront_blue20.png │ │ │ ├── mediafront_buttonaudioslidebar.png │ │ │ ├── mediafront_buttoncontroler.png │ │ │ ├── mediafront_buttoninfo.png │ │ │ ├── mediafront_buttonpause.png │ │ │ ├── mediafront_buttonplay.png │ │ │ ├── mediafront_buttonresizescreen.png │ │ │ ├── mediafront_buttonsound.png │ │ │ ├── mediafront_close.png │ │ │ ├── mediafront_controlerbarBg.png │ │ │ ├── mediafront_forward.png │ │ │ ├── mediafront_infobox.png │ │ │ ├── mediafront_logo.png │ │ │ ├── mediafront_movie640x360.png │ │ │ ├── mediafront_moviethumb.png │ │ │ ├── mediafront_playlistbg.png │ │ │ ├── mediafront_playlistshadow.png │ │ │ └── mediafront_playlisttitlebg.png │ │ └── osmplayer_simpleblack.css │ ├── js │ │ ├── osmplayer.controller.simpleblack.js │ │ ├── osmplayer.playLoader.simpleblack.js │ │ └── osmplayer.simpleblack.js │ └── osmplayer_simpleblack.tpl.php └── stretchy │ ├── css │ ├── images │ │ └── loader.gif │ └── osmplayer_stretchy.css │ ├── js │ ├── osmplayer.controller.stretchy.js │ ├── osmplayer.pager.stretchy.js │ ├── osmplayer.playLoader.stretchy.js │ ├── osmplayer.playlist.stretchy.js │ ├── osmplayer.stretchy.js │ └── osmplayer.teaser.stretchy.js │ └── osmplayer_stretchy.tpl.php ├── tools └── README.md └── version.txt /.gitignore: -------------------------------------------------------------------------------- 1 | *CVS* 2 | .DS_Store 3 | tools 4 | node_modules 5 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "minplayer"] 2 | path = minplayer 3 | url = https://github.com/travist/minplayer.git 4 | [submodule "lib/iscroll"] 5 | path = lib/iscroll 6 | url = https://github.com/cubiq/iscroll.git 7 | -------------------------------------------------------------------------------- /Gruntfile.js: -------------------------------------------------------------------------------- 1 | module.exports = function(grunt) { 2 | 3 | var iscroll = [ 4 | 'lib/iscroll/src/iscroll.js' 5 | ]; 6 | 7 | var iscrollPath = 'src/osmplayer.iscroll.js'; 8 | 9 | var files = [ 10 | 'src/osmplayer.js', 11 | 'src/osmplayer.parser.default.js', 12 | 'src/osmplayer.parser.youtube.js', 13 | 'src/osmplayer.parser.rss.js', 14 | 'src/osmplayer.parser.asx.js', 15 | 'src/osmplayer.parser.xspf.js', 16 | 'src/osmplayer.playlist.js', 17 | 'src/osmplayer.pager.js', 18 | 'src/osmplayer.teaser.js' 19 | ]; 20 | 21 | var template = [ 22 | 'templates/default/js/osmplayer.playLoader.default.js', 23 | 'templates/default/js/osmplayer.controller.default.js', 24 | 'templates/default/js/osmplayer.playlist.default.js', 25 | 'templates/default/js/osmplayer.teaser.default.js', 26 | 'templates/default/js/osmplayer.pager.default.js', 27 | 'templates/default/js/osmplayer.default.js' 28 | ]; 29 | 30 | // Project configuration. 31 | grunt.initConfig({ 32 | pkg: grunt.file.readJSON('package.json'), 33 | jshint: { 34 | all: ['Gruntfile.js'].concat(files).concat(template) 35 | }, 36 | concat: { 37 | options: { 38 | separator: '', 39 | }, 40 | screenfull: { 41 | options: { 42 | banner: "var osmplayer = osmplayer || {};\n(function(exports) {", 43 | footer: "\n})(osmplayer);" 44 | }, 45 | files: { 46 | 'src/osmplayer.iscroll.js': iscroll 47 | } 48 | }, 49 | build: { 50 | files: { 51 | 'bin/osmplayer.js': ['minplayer/bin/minplayer.js', iscrollPath].concat(files) 52 | } 53 | } 54 | }, 55 | uglify: { 56 | options: { 57 | banner: '' 58 | }, 59 | build: { 60 | files: { 61 | 'bin/osmplayer.compressed.js': ['bin/osmplayer.js'], 62 | 'bin/osmplayer.min.js': ['bin/osmplayer.js'], 63 | 'templates/default/osmplayer.default.js': template 64 | } 65 | } 66 | }, 67 | jsdoc : { 68 | dist : { 69 | src: files, 70 | options: { 71 | template: 'node_modules/grunt-jsdoc/node_modules/ink-docstrap/template', 72 | destination: 'doc' 73 | } 74 | } 75 | } 76 | }); 77 | 78 | // Load the plugin that provides the "uglify" task. 79 | grunt.loadNpmTasks('grunt-jsdoc'); 80 | grunt.loadNpmTasks('grunt-contrib-jshint'); 81 | grunt.loadNpmTasks('grunt-contrib-concat'); 82 | grunt.loadNpmTasks('grunt-contrib-uglify'); 83 | 84 | // Default task(s). 85 | grunt.registerTask('default', ['jshint', 'concat', 'uglify', 'jsdoc']); 86 | }; 87 | -------------------------------------------------------------------------------- /LICENSE.TXT: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2013 Travis Tidwell 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Open Standard Media Player 2 | ===================================== 3 | 4 | ABOUT: 5 | The open standard media player is an open source MIT - full featured media player written in jQuery. 6 | It was designed to dynamically play any media thrown it's way, whether it be HTML5 video - Flash video - Audio, etc. 7 | 8 | Although this media player was designed to be used within a Content Management environment, such as Drupal, you can 9 | use this player for other applications outside of a CMS. 10 | 11 | ENJOY! 12 | -------------------------------------------------------------------------------- /doc/img/glyphicons-halflings-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mediafront/osmplayer/2f3ae032cfdb2f1b2d3b524717fe19414f0f92b1/doc/img/glyphicons-halflings-white.png -------------------------------------------------------------------------------- /doc/img/glyphicons-halflings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mediafront/osmplayer/2f3ae032cfdb2f1b2d3b524717fe19414f0f92b1/doc/img/glyphicons-halflings.png -------------------------------------------------------------------------------- /doc/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Documentation Index 7 | 8 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 57 | 58 |
59 | 60 | 61 |
62 | 63 |
64 | 65 | 66 | 67 | 68 | Index 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 |
97 | 98 |
99 |
100 | 101 | 102 | 103 | Documentation generated by JSDoc 3.2.2 104 | on 2014-12-14T23:05:01-06:00 using the DocStrap template. 106 | 107 |
108 |
109 | 110 | 111 |
112 |
113 |
114 | 115 |
116 |
117 | 118 |
119 | 120 | 121 | 122 | 123 | 124 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | -------------------------------------------------------------------------------- /doc/osmplayer.parser.default.js.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Documentation Source: osmplayer.parser.default.js 7 | 8 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 58 | 59 |
60 | 61 | 62 |
63 | 64 |
65 | 66 | 67 | 68 |

Source: osmplayer.parser.default.js

69 | 70 |
71 |
72 |
/** The osmplayer namespace. */
 73 | var osmplayer = osmplayer || {};
 74 | 
 75 | /** The parser object. */
 76 | osmplayer.parser = osmplayer.parser || {};
 77 | 
 78 | /**
 79 |  * The default parser object.
 80 |  *
 81 |  * @return {object} The default parser.
 82 |  **/
 83 | osmplayer.parser['default'] = {
 84 | 
 85 |   // The priority for this parser.
 86 |   priority: 1,
 87 | 
 88 |   // This parser is always valid.
 89 |   valid: function(feed) {
 90 |     return true;
 91 |   },
 92 | 
 93 |   // Returns the type of request to make.
 94 |   getType: function(feed) {
 95 |     return 'json';
 96 |   },
 97 | 
 98 |   // Returns the feed provided the start and numItems.
 99 |   getFeed: function(feed, start, numItems) {
100 |     feed = feed.replace(/(.*)\??(.*)/i, '$1');
101 |     feed += '?start-index=' + start;
102 |     feed += '&max-results=' + numItems;
103 |     return feed;
104 |   },
105 | 
106 |   // Parse the feed.
107 |   parse: function(data) {
108 |     return data;
109 |   }
110 | };
111 | 
112 |
113 |
114 | 115 | 116 | 117 | 118 | 119 |
120 | 121 |
122 |
123 | 124 | 125 | 126 | Documentation generated by JSDoc 3.2.2 127 | on Mon May 05 2014 16:23:45 GMT-0500 (CDT) using the DocStrap template. 128 | 129 |
130 |
131 | 132 | 133 |
134 |
135 | 136 |
137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 163 | 164 | 165 | 166 | 167 | 168 | -------------------------------------------------------------------------------- /doc/scripts/bootstrap-tab.js: -------------------------------------------------------------------------------- 1 | /* ======================================================== 2 | * bootstrap-tab.js v2.3.0 3 | * http://twitter.github.com/bootstrap/javascript.html#tabs 4 | * ======================================================== 5 | * Copyright 2012 Twitter, Inc. 6 | * 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | * ======================================================== */ 19 | 20 | 21 | !function ($) { 22 | 23 | "use strict"; // jshint ;_; 24 | 25 | 26 | /* TAB CLASS DEFINITION 27 | * ==================== */ 28 | 29 | var Tab = function (element) { 30 | this.element = $(element) 31 | } 32 | 33 | Tab.prototype = { 34 | 35 | constructor: Tab 36 | 37 | , show: function () { 38 | var $this = this.element 39 | , $ul = $this.closest('ul:not(.dropdown-menu)') 40 | , selector = $this.attr('data-target') 41 | , previous 42 | , $target 43 | , e 44 | 45 | if (!selector) { 46 | selector = $this.attr('href') 47 | selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7 48 | } 49 | 50 | if ( $this.parent('li').hasClass('active') ) return 51 | 52 | previous = $ul.find('.active:last a')[0] 53 | 54 | e = $.Event('show', { 55 | relatedTarget: previous 56 | }) 57 | 58 | $this.trigger(e) 59 | 60 | if (e.isDefaultPrevented()) return 61 | 62 | $target = $(selector) 63 | 64 | this.activate($this.parent('li'), $ul) 65 | this.activate($target, $target.parent(), function () { 66 | $this.trigger({ 67 | type: 'shown' 68 | , relatedTarget: previous 69 | }) 70 | }) 71 | } 72 | 73 | , activate: function ( element, container, callback) { 74 | var $active = container.find('> .active') 75 | , transition = callback 76 | && $.support.transition 77 | && $active.hasClass('fade') 78 | 79 | function next() { 80 | $active 81 | .removeClass('active') 82 | .find('> .dropdown-menu > .active') 83 | .removeClass('active') 84 | 85 | element.addClass('active') 86 | 87 | if (transition) { 88 | element[0].offsetWidth // reflow for transition 89 | element.addClass('in') 90 | } else { 91 | element.removeClass('fade') 92 | } 93 | 94 | if ( element.parent('.dropdown-menu') ) { 95 | element.closest('li.dropdown').addClass('active') 96 | } 97 | 98 | callback && callback() 99 | } 100 | 101 | transition ? 102 | $active.one($.support.transition.end, next) : 103 | next() 104 | 105 | $active.removeClass('in') 106 | } 107 | } 108 | 109 | 110 | /* TAB PLUGIN DEFINITION 111 | * ===================== */ 112 | 113 | var old = $.fn.tab 114 | 115 | $.fn.tab = function ( option ) { 116 | return this.each(function () { 117 | var $this = $(this) 118 | , data = $this.data('tab') 119 | if (!data) $this.data('tab', (data = new Tab(this))) 120 | if (typeof option == 'string') data[option]() 121 | }) 122 | } 123 | 124 | $.fn.tab.Constructor = Tab 125 | 126 | 127 | /* TAB NO CONFLICT 128 | * =============== */ 129 | 130 | $.fn.tab.noConflict = function () { 131 | $.fn.tab = old 132 | return this 133 | } 134 | 135 | 136 | /* TAB DATA-API 137 | * ============ */ 138 | 139 | $(document).on('click.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) { 140 | e.preventDefault() 141 | $(this).tab('show') 142 | }) 143 | 144 | }(window.jQuery); -------------------------------------------------------------------------------- /doc/scripts/jquery.sunlight.js: -------------------------------------------------------------------------------- 1 | /** 2 | * jQuery plugin for Sunlight http://sunlightjs.com/ 3 | * 4 | * by Tommy Montgomery http://tmont.com/ 5 | * licensed under WTFPL http://sam.zoy.org/wtfpl/ 6 | */ 7 | (function($, window){ 8 | 9 | $.fn.sunlight = function(options) { 10 | var highlighter = new window.Sunlight.Highlighter(options); 11 | this.each(function() { 12 | highlighter.highlightNode(this); 13 | }); 14 | 15 | return this; 16 | }; 17 | 18 | }(jQuery, this)); -------------------------------------------------------------------------------- /doc/scripts/prettify/lang-css.js: -------------------------------------------------------------------------------- 1 | PR.registerLangHandler(PR.createSimpleLexer([ 2 | ["pln", /^[\t\n\f\r ]+/, null, " \t\r\n "] 3 | ], [ 4 | ["str", /^"(?:[^\n\f\r"\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*"/, null], 5 | ["str", /^'(?:[^\n\f\r'\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*'/, null], 6 | ["lang-css-str", /^url\(([^"')]*)\)/i], 7 | ["kwd", /^(?:url|rgb|!important|@import|@page|@media|@charset|inherit)(?=[^\w-]|$)/i, null], 8 | ["lang-css-kw", /^(-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*)\s*:/i], 9 | ["com", /^\/\*[^*]*\*+(?:[^*/][^*]*\*+)*\//], 10 | ["com", /^(?:<\!--|--\>)/], 11 | ["lit", /^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i], 12 | ["lit", /^#[\da-f]{3,6}/i], 13 | ["pln", /^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i], 14 | ["pun", /^[^\s\w"']+/] 15 | ]), ["css"]); 16 | PR.registerLangHandler(PR.createSimpleLexer([], [ 17 | ["kwd", /^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i] 18 | ]), ["css-kw"]); 19 | PR.registerLangHandler(PR.createSimpleLexer([], [ 20 | ["str", /^[^"')]+/] 21 | ]), ["css-str"]); -------------------------------------------------------------------------------- /doc/scripts/sunlight-plugin.doclinks.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Sunlight documentation link plugin 3 | * 4 | * This plugin generates hyperlinks to language documentation for certain tokens 5 | * (e.g. links to php.net for functions). 6 | * 7 | * Supported languages: 8 | * - PHP (functions and language constructs) 9 | * - Ruby (functions) 10 | * - Python (functions) 11 | * - Perl (functions) 12 | * - Lua (functions) 13 | * 14 | * Options: 15 | * - enableDocLinks: true/false (default is false) 16 | */ 17 | (function(sunlight, document, undefined){ 18 | if (sunlight === undefined) { 19 | throw "Include sunlight.js before including plugin files"; 20 | } 21 | 22 | var supportedLanguages = { 23 | php: { 24 | "function": function(word) { return "http://php.net/" + word; }, 25 | languageConstruct: function(word) { return "http://php.net/" + word; } 26 | }, 27 | 28 | ruby: { 29 | "function": function(word) { 30 | return "http://www.ruby-doc.org/docs/ruby-doc-bundle/Manual/man-1.4/function.html#" 31 | + word.replace(/!/g, "_bang").replace(/\?/g, "_p"); 32 | } 33 | }, 34 | 35 | python: { 36 | "function": function(word) { 37 | return "http://docs.python.org/py3k/library/functions.html#" + word; 38 | } 39 | }, 40 | 41 | perl: { 42 | "function": function(word) { return "http://perldoc.perl.org/functions/" + word + ".html"; } 43 | }, 44 | 45 | lua: { 46 | "function": function(word) { return "http://www.lua.org/manual/5.1/manual.html#pdf-" + word; } 47 | } 48 | }; 49 | 50 | function createLink(transformUrl) { 51 | return function(context) { 52 | var link = document.createElement("a"); 53 | link.className = context.options.classPrefix + context.tokens[context.index].name; 54 | link.setAttribute("href", transformUrl(context.tokens[context.index].value)); 55 | link.appendChild(context.createTextNode(context.tokens[context.index])); 56 | context.addNode(link); 57 | }; 58 | } 59 | 60 | sunlight.bind("beforeAnalyze", function(context) { 61 | if (!this.options.enableDocLinks) { 62 | return; 63 | } 64 | 65 | context.analyzerContext.getAnalyzer = function() { 66 | var language = supportedLanguages[this.language.name], 67 | analyzer, 68 | tokenName; 69 | 70 | if (!language) { 71 | return; 72 | } 73 | 74 | analyzer = sunlight.util.clone(context.analyzerContext.language.analyzer); 75 | 76 | for (tokenName in language) { 77 | if (!language.hasOwnProperty(tokenName)) { 78 | continue; 79 | } 80 | 81 | analyzer["handle_" + tokenName] = createLink(language[tokenName]); 82 | } 83 | 84 | return analyzer; 85 | }; 86 | 87 | }); 88 | 89 | sunlight.globalOptions.enableDocLinks = false; 90 | 91 | }(this["Sunlight"], document)); -------------------------------------------------------------------------------- /doc/scripts/sunlight-plugin.linenumbers.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Sunlight line number/line highlighting plugin 3 | * 4 | * This creates the line number gutter in addition to creating the line highlighting 5 | * overlay (if applicable). It is bundled in sunlight-min.js. 6 | * 7 | * Options: 8 | * - lineNumbers: true/false/"automatic" (default is "automatic") 9 | * - lineNumberStart: (line number to start from, default is 1) 10 | * - lineHighlight: (array of line numbers to highlight) 11 | */ 12 | (function(sunlight, document, undefined){ 13 | if (sunlight === undefined) { 14 | throw "Include sunlight.js before including plugin files"; 15 | } 16 | 17 | function getLineCount(node) { 18 | //browsers don't render the last trailing newline, so we make sure that the line numbers reflect that 19 | //by disregarding the last trailing newline 20 | 21 | //get the last text node 22 | var lastTextNode = function getLastNode(node) { 23 | if (!node.lastChild) { 24 | return null; 25 | } 26 | 27 | if (node.lastChild.nodeType === 3) { 28 | return node.lastChild; 29 | } 30 | 31 | return getLastNode(node.lastChild); 32 | }(node) || { lastChild: "" }; 33 | 34 | return node.innerHTML.replace(/[^\n]/g, "").length - /\n$/.test(lastTextNode.nodeValue); 35 | } 36 | 37 | sunlight.bind("afterHighlightNode", function(context) { 38 | var lineContainer, 39 | lineCount, 40 | lineHighlightOverlay, 41 | currentLineOverlay, 42 | lineHighlightingEnabled, 43 | i, 44 | eol, 45 | link, 46 | name; 47 | 48 | if (!this.options.lineNumbers) { 49 | return; 50 | } 51 | 52 | if (this.options.lineNumbers === "automatic" && sunlight.util.getComputedStyle(context.node, "display") !== "block") { 53 | //if it's not a block level element or the lineNumbers option is not set to "automatic" 54 | return; 55 | } 56 | 57 | lineContainer = document.createElement("pre"); 58 | lineCount = getLineCount(context.node); 59 | 60 | lineHighlightingEnabled = this.options.lineHighlight.length > 0; 61 | if (lineHighlightingEnabled) { 62 | lineHighlightOverlay = document.createElement("div"); 63 | lineHighlightOverlay.className = this.options.classPrefix + "line-highlight-overlay"; 64 | } 65 | 66 | lineContainer.className = this.options.classPrefix + "line-number-margin"; 67 | 68 | eol = document.createTextNode(sunlight.util.eol) 69 | for (i = this.options.lineNumberStart; i <= this.options.lineNumberStart + lineCount; i++) { 70 | link = document.createElement("a"); 71 | name = (context.node.id ? context.node.id : this.options.classPrefix + context.count) + "-line-" + i; 72 | 73 | link.setAttribute("name", name); 74 | link.setAttribute("href", "#" + name); 75 | 76 | link.appendChild(document.createTextNode(i)); 77 | lineContainer.appendChild(link); 78 | lineContainer.appendChild(eol.cloneNode(false)); 79 | 80 | if (lineHighlightingEnabled) { 81 | currentLineOverlay = document.createElement("div"); 82 | if (sunlight.util.contains(this.options.lineHighlight, i)) { 83 | currentLineOverlay.className = this.options.classPrefix + "line-highlight-active"; 84 | } 85 | lineHighlightOverlay.appendChild(currentLineOverlay); 86 | } 87 | } 88 | 89 | context.codeContainer.insertBefore(lineContainer, context.codeContainer.firstChild); 90 | 91 | if (lineHighlightingEnabled) { 92 | context.codeContainer.appendChild(lineHighlightOverlay); 93 | } 94 | 95 | //enable the border on the code container 96 | context.codeContainer.style.borderWidth = "1px"; 97 | context.codeContainer.style.borderStyle = "solid"; 98 | }); 99 | 100 | sunlight.globalOptions.lineNumbers = "automatic"; 101 | sunlight.globalOptions.lineNumberStart = 1; 102 | sunlight.globalOptions.lineHighlight = []; 103 | 104 | }(this["Sunlight"], document)); -------------------------------------------------------------------------------- /doc/scripts/toc.js: -------------------------------------------------------------------------------- 1 | (function($) { 2 | $.fn.toc = function(options) { 3 | var self = this; 4 | var opts = $.extend({}, jQuery.fn.toc.defaults, options); 5 | 6 | var container = $(opts.container); 7 | var headings = $(opts.selectors, container); 8 | var headingOffsets = []; 9 | var activeClassName = opts.prefix+'-active'; 10 | 11 | var scrollTo = function(e) { 12 | if (opts.smoothScrolling) { 13 | e.preventDefault(); 14 | var elScrollTo = $(e.target).attr('href'); 15 | var $el = $(elScrollTo); 16 | 17 | $('body,html').animate({ scrollTop: $el.offset().top }, 400, 'swing', function() { 18 | location.hash = elScrollTo; 19 | }); 20 | } 21 | $('li', self).removeClass(activeClassName); 22 | $(e.target).parent().addClass(activeClassName); 23 | }; 24 | 25 | //highlight on scroll 26 | var timeout; 27 | var highlightOnScroll = function(e) { 28 | if (timeout) { 29 | clearTimeout(timeout); 30 | } 31 | timeout = setTimeout(function() { 32 | var top = $(window).scrollTop(), 33 | highlighted; 34 | for (var i = 0, c = headingOffsets.length; i < c; i++) { 35 | if (headingOffsets[i] >= top) { 36 | $('li', self).removeClass(activeClassName); 37 | highlighted = $('li:eq('+(i-1)+')', self).addClass(activeClassName); 38 | opts.onHighlight(highlighted); 39 | break; 40 | } 41 | } 42 | }, 50); 43 | }; 44 | if (opts.highlightOnScroll) { 45 | $(window).bind('scroll', highlightOnScroll); 46 | highlightOnScroll(); 47 | } 48 | 49 | return this.each(function() { 50 | //build TOC 51 | var el = $(this); 52 | var ul = $('