1 2/* START PLAYER API */ 3 4function api_playAudio(player){ 5 if(player)player.playAudio(); 6} 7function api_pauseAudio(player){ 8 if(player)player.pauseAudio(); 9} 10function api_toggleAudio(player){ 11 if(player)player.toggleAudio(); 12} 13function api_stopAudio(player){ 14 if(player)player.stopAudio(); 15} 16function api_checkAudio(player, action){ 17 if(player)player.checkAudio(action); 18} 19function api_nextAudio(player){ 20 if(player)player.nextAudio(); 21} 22function api_previousAudio(player){ 23 if(player)player.previousAudio(); 24} 25function api_loadAudio(player, id){ 26 if(player)player.loadAudio(id); 27} 28function api_loadPlaylist(player, id){ 29 if(player)player.loadPlaylist(id); 30} 31function api_addTrack(player, type, format, tracks, pos){ 32 if(player)player.addTrack(type, format, tracks, pos); 33} 34function api_inputAudio(player, track){ 35 if(player)player.inputAudio(track); 36} 37function api_removeTrack(player, id){ 38 if(player)player.removeTrack(id); 39} 40function api_destroyAudio(player){ 41 if(player)player.destroyAudio(); 42} 43function api_destroyPlaylist(player){ 44 if(player)player.destroyPlaylist(); 45} 46function api_toggleShuffle(player){ 47 if(player)player.toggleShuffle(); 48} 49function api_toggleLoop(player){ 50 if(player)player.toggleLoop(); 51} 52function api_checkScroll(player){ 53 if(player)player.checkScroll(); 54} 55function api_reinitScroll(player){ 56 if(player)player.reinitScroll(); 57} 58function api_orderPlaylist(player, action, data){ 59 if(player)player.orderPlaylist(action, data); 60} 61 62 63/* GETTERS - SETTERS */ 64function api_getVolume(player){ 65 if(player)return player.getVolume(); 66} 67function api_setVolume(player, val){ 68 if(player)player.setVolume(val); 69} 70function api_getAutoPlay(player){ 71 if(player)return player.getAutoPlay(); 72} 73function api_setAutoPlay(player, val){ 74 if(player)player.setAutoPlay(val); 75} 76function api_setTitle(player, val){ 77 if(player)player.setTitle(val); 78} 79function api_getSetupDone(player){ 80 if(player)return player.getSetupDone(); 81} 82function api_getPlaylistLoaded(player){ 83 if(player)return player.getPlaylistLoaded(); 84} 85function api_getPlaylistTransition(player){ 86 if(player)return player.getPlaylistTransition(); 87} 88function api_getMediaPlaying(player){ 89 if(player)return player.getMediaPlaying(); 90} 91function api_getAudioInited(player){ 92 if(player)return player.getAudioInited(); 93} 94function api_getMediaType(player){ 95 if(player)return player.getMediaType(); 96} 97function api_getActiveItem(player){ 98 if(player)return player.getActiveItem(); 99} 100function api_getPlaylistItems(player, value){ 101 if(player)return player.getPlaylistItems(value); 102} 103function api_getMediaCount(player){ 104 if(player)return player.getMediaCount(); 105} 106function api_getPlaylistHidden(player){ 107 if(player)return player.getPlaylistHidden(); 108} 109function api_getPlaylistList(player){ 110 if(player)return player.getPlaylistList(); 111} 112function api_getPlaylistData(player){ 113 if(player)return player.getPlaylistData(); 114} 115function api_getSoundId(player){ 116 if(player)return player.getSoundId(); 117} 118 119/* END PLAYER API */ 120 121 122/* START PLAYER CALLBACKS */ 123 124function audioPlayerSetupDone(instance, sound_id){ 125 /* called when component is ready to use public API. Returns player instance, sound id. */ 126 //console.log('audioPlayerSetupDone: ', sound_id); 127 128 if(sound_id == 'popup' || sound_id == 'classic_popup'){ 129 instance.find('.popup_open').css({cursor:'pointer', display:'block'}).bind('click', function(){ 130 open_popup(popup_url, popup_width, popup_height, resizable); 131 return false; 132 }); 133 }else if(sound_id == 'circle_slideshow' || sound_id == 'bg_slideshow'){ 134 loadImage(); 135 } 136 137 //remove hover if touch 138 if(sound_id == 'classic_single' || sound_id == 'classic' || sound_id == 'classic_white' || sound_id == 'classic_no_time' || sound_id == 'classic_full' || sound_id == 'classic_no_time_advance' || sound_id == 'classic_no_time_no_seekbar_advance' || sound_id == 'classic_min' || sound_id == 'classic_playlist' || sound_id == 'classic_popup' || sound_id == 'wall'|| sound_id == 'drag_to_play' || /wrap_multi/g.test(sound_id)){ 139 if(instance.getTouch()){
140 instance.find('.controls_toggle').addClass('hap_no_hover'); 141 instance.find('.player_volume').addClass('hap_no_hover'); 142 instance.find('.controls_prev').addClass('hap_no_hover'); 143 instance.find('.controls_next').addClass('hap_no_hover'); 144 instance.find('.popup_open').addClass('hap_no_hover'); 145 } 146 } 147 148 149 //create audio after component init! 150 if(typeof(hap_group) !== 'undefined'){ 151 if(hap_group == 'wrap_multi' || hap_group == 'wrap_multi2'){ 152 if(hap_group == 'wrap_multi2' && sound_id == 'wrap_multi2_selector') return; 153 154 var track, type, mp3, ogg='', title, thumb, download, _item = jQuery(instance).closest('.playlistItem'); 155 if(_item.attr('data-type') != undefined) type = _item.attr('data-type'); 156 if(_item.attr('data-mp3') != undefined) mp3 = _item.attr('data-mp3'); 157 if(type && mp3){ 158 if(_item.attr('data-ogg') != undefined) ogg = _item.attr('data-ogg'); 159 if(_item.attr('data-title') != undefined) title = _item.attr('data-title'); 160 if(_item.attr('data-thumb') != undefined) thumb = _item.attr('data-thumb'); 161 if(_item.attr('data-download') != undefined) download = _item.attr('data-download'); 162 163 //since we process each track from playlist selector, we want all types to be 'local' when using api_addTrack! (otherwise process track would fail for non local type because we would be trying to process already processed track, and there is no point in doing it once again). So we set local type just for the api_addTrack so the track gets added into the playlist without processing, then afterwards switch types! (maybe local type could be left for all types except youtube, whose playback is treated differently but we bring back original type for all types nevertheless) 164 165 track = [{type: 'local', origtype:type, mp3: mp3, ogg: ogg, title: title, thumb: thumb, download: download}]; 166 //console.log(track); 167 instance.addTrack('visible', 'data', track[0]); 168 } 169 } 170 } 171} 172function audioPlayerPlaylistLoaded(instance, sound_id){ 173 /* called when playlist is loaded. Returns player instance, sound id. */ 174 //console.log('audioPlayerPlaylistLoaded: ', sound_id); 175 176 if(typeof(hap_group) !== 'undefined'){ 177 if(hap_group == 'wrap_multi2' && sound_id == 'wrap_multi2_selector'){ 178 makeHapPlayers(instance); 179 } 180 } 181 182 if(sound_id == 'drag_text1' || sound_id == 'drag_thumb1'){ 183 //make draggable from playlist selector into player playlist 184 instance.find("li[class*=hap_draggable]").draggable({ 185 connectToSortable: ".hap_sortable", 186 helper: "clone", 187 revert: "invalid" 188 }); 189 } 190 else if(sound_id == 'drag_text2' || sound_id == 'drag_thumb2'){ 191 //console.log(jQuery("#playlist2").hasClass('ui-droppable')); 192 //action when item is dropped from playlist selector into player playlist 193 jQuery("#playlist2").droppable({ 194 tolerance: "touch", 195 drop: function(event, ui) { 196 //draggable item 197 //console.log(jQuery(ui.draggable)); 198 var _item = jQuery(ui.draggable); 199 //remove locked 200 if(_item.hasClass('playlist_locked')){ 201 _item.removeClass('playlist_locked'); 202 } 203 } 204 }); 205 } 206 207 //enable selector 208 if(jQuery("#hap_playlist").length)jQuery("#hap_playlist").selectbox("enable"); 209} 210function audioPlayerPlaylistEnd(instance, sound_id){ 211 /* called when current playlists reaches end. Returns player instance, sound id. */ 212 //console.log('audioPlayerPlaylistEnd: '); 213} 214function audioPlayerSoundEnd(instance, sound_id, counter){ 215 /* called when current playing sound ends. Returns player instance, sound id, media counter. */ 216 //console.log('audioPlayerSoundEnd: '); 217} 218function audioPlayerSoundStart(instance, sound_id, counter){ 219 /* called when current playing sound starts. Returns player instance, sound id, media counter. */ 220 //console.log('audioPlayerSoundStart: ', sound_id); 221} 222function audioPlayerSoundPlay(instance, sound_id, counter){ 223 /* called when sound is played. Returns player instance, sound id, media counter. */ 224 //console.log('audioPlayerSoundPlay: '); 225 226 if(typeof(hap_group) !== 'undefined' && typeof(hap_players) !== 'undefined' && hap_players.length && typeof(soundArr) !== 'undefined' && soundArr.length){ 227 var i = 0, len = soundArr.length; 228 for(i;i<len;i++){ 229 if(sound_id != soundArr[i].sound_id){ 230 //console.log('audioPlayerSoundPlay: ', sound_id, soundArr[i].sound_id); 231 if(typeof api_checkAudio !== 'undefined')api_checkAudio(soundArr[i].player_id, 'pause'); 232 } 233 } 234 } 235} 236function audioPlayerSoundPause(instance, sound_id, counter){ 237 /* called when sound is paused. Returns player instance, sound id, media counter. */ 238 //console.log('audioPlayerSoundPause: ', sound_id); 239} 240function itemTriggered(instance, sound_id, counter){ 241 /* called when new sound is triggered. Returns player instance, sound_id, media counter. */ 242 //console.log('itemTriggered: '); 243 244 if(sound_id == 'artwork1' || sound_id == 'basic' || sound_id == 'basic_h'){ 245 var player_thumb = instance.find('.player_thumb').find('img'), 246 data = instance.getPlaylistData(), 247 thumb = data[counter].thumb; 248 if(player_thumb.length && thumb){ 249 //console.log(thumb); 250 player_thumb.attr('src', instance.get_hap_source_path() + thumb); 251 } 252 } 253} 254function playlistItemEnabled(instance, sound_id, target, id){ 255 /* called on playlist item enable. Returns player instance, sound_id, playlist item (target), playlist item id (playlist items have data-id attributes starting from 0). */ 256 //console.log('playlistItemEnabled: '); 257 258 if(sound_id == 'wall'){ 259 jQuery(target).find('p[class=hap_title]').remove(); 260 } 261} 262function playlistItemDisabled(instance, sound_id, target, id){ 263 /* called on playlist item disable. Returns player instance, sound_id, playlist item (target), playlist item id (playlist items have data-id attributes starting from 0). */ 264 //console.log('playlistItemDisabled: '); 265 266 if(sound_id == 'wall'){ 267 var data = instance.getPlaylistData(), 268 title = data[id].title; 269 if(title){ 270 var p = jQuery('<p>"'+title+'"</p>').addClass('hap_title'); 271 p.appendTo(jQuery(target)).css('marginTop',-p.outerHeight(true)/2+'px'); 272 } 273 } 274} 275function playlistItemRollover(instance, sound_id, target, id, active){ 276 /* called on playlist item mouseenter. Returns player instance, sound_id, playlist item (target), playlist item id (playlist items have data-id attributes starting from 0), active (is active playlist item, boolean). */ 277 //console.log('playlistItemRollover: '); 278 if(sound_id == 'wall' && !active){ 279 var data = instance.getPlaylistData(), 280 title = data[id].title; 281 if(title){ 282 var p = jQuery('<p>"'+title+'"</p>').addClass('hap_title'); 283 p.appendTo(jQuery(target)).css('marginTop',-p.outerHeight(true)/2+'px'); 284 } 285 } 286 287} 288function playlistItemRollout(instance, sound_id, target, id, active){ 289 /* called on playlist item mouseleave. Returns player instance, sound_id, playlist item (target), playlist item id (playlist items have data-id attributes starting from 0), active (is active playlist item, boolean). */ 290 //console.log('playlistItemRollout: '); 291 if(sound_id == 'wall' && !active){ 292 jQuery(target).find('p[class=hap_title]').remove(); 293 } 294 295} 296function playlistEmpty(instance, sound_id){ 297 /* called when playlist becomes empty (no items in playlist after new playlist has been created or last playlist item removed from playlist). Returns player instance, sound_id. */ 298 //console.log('playlistEmpty: ', sound_id); 299 if(sound_id == 'drag_text2' || sound_id == 'drag_thumb2'){ 300 instance.destroyAudio(); 301 if(instance.find('p[class=drag_info]').length==0){
302 instance.find('.playlist_inner').prepend($('<p class="drag_info">DRAG THE SONGS IN HERE!</p>')); 303 instance.loadPlaylist({hidden: false, id: '#playlist2'}); 304 305 } 306 } 307} 308function dropReceive(instance, sound_id){ 309 /* called when item gets dropped into the playlist. Returns player instance, sound_id. */ 310 //console.log('dropReceive: '); 311 if(sound_id == 'drag_text2' || sound_id == 'drag_thumb2'){ 312 instance.find('p[class=drag_info]').remove(); 313 } 314} 315 316/* END PLAYER CALLBACKS */ 317 318 319/* START TRACK LIST FOR PLAYER API */ 320 321/**** html formatted tracks ****/ 322 323var trackList_local1 = [ 324 "<li class= 'playlistItem' data-type='local' data-mp3='../media/audio/1/Tim_McMorris_-_A_Bright_And_Hopeful_Future.mp3' data-ogg='../media/audio/1/Tim_McMorris_-_A_Bright_And_Hopeful_Future.ogg' data-download><a class='playlistNonSelected' href='#'>Tim McMorris - A Bright And Hopeful Future</a><a class='dlink' href='#' data-dlink='../media/audio/1/Tim_McMorris_-_A_Bright_And_Hopeful_Future.mp3'><img src='media/data/dlink.png' alt = ''/></a><a class='plink' href='http://codecanyon.net/user/Tean/portfolio' target='_blank'><img src='media/data/url.png' alt = 'purchase'/></a></li>", 325 326 "<li class= 'playlistItem' data-type='local' data-mp3='../media/audio/1/Tim_McMorris_-_Be_My_Valentine.mp3' data-ogg='../media/audio/1/Tim_McMorris_-_Be_My_Valentine.ogg'><a class='playlistNonSelected' href='#'>Tim McMorris - Be My Valentine</a><a class='dlink' href='#' data-dlink='../media/audio/1/Tim_McMorris_-_Be_My_Valentine.mp3'><img src='media/data/dlink.png' alt = ''/></a><a class='plink' href='http://www.google.com' target='_blank'><img src='media/data/url.png' alt = 'purchase'/></a></li>", 327 328 "<li class= 'playlistItem' data-type='local' data-mp3='../media/audio/1/Tim_McMorris_-_Give_Our_Dreams_Their_Wings_To_Fly.mp3' data-ogg='../media/audio/1/Tim_McMorris_-_Give_Our_Dreams_Their_Wings_To_Fly.ogg' data-download><a class='playlistNonSelected' href='#'>Tim McMorris - Give Our Dreams Their Wings To Fly</a></li>", 329 330 "<li class= 'playlistItem' data-type='local' data-mp3='../media/audio/1/Tim_McMorris_-_Happy_Days_Are_Here_To_Stay.mp3' data-ogg='../media/audio/1/Tim_McMorris_-_Happy_Days_Are_Here_To_Stay.ogg'><a class='playlistNonSelected' href='#'>Tim McMorris - Happy Days Are Here To Stay</a><a class='plink' href='http://www.greensock.com' target='_blank'><img src='media/data/url.png' alt = 'purchase'/></a></li>" 331 ]; 332 333var trackList_local2 = [ 334 "<li class= 'playlistItem' data-type='local' data-mp3='../media/audio/2/Soundroll_-_A_Way_To_The_Top.mp3' data-ogg='../media/audio/2/Soundroll_-_A_Way_To_The_Top.ogg'><a class='playlistNonSelected' href='#'>Soundroll - A Way To The Top</a><a class='plink' href='http://codecanyon.net/user/Tean/portfolio' target='_blank'><img src='media/data/url.png' alt = 'purchase'/></a></li>", 335 336 "<li class= 'playlistItem' data-type='local' data-mp3='../media/audio/2/Soundroll_-_Feel_Good_Journey.mp3' data-ogg='../media/audio/2/Soundroll_-_Feel_Good_Journey.ogg'><a class='playlistNonSelected' href='#'>Soundroll - Feel Good Journey</a></li>", 337 338 "<li class= 'playlistItem' data-type='local' data-mp3='../media/audio/2/Soundroll_-_Fight_No_More.mp3' data-ogg='../media/audio/2/Soundroll_-_Fight_No_More.ogg'><a class='playlistNonSelected' href='#'>Soundroll - Fight No More</a><a class='plink' href='http://www.google.com' target='_blank'><img src='media/data/url.png' alt = 'purchase'/></a></li>", 339 340 "<li class= 'playlistItem' data-type='local' data-mp3='../media/audio/2/Soundroll_-_Funky_Boom.mp3' data-ogg='../media/audio/2/Soundroll_-_Funky_Boom.ogg'><a class='playlistNonSelected' href='#'>Soundroll - Funky Boom</a><a class='plink' href='http://codecanyon.net/user/Tean/portfolio' target='_blank'><img src='media/data/url.png' alt = 'purchase'/></a></li>", 341 342 "<li class= 'playlistItem' data-type='local' data-mp3='../media/audio/2/Soundroll_-_Pump_The_Club.mp3' data-ogg='../media/audio/2/Soundroll_-_Pump_The_Club.ogg'><a class='playlistNonSelected' href='#'>Soundroll - Pump The Club</a></li>", 343 344 "<li class= 'playlistItem' data-type='local' data-mp3='../media/audio/2/Soundroll_-_Rush.mp3' data-ogg='../media/audio/2/Soundroll_-_Rush.ogg'><a class='playlistNonSelected' href='#'>Soundroll - Rush</a></li>", 345 346 "<li class= 'playlistItem' data-type='local' data-mp3='../media/audio/2/Soundroll_-_Sun_Is_So_Bright.mp3' data-ogg='../media/audio/2/Soundroll_-_Sun_Is_So_Bright.ogg'><a class='playlistNonSelected' href='#'>Soundroll - Sun Is So Bright</a></li>" 347 ]; 348 349var trackList_local_thumb = [ 350 "<li class= 'playlistItem' data-type='local' data-mp3='../media/audio/2/Soundroll_-_A_Way_To_The_Top.mp3' data-ogg='../media/audio/2/Soundroll_-_A_Way_To_The_Top.ogg'><a class='playlistNonSelected' href='#'><span class='hap_thumb'><img src='../media/audio/2/Soundroll_-_A_Way_To_The_Top.jpg' alt=''/></span><span class='hap_title'><p>Soundroll - A Way To The Top</p></span></a></li>", 351 352 "<li class= 'playlistItem' data-type='local' data-mp3='../media/audio/2/Soundroll_-_Feel_Good_Journey.mp3' data-ogg='../media/audio/2/Soundroll_-_Feel_Good_Journey.ogg'><a class='playlistNonSelected' href='#'><span class='hap_thumb'><img src='../media/audio/2/Soundroll_-_Feel_Good_Journey.jpg' alt=''/></span><span class='hap_title'><p>Soundroll - Feel Good Journey</p></span></a></li>" 353 ]; 354 355var trackList_podcast = [ 356 "<li class= 'playlistItem' data-type='podcast' data-path='http://gidilounge.fm/?feed=podcast'/>", 357 "<li class= 'playlistItem' data-type='podcast' data-path='http://www.kingola.com/feed/podcast/'/>" 358]; 359 360var trackList_soundcloud = [ 361 "<li class= 'playlistItem' data-type='soundcloud' data-path='http://soundcloud.com/computer-magic'/>", 362 "<li class= 'playlistItem' data-type='soundcloud' data-path='http://soundcloud.com/an21/favorites'/>" 363]; 364 365var trackList_folder = [ 366 "<li class= 'playlistItem' data-type='folder' data-path='../media/audio/1/'/>", 367 "<li class= 'playlistItem' data-type='folder' data-path='../media/audio/2/'/>" 368]; 369 370var trackList_xml = [ 371 "<li class= 'playlistItem' data-type='xml' data-path='xml/playlist1.xml'/>", 372 "<li class= 'playlistItem' data-type='xml' data-path='xml/playlist2.xml'/>" 373]; 374 375var trackList_yt_single = [ 376 "<li class='playlistItem' data-type='youtube_single' data-path='opL4oe62XL8' ></li>", 377 "<li class='playlistItem' data-type='youtube_single' data-path='Akb7SJgGx1A' ></li>", 378 "<li class='playlistItem' data-type='youtube_single' data-path='uPOUgobWTT0' ></li>" 379]; 380 381var trackList_yt_playlist = [ 382 "<li class= 'playlistItem' data-type='youtube_playlist' data-path='PLE0311B1CFA360F55'></li>" 383]; 384 385var trackList_ofm_single = [ 386 "<li class= 'playlistItem' data-type='ofm_single' data-path='D4lw'></li>", 387 "<li class= 'playlistItem' data-type='ofm_single' data-path='B1pl'></li>", 388 "<li class= 'playlistItem' data-type='ofm_single' data-path='GGXE'></li>" 389]; 390 391var trackList_ofm_playlist = [ 392 "<li class= 'playlistItem' data-type='ofm_playlist' data-path='1rp7'></li>" 393]; 394 395var trackList_ofm_project = [ 396 "<li class= 'playlistItem' data-type='ofm_project' data-path='edB6'></li>" 397]; 398 399/* database tracks in html form, but in data form in database! */ 400/* 401var trackList_database = [ 402 "<li class= 'playlistItem' data-type='database_data' data-path='ap_hap' data-table='sound'/>" 403]; 404var trackList_database2 = [ 405 "<li class= 'playlistItem' data-type='database_data' data-path='ap_hap' data-table='sound' data-limit='3'/>" 406]; 407var trackList_database3 = [ 408 "<li class= 'playlistItem' data-type='database_data' data-path='ap_hap' data-table='sound' data-range='1,5'/>" 409];*/ 410 411/* database tracks in html form, and in html form in database! */ 412var trackList_database = [ 413 "<li class= 'playlistItem' data-type='database_html' data-path='ap_hap' data-table='sound1'/>" 414]; 415var trackList_database2 = [ 416 "<li class= 'playlistItem' data-type='database_html' data-path='ap_hap' data-table='sound1' data-limit='3'/>" 417]; 418var trackList_database3 = [ 419 "<li class= 'playlistItem' data-type='database_html' data-path='ap_hap' data-table='sound1' data-range='1,5'/>" 420]; 421 422var trackList_mixed = [ 423 /*"<li class= 'playlistItem' data-type='xml' data-path='xml/playlist3.xml'/>",*/ 424 425 "<li class= 'playlistItem' data-type='local' data-mp3='../media/audio/1/Tim_McMorris_-_A_Bright_And_Hopeful_Future.mp3' data-ogg='../media/audio/1/Tim_McMorris_-_A_Bright_And_Hopeful_Future.ogg' data-thumb='../media/audio/1/_A_Bright_And_Hopeful_Future.jpg' data-dlink='local_dlink' data-download='local_global'><a class='playlistNonSelected' href='#'>Tim McMorris - A Bright And Hopeful Future</a></li>", 426 "<li class= 'playlistItem' data-type='local' data-mp3='../media/audio/1/Tim_McMorris_-_A_Bright_And_Hopeful_Future.mp3' data-ogg='../media/audio/1/Tim_McMorris_-_A_Bright_And_Hopeful_Future.ogg' data-thumb='../media/audio/1/_A_Bright_And_Hopeful_Future.jpg' data-dlink data-download><a class='playlistNonSelected' href='#'>Tim McMorris - A Bright And Hopeful Future</a></li>", 427 428 "<li class= 'playlistItem' data-type='podcast' data-path='http://www.npr.org/rss/podcast.php?id=510008' data-dlink='podcast_dlink' data-download='podcast_global' data-thumb='media/default_artwork/podcast/01.jpg'/>", 429 "<li class= 'playlistItem' data-type='podcast' data-path='http://www.npr.org/rss/podcast.php?id=510008' data-dlink data-download data-thumb='media/default_artwork/podcast/01.jpg'/>", 430 431 "<li class= 'playlistItem' data-type='soundcloud' data-path='http://soundcloud.com/computer-magic' data-dlink='soundcloud_dlink' data-download='soundcloud_global' data-thumb='media/default_artwork/soundcloud/01.jpg'/>", 432 "<li class= 'playlistItem' data-type='soundcloud' data-path='http://soundcloud.com/computer-magic' data-dlink data-download data-thumb='media/default_artwork/soundcloud/01.jpg'/>", 433 434 "<li class= 'playlistItem' data-type='soundcloud' data-path='http://soundcloud.com/trance/trance-single-138-bpm-anvil' data-dlink='soundcloud_dlink_NON_DW' data-download='soundcloud_global_NON_DW' data-thumb='media/default_artwork/soundcloud/01.jpg'/>", 435 "<li class= 'playlistItem' data-type='soundcloud' data-path='http://soundcloud.com/trance/trance-single-138-bpm-anvil' data-dlink data-download data-thumb='media/default_artwork/soundcloud/01.jpg'/>", 436 437 "<li class= 'playlistItem' data-type='ofm_single' data-dlink='ofm_single_dlink' data-download='ofm_single_global' data-path='B1pl' data-thumb='media/default_artwork/ofm_single/01.jpg'></li>", 438 "<li class= 'playlistItem' data-type='ofm_single' data-dlink data-download data-path='B1pl' data-thumb='media/default_artwork/ofm_single/01.jpg'></li>", 439 440 "<li class= 'playlistItem' data-type='ofm_playlist' data-dlink='ofm_playlist_dlink' data-download='ofm_playlist_global' data-path='1rp7' data-thumb='media/default_artwork/ofm_playlist/01.jpg'></li>", 441 "<li class= 'playlistItem' data-type='ofm_playlist' data-dlink data-download data-path='1rp7' data-thumb='media/default_artwork/ofm_playlist/01.jpg'></li>", 442 443 "<li class= 'playlistItem' data-type='ofm_project' data-dlink='ofm_project_dlink' data-download='ofm_project_global' data-path='edB6' data-thumb='media/default_artwork/ofm_project/01.jpg'></li>", 444 "<li class= 'playlistItem' data-type='ofm_project' data-dlink data-download data-path='edB6' data-thumb='media/default_artwork/ofm_project/01.jpg'></li>", 445 446 "<li class= 'playlistItem' data-type='youtube_single' data-dlink='youtube_single_dlink' data-download='youtube_single_global' data-path='opL4oe62XL8' data-thumb='media/default_artwork/yt_single/01.jpg'></li>", 447 "<li class= 'playlistItem' data-type='youtube_single' data-dlink data-download data-path='opL4oe62XL8' data-thumb='media/default_artwork/yt_single/01.jpg'></li>", 448 "<li class= 'playlistItem' data-type='youtube_playlist' data-dlink='youtube_playlist_dlink' data-download='youtube_playlist_global' data-path='PLE0311B1CFA360F55' data-thumb='media/default_artwork/yt_playlist/01.jpg'></li>", 449 "<li class= 'playlistItem' data-type='youtube_playlist' data-dlink data-download data-path='PLE0311B1CFA360F55' data-thumb='media/default_artwork/yt_playlist/01.jpg'></li>" 450]; 451 452 453/**** tracks in form of data (objects) ****/ 454/* 455parameters: 456required: 457 type: local, podcast, soundcloud, folder, xml, youtube_single, youtube_playlist, ofm_single, ofm_playlist, ofm_project 458 mp3: mp3 path to audio file (you can also use 'path' instead of 'mp3') 459optional: 460 for local type: 461 ogg: path to the ogg audio file, NOTE: still required if ogg is used! (not if only mp3 audio format is used) 462 title: add song title 463 thumb: thumbnail path 464 for folder type: 465 thumb: thumbnail path (otherwise it will automatically assume thumbnail with the same name as mp3 file exist in the same folder, with 'jpg' extension) 466 for all types: 467 thumb: backup thumbnail path (if this data type is missing a thumbnail) 468 download (global download, activates global download button on active playlist item): 469 - for youtube: enter download url (required!) 470 - for other types: enter download url or 'true' (true will take mp3 path for download) 471 dlink: (individual download, creates download icon in playlist) 472 - for youtube: enter download url (required!) 473 - for other types: enter download url or 'true' (true will take mp3 path for download) 474 plink: Enter url (creates url icon in playlist, which links to url, target _blank) 475*/ 476 477var trackList2_local1 = [ 478 {type: 'local', mp3: '../media/audio/1/Tim_McMorris_-_A_Bright_And_Hopeful_Future.mp3', ogg: '../media/audio/1/Tim_McMorris_-_A_Bright_And_Hopeful_Future.ogg', title: 'Tim McMorris - A Bright And Hopeful Future', thumb: '../media/audio/1/Tim_McMorris_-_A_Bright_And_Hopeful_Future.jpg'}, 479 {type: 'local', mp3: '../media/audio/1/Tim_McMorris_-_Be_My_Valentine.mp3', ogg: '../media/audio/1/Tim_McMorris_-_Be_My_Valentine.ogg', title: 'Tim McMorris - Be My Valentine', thumb: '../media/audio/1/Tim_McMorris_-_Be_My_Valentine.jpg'}, 480 {type: 'local', mp3: '../media/audio/1/Tim_McMorris_-_Give_Our_Dreams_Their_Wings_To_Fly.mp3', ogg: '../media/audio/1/Tim_McMorris_-_Give_Our_Dreams_Their_Wings_To_Fly.ogg', title: 'Tim McMorris - Give Our Dreams Their Wings To Fly'}, 481 {type: 'local', mp3: '../media/audio/1/Tim_McMorris_-_Happy_Days_Are_Here_To_Stay.mp3', ogg: '../media/audio/1/Tim_McMorris_-_Happy_Days_Are_Here_To_Stay.ogg', title: 'Tim McMorris - Happy Days Are Here To Stay'}, 482 {type: 'local', mp3: '../media/audio/1/Tim_McMorris_-_Health_Happiness_Success.mp3', ogg: '../media/audio/1/Tim_McMorris_-_Health_Happiness_Success.ogg', title: 'Tim McMorris - Health Happiness Success'}, 483 {type: 'local', mp3: '../media/audio/1/Tim_McMorris_-_Marketing_Advertising_Music.mp3', ogg: '../media/audio/1/Tim_McMorris_-_Marketing_Advertising_Music.ogg', title: 'Tim McMorris - Marketing Advertising Music'}, 484 {type: 'local', mp3: '../media/audio/3/Bluegestalt_-_Becoming.mp3', ogg: '../media/audio/3/Bluegestalt_-_Becoming.ogg', title: 'Bluegestalt - Becoming'} 485]; 486 487var trackList2_local2 = [ 488 {type: 'local', mp3: '../media/audio/2/Soundroll_-_Funky_Boom.mp3', ogg: '../media/audio/2/Soundroll_-_Funky_Boom.ogg', title: 'Soundroll - Funky Boom', download: "../media/audio/2/Soundroll_-_Funky_Boom.mp3", thumb: '../media/audio/2/Soundroll_-_Funky_Boom.jpg', plink:'http://www.google.com', dlink:true}, 489 {type: 'local', mp3: '../media/audio/2/Soundroll_-_Fight_No_More.mp3', ogg: '../media/audio/2/Soundroll_-_Fight_No_More.ogg', title: 'Soundroll - Fight No More'}, 490 {type: 'local', mp3: '../media/audio/2/Soundroll_-_Rush.mp3', ogg:'../media/audio/2/Soundroll_-_Rush.ogg', title: 'Soundroll - Rush'} 491]; 492 493var trackList2_soundcloud = [ 494 {type: 'soundcloud', path: 'http://soundcloud.com/trance/trance-single-138-bpm-anvil', download: true, dlink: true, plink:'http://www.google.com'}, 495 {type: 'soundcloud', path: 'http://soundcloud.com/an21/favorites' } 496]; 497 498var trackList2_podcast = [ 499 {type: 'podcast', path: 'http://www.npr.org/rss/podcast.php?id=510008', download: true}, 500 {type: 'podcast', path: 'http://feeds.feedburner.com/xpnmusicnotes/', plink:'http://www.google.com' }, 501 {type: 'podcast', path: 'http://robertkelly.libsyn.com/rss', dlink: true, plink:'http://codecanyon.net/user/Tean/portfolio'} 502]; 503 504var trackList2_folder = [ 505 {type: 'folder', path: '../media/audi
505o/1/', download: true}, 506 {type: 'folder', path: '../media/audio/2/' } 507]; 508 509var trackList2_xml = [ 510 {type: 'xml', path: 'xml/playlist1.xml'}, 511 {type: 'xml', path: 'xml/playlist2.xml'} 512]; 513 514var trackList2_yt_single = [ 515 {type: 'youtube_single', path: 'opL4oe62XL8', download: 'path/to/custom/youtube_single.extension'}, 516 {type: 'youtube_single', path: 'Akb7SJgGx1A', download: true, plink:'http://www.google.com'}, 517 {type: 'youtube_single', path: 'uPOUgobWTT0'} 518]; 519 520var trackList2_yt_playlist = [ 521 {type: 'youtube_playlist', path: 'PLE0311B1CFA360F55', download: true} 522]; 523 524var trackList2_ofm_single = [ 525 {type: 'ofm_single', path: 'D4lw', download: 'path/to/custom/ofm_single.extension'}, 526 {type: 'ofm_single', path: 'B1pl'}, 527 {type: 'ofm_single', path: 'GGXE', download: true} 528]; 529 530var trackList2_ofm_playlist = [ 531 {type: 'ofm_playlist', path: '1rp7'} 532]; 533 534var trackList2_ofm_project = [ 535 {type: 'ofm_project', path: 'edB6'} 536]; 537 538/* database tracks in data form, and in data form in database! */ 539var trackList2_database = [ 540 {type: 'database_data', path: 'ap_hap', table: 'sound'} 541]; 542var trackList2_database2 = [ 543 {type: 'database_data', path: 'ap_hap', table: 'sound', limit: 5} 544]; 545var trackList2_database3 = [ 546 {type: 'database_data', path: 'ap_hap', table: 'sound', range: '1,4'} 547]; 548/* database tracks in data form, but in html form in database! */ 549/* 550var trackList2_database = [ 551 {type: 'database_html', path: 'ap_hap', table: 'sound1'} 552]; 553var trackList2_database2 = [ 554 {type: 'database_html', path: 'ap_hap', table: 'sound1', limit: 5} 555]; 556var trackList2_database3 = [ 557 {type: 'database_html', path: 'ap_hap', table: 'sound1', range: '1,4'} 558];*/ 559 560var trackList2_mixed = [ 561 {type: 'local', mp3: '../media/audio/1/Tim_McMorris_-_A_Bright_And_Hopeful_Future.mp3', ogg: '../media/audio/1/Tim_McMorris_-_A_Bright_And_Hopeful_Future.ogg', title: 'Tim McMorris - A Bright And Hopeful Future', thumb: '../media/audio/1/Tim_McMorris_-_A_Bright_And_Hopeful_Future.jpg', dlink: 'local_dlink', download:'path/to/custom/local.extension'}, 562 {type: 'local', mp3: '../media/audio/1/Tim_McMorris_-_A_Bright_And_Hopeful_Future.mp3', ogg: '../media/audio/1/Tim_McMorris_-_A_Bright_And_Hopeful_Future.ogg', title: 'Tim McMorris - A Bright And Hopeful Future', thumb: '../media/audio/1/Tim_McMorris_-_A_Bright_And_Hopeful_Future.jpg', dlink: true, download:true}, 563 564 {type: 'podcast', path: 'http://www.npr.org/rss/podcast.php?id=510008', dlink: 'podcast_dlink', download:'path/to/custom/podcast.extension'}, 565 {type: 'podcast', path: 'http://www.npr.org/rss/podcast.php?id=510008', dlink: true, download:true}, 566 567 {type: 'soundcloud', path: 'http://soundcloud.com/computer-magic', dlink: 'soundcloud_dlink', download:'path/to/custom/soundcloud.extension'}, 568 {type: 'soundcloud', path: 'http://soundcloud.com/computer-magic', dlink:true, download:true}, 569 570 {type: 'soundcloud', path: 'http://soundcloud.com/trance/trance-single-138-bpm-anvil', dlink: 'soundcloud_dlink_NON_DW', download:'path/to/custom/soundcloud.extension_NON_DW'}, 571 {type: 'soundcloud', path: 'http://soundcloud.com/trance/trance-single-138-bpm-anvil', dlink: true, download:true}, 572 573 {type: 'ofm_single', path: 'B1pl',dlink: 'ofm_single_dlink', download:'path/to/custom/ofm_single.extension'}, 574 {type: 'ofm_single', path: 'B1pl',dlink: true, download:true}, 575 576 {type: 'ofm_playlist', path: '1rp7',dlink: 'ofm_playlist_dlink', download:'path/to/custom/ofm_playlist.extension'}, 577 {type: 'ofm_playlist', path: '1rp7',dlink: true, download:true}, 578 579 {type: 'ofm_project', path: 'edB6',dlink: 'ofm_project_dlink', download:'path/to/custom/ofm_project.extension'}, 580 {type: 'ofm_project', path: 'edB6',dlink: true, download:true}, 581 582 {type: 'youtube_single', path: 'opL4oe62XL8',dlink: 'youtube_single_dlink', download:'path/to/custom/youtube_single.extension'}, 583 {type: 'youtube_single', path: 'opL4oe62XL8',dlink: true, download:true}, 584 585 {type: 'youtube_playlist', path: 'PLE0311B1CFA360F55', dlink: 'youtube_playlist_dlink', download:'path/to/custom/youtube_playlist.extension'}, 586 {type: 'youtube_playlist', path: 'PLE0311B1CFA360F55', dlink: true, download:true} 587 588 /*{type: 'folder', path: '../media/audio/3/', download:'path/to/custom/folder.extension'} 589 {type: 'xml', path: 'xml/playlist2.xml' }*/ 590]; 591 592var trackList2_mixed2 = [ 593 {type: 'local', mp3: '../media/audio/1/Tim_McMorris_-_A_Bright_And_Hopeful_Future.mp3', ogg: '../media/audio/1/Tim_McMorris_-_A_Bright_And_Hopeful_Future.ogg', title: 'Tim McMorris - A Bright And Hopeful Future', download:true, dlink:'custom/path/to/download'}, 594 {type: 'podcast', path: 'http://www.npr.org/rss/podcast.php?id=510008', download: true, dlink:true}, 595 {type: 'soundcloud', path: 'http://soundcloud.com/computer-magic', download: true, dlink:true}, 596 {type: 'soundcloud', path: 'http://soundcloud.com/trance/trance-single-138-bpm-anvil', download: true, dlink:true}, 597 {type: 'youtube_single', path: 'opL4oe62XL8', download: true}, 598 {type: 'ofm_single', path: 'D4lw'} 599]; 600 601 602 603 604//list of titles 605var titleList = [ 606 'Tim McMorris - A Bright And Hopeful Future', 607 'Tim McMorris - Be My Valentine', 608 'Tim McMorris - Give Our Dreams Their Wings To Fly', 609 'Tim McMorris - Happy Days Are Here To Stay', 610 'Tim McMorris - Health Happiness Success', 611 'Tim McMorris - Marketing Advertising Music', 612 'Tim McMorris - Successful Business Venture' 613]; 614 615var titleList2 = [ 616 'Soundroll - A Way To The Top', 617 'Soundroll - Feel Good Journey', 618 'Soundroll - Fight No More', 619 'Soundroll - Funky Boom', 620 'Soundroll - Pump The Club', 621 'Soundroll - Rush', 622 'Soundroll - Sun Is So Bright' 623]; 624 625/* END TRACKS LIST FOR PLAYER API */ 626 627 628/* DEFAULTS */ 629 630var audio = document.createElement('audio'), mp3Support, oggSupp
630ort, html5Support=false, hap_source_path=''; 631if (audio.canPlayType) { 632 html5Support=true; 633 mp3Support = !!audio.canPlayType && "" != audio.canPlayType('audio/mpeg'); 634 oggSupport = !!audio.canPlayType && "" != audio.canPlayType('audio/ogg; codecs="vorbis"'); 635} 636 637var isMobile = (/Android|webOS|iPhone|iPad|iPod|sony|BlackBerry/i.test(navigator.userAgent)); 638 639var isIE = false, ieBelow9 = false, ieBelow8 = false; 640var ie_check = getInternetExplorerVersion(); 641if (ie_check != -1){ 642 isIE = true; 643 if(ie_check < 9)ieBelow9 = true; 644 if(ie_check < 8)ieBelow8 = true; 645} 646function getInternetExplorerVersion(){ 647 var rv = -1; 648 if (navigator.appName == 'Microsoft Internet Explorer') 649 { 650 var ua = navigator.userAgent; 651 var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})"); 652 if (re.exec(ua) != null) 653 rv = parseFloat( RegExp.$1 ); 654 } 655 else if (navigator.appName == 'Netscape') 656 { 657 var ua = navigator.userAgent; 658 var re = new RegExp("Trident/.*rv:([0-9]{1,}[\.0-9]{0,})"); 659 if (re.exec(ua) != null) 660 rv = parseFloat( RegExp.$1 ); 661 } 662 return rv; 663} 664 665/* END DEFAULTS */ 666 667/* FLASH EMBED PART (for non html5 browsers, youtube and flash audio) */ 668 669function checkFlash(dataArr, embed_circle){ 670 671 var i = 0, len = dataArr.length; 672 673 if(!html5Support){//flash movies 674 675 for(i;i<len;i++){ 676 677 var a_id = 'flashAudio' + i; 678 var f_id = 'flashMain' + i; 679 var c_id = 'circleMain' + i; 680 681 dataArr[i].settings.flash_id = i; 682 dataArr[i].settings.flashAudio = '#'+a_id; 683 dataArr[i].settings.flashYoutube = '#'+f_id; 684 dataArr[i].settings.circleMain = '#'+c_id; 685 686 var flashAudioWrapper = jQuery('<div/>').addClass('flashAudio'); 687 var flashAudio = jQuery("<div id='"+a_id+"'><a href='http://www.adobe.com/go/getflashplayer'><img src='http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif' alt='Get Adobe Flash player' /></a></div>").appendTo(flashAudioWrapper); 688 689 var flashMainWrapper = jQuery('<div/>').addClass('flashMain'); 690 var flashMain = jQuery("<div id='"+f_id+"'><a href='http://www.adobe.com/go/getflashplayer'><img src='http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif' alt='Get Adobe Flash player' /></a></div>").appendTo(flashMainWrapper); 691 692 dataArr[i].holder.append(flashAudioWrapper); 693 dataArr[i].holder.append(flashMainWrapper); 694 695 if(embed_circle){ 696 var flashCircleWrapper = jQuery('<div/>').addClass('circleMain'); 697 var flashCircle = jQuery("<div id='"+c_id+"'><a href='http://www.adobe.com/go/getflashplayer'><img src='http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif' alt='Get Adobe Flash player'/></a></div>").appendTo(flashCircleWrapper); 698 dataArr[i].holder.find('div[class=circlePlayer]').append(flashCircleWrapper); 699 } 700 701 } 702 }else{ 703 704 i = 0; 705 for(i;i<len;i++){ 706 707 if(dataArr[i].settings.useOnlyMp3Format && !mp3Support){//use flash to play mp3 on browsers that do not support mp3 708 709 var a_id = 'flashAudio' + i; 710 711 dataArr[i].settings.flash_id = i; 712 dataArr[i].settings.flashAudio = '#'+a_id; 713 714 var flashAudioWrapper = jQuery('<div/>').addClass('flashAudio'); 715 var flashAudio = jQuery("<div id='"+a_id+"'><a href='http://www.adobe.com/go/getflashplayer'><img src='http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif' alt='Get Adobe Flash player' /></a></div>").appendTo(flashAudioWrapper); 716 717 dataArr[i].holder.append(flashAudioWrapper); 718 719 } 720 } 721 } 722} 723 724var hap_params = { 725 quality: "high", 726 scale: "noscale", 727 salign: "tl", 728 wmode: "transparent", 729 bgcolor: "#111111", 730 devicefont: "false", 731 allowfullscreen: "true", 732 allowscriptaccess: "always" 733}; 734function embedFlashMain(id){ 735 if(jQuery('.flashMain').length==0)return; 736 jQuery('.flashMain').css('display','block'); 737 var flashvars = {},attributes = {id:id}; 738 swfobject.embedSWF("preview.swf", id, "320px", "240px", "9.0.0", "expressInstall.swf", flashvars, hap_params, attributes); 739} 740function embedFlashAudio(id){ 741 if(jQuery('.flashAudio').length==0)return; 742 jQuery('.flashAudio').css('display','block'); 743 var flashvars = {},attributes = {id:id}; 744 swfobject.embedSWF("preview2.swf", id, "100px", "100px", "9.0.0", "expressInstall.swf", flashvars, hap_params, attributes); 745} 746function embedFlashCircle(id){ 747 if(jQuery('.circleMain').length==0)return; 748 jQuery('.circleMain').css('display','block'); 749 var flashvars = {},attributes = {id:id}; 750 swfobject.embedSWF("circle.swf", id, "160px", "160px", "9.0.0", "expressInstall.swf", flashvars, hap_params, attributes); 751} 752 753//******** functions called from flash 754var jsReady = false; 755function isReady() {return jsReady;} 756 757/* flash youtube callbacks */ 758function flashVideoEnd(data){ 759 if(hap_players[data.id])hap_players[data.id].flashVideoEnd(); 760} 761function flashVideoStart(data){ 762 if(hap_players[data.id])hap_players[data.id].flashVideoStart(); 763} 764function flashVideoPause(data){ 765 if(hap_players[data.id])hap_players[data.id].flashVideoPause(); 766} 767function flashVideoResume(data){ 768 if(hap_players[data.id])hap_players[data.id].flashVideoResume(); 769} 770function flashYoutubeData(data){ 771 if(hap_players[data.id])hap_players[data.id].flashYoutubeData(data.bl,data.bt,data.t,data.d); 772} 773/*flash audio callbacks*/ 774function flashAudioEnd(data){ 775 if(hap_players[data.id])hap_players[data.id].flashAudioEnd();
776} 777function flashAudioData(data){ 778 if(hap_players[data.id])hap_players[data.id].flashAudioData(data.bl,data.bt,data.t,data.d); 779} 780/*flash circle callbacks*/ 781function flashCircleToggle(data){ 782 if(hap_players[data.id])hap_players[data.id].flashCircleToggle(); 783} 784function flashCircleOverLoader(data){ 785 if(hap_players[data.id])hap_players[data.id].flashCircleOverLoader(data.val); 786} 787function flashCircleOutLoader(data){ 788 if(hap_players[data.id])hap_players[data.id].flashCircleOutLoader(); 789} 790function flashCircleSeek(data){ 791 if(hap_players[data.id])hap_players[data.id].flashCircleSeek(data.val); 792} 793 794/* END FLASH EMBED PART */ 795 796 797 798 799/* START POPUP RELATED CODE */ 800 801function notify_popup(){//called from popup window when popup window has opened! 802 //console.log('notify_popup'); 803 if(hap_popup && hap_popup.initPopup != undefined){//dont do anything if we are not going to be able to open popup! 804 if(hap_settings.autoUpdateWindowData)updatePlayerData(); 805 806 if(hap_players && hap_players[0]){ 807 if(hap_players[0].destroyPlaylist != undefined)hap_players[0].destroyPlaylist(); 808 } 809 jQuery('#componentWrapper').css('display','none');//hide player in parent page (we cant clear html because we dont dynamically append componentWrapper html with jquery! Only if we save the player html prior to this action so we can reinstantiate it later.) 810 811 try { 812 if(hap_popup.initPopup != undefined)hap_popup.initPopup(hap_settings); 813 if(hap_players[0])hap_players[0].find('.popup_open').css('display','none'); 814 }catch(e){ 815 alert('parent notify_popup error: ' + e.message); 816 return false; 817 } 818 } 819} 820 821//called from popup window when popup is closed (opens player in parent window again, remove this function if you dont want this feature) 822function open_player(player){ 823 //console.log('open_player'); 824 if(hap_settings.autoUpdateWindowData){ 825 if(player)hap_players[0] = player;//get player reference 826 updatePlayerData(true); 827 } 828 hap_players[0] = jQuery('#componentWrapper').css('display','block').html5audio(hap_settings);//show player before init 829 if(!html5Support)hap_players[0].embedFlash(); 830 hap_players[0].find('.popup_open').css('display','block'); 831} 832 833function open_popup(url, w, h, resizable){//public api to open popup 834 //console.log('open_popup'); 835 if(typeof(url) === 'undefined' || typeof(w) === 'undefined' || typeof(h) === 'undefined') return false; 836 var cw = (window.screen.width - w) / 2, ch = (window.screen.height - h) / 2;//center popup in window 837 838 //if popup window not already opened! 839 if(!hap_popup || hap_popup.closed) { 840 if(resizable){ 841 hap_popup=window.open(url,'hap_popup_window','menubar=no,toolbar=no,location=no,scrollbars=1,resizable,width='+w+',height='+h+',left='+cw+',top='+ch+''); 842 }else{ 843 hap_popup=window.open(url,'hap_popup_window','menubar=no,toolbar=no,location=no,width='+w+',height='+h+',left='+cw+',top='+ch+''); 844 } 845 //hap_popup=window.open(url,'name','width=700,height=300');//opera doesnt want to open popup with vars in options (instead opens new tab)! 846 if(!hap_popup) { 847 alert("Music Player can not be opened in a popup window because your browser is blocking Pop-Ups. Please allow Pop-Ups in browser for this site to use the Music Player."); 848 return false; 849 } 850 if (window.focus) {hap_popup.focus();} 851 }else{ 852 //console.log('popup already opened!'); 853 } 854 return false; 855} 856 857function updatePlayerData(isPopup){ 858 //console.log('updatePlayerData'); 859 if(!hap_players[0] || !hap_settings)return false; 860 //start update settings to pass between players in popup and parent window (remove these function calls if you want to start from initail settings every time player in popup/parent is opened). This will copy last volume, whole playlist and active item. 861 if(!isNaN(hap_players[0].getVolume()))hap_settings.defaultVolume = hap_players[0].getVolume();//volume 862 if(!isNaN(hap_players[0].getActiveItem()))hap_settings.activeItem = hap_players[0].getActiveItem();//active item 863 864 //console.log(hap_players[0].getVolume(), hap_players[0].getActiveItem(), hap_players[0].getMediaPlaying()); 865 866 //active playlist 867 var playlistLoaded = hap_players[0].getPlaylistLoaded(); 868 if(playlistLoaded){ 869 var hidden_playlist = hap_players[0].getPlaylistHidden(); 870 if(!hidden_playlist){ 871 var playlist = hap_players[0].find('.playlist_inner').find('ul'); 872 if(playlist.length > 0){ 873 var activePlaylist = playlist.attr('id');//get id attribute 874 if(isPopup && isIE){ 875 var curr_playlist = jQuery(playlist.clone(true, true).wrap('<p>').parent().html());//used for popup in IE (HIERARCHY_REQUEST_ERROR)!! important! 876 }else{ 877 var curr_playlist = playlist.clone(true, true); 878 } 879 jQuery(hap_settings.playlistList).find('#'+activePlaylist).remove();//remove playlist with active id from playlist_list, we are going to paste new version inside (with the same id attribute) in case playlist content has been changed (added/removed tracks/order etc...) 880 curr_playlist.appendTo(jQuery(hap_settings.playlistList));//copy current playlist into playlist_list 881 hap_settings.activePlaylist = {hidden: false, id:'#'+activePlaylist};//active playlist 882 } 883 }else{//hidden playlist 884 var playlist = hap_players[0].get_hidden_playlist_holder().children();//hidden_playlist_holder doesnt have ul node, just li nodes 885 if(playlist.length > 0){ 886 var activePlaylist = 'playlist' + Math.floor((Math.random()*9999));//get id attribute 887 var curr_playlist = jQuery('<ul id='+activePlaylist+'/>'); 888 if(isPopup && isIE){ 889 jQuery(playlist.clone(true, true).wrap('<p>').parent().html()).appendTo(curr_playlist);//used for popup in IE (HIERARCHY_REQUEST_ERROR)!! important! 890 }else{ 891 playlist.clone(true, true).appendTo(curr_playlist); 892 }
893 if(hap_players[0].getPlaylistList()){ 894 curr_playlist.appendTo(hap_players[0].getPlaylistList());//copy current playlist into playlist_list 895 hap_settings.activePlaylist = {hidden: true, id:'#'+activePlaylist};//active playlist 896 hap_players[0].get_hidden_playlist_holder().html('');//empty hidden_playlist_holder 897 } 898 } 899 } 900 var mediaPlaying = hap_players[0].getMediaPlaying(); 901 mediaPlaying ? hap_settings.autoPlay=true : hap_settings.autoPlay=false; 902 //seek to?, cookies , remember time (double check for all media types + yt separatelly!) 903 }else{ 904 hap_settings.activePlaylist=''; 905 } 906 //end update settings */ 907} 908 909/* END POPUP RELATED CODE */ 910
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.