1var TOOLS_PATH = '/smb/js/'; 2var CSS_PATH = '/smb/css/'; 3 4document.write('<link rel="stylesheet" type="text/css" href="'+CSS_PATH+'jqmWindow.css"/>'); 5document.write('<link rel="stylesheet" type="text/css" href="'+CSS_PATH+'barousel.css"/>'); 6 7document.write('<script type="text/javascript" src="'+TOOLS_PATH+'jquery-1.7.1.min.js"></script>'); 8//document.write('<script type="text/javascript" src="'+TOOLS_PATH+'my.js"></script>'); 9document.write('<script type="text/javascript" src="'+TOOLS_PATH+'jquery.mobile-1.2.0.min.js"></script>'); 10document.write('<script type="text/javascript" src="'+TOOLS_PATH+'jquery.cookie.js"></script>'); 11document.write('<script type="text/javascript" src="'+TOOLS_PATH+'jquery.fileDownload.js"></script>'); 12document.write('<script type="text/javascript" src="'+TOOLS_PATH+'smbdav-tools.min.js"></script>'); 13document.write('<script type="text/javascript" src="'+TOOLS_PATH+'jplayer/jquery.jplayer.min.js"></script>'); 14document.write('<link rel="stylesheet" type="text/css" href="'+CSS_PATH+'jplayer.blue.monday.app.css"/>'); 15 16function initJPlayer(){ 17 18 var Playlist = function(instance, playlist, options) { 19 var self = this; 20 21 this.instance = instance; // String: To associate specific HTML with this playlist 22 this.playlist = playlist; // Array of Objects: The playlist 23 this.options = options; // Object: The jPlayer constructor options for this playlist 24 25 this.current = 0; 26 27 this.cssId = { 28 jPlayer: "jquery_jplayer_", 29 interface: "jp_interface_", 30 playlist: "jp_playlist_", 31 playtitle: "jp_title_" 32 }; 33 34 this.cssSelector = {}; 35 36 $.each(this.cssId, function(entity, id) { 37 self.cssSelector[entity] = "#" + id + self.instance; 38 }); 39 40 if(!this.options.cssSelectorAncestor) { 41 this.options.cssSelectorAncestor = this.cssSelector.interface; 42 } 43 44 $(this.cssSelector.jPlayer).jPlayer(this.options); 45 46 $(this.cssSelector.interface + " .jp-previous").click(function() { 47 self.playlistPrev(); 48 $(this).blur(); 49 return false; 50 }); 51 52 $(this.cssSelector.interface + " .jp-next").click(function() { 53 self.playlistNext(); 54 $(this).blur(); 55 return false; 56 }); 57}; 58 59Playlist.prototype = { 60 displayPlaylist: function() { 61 var self = this; 62 $(this.cssSelector.playlist + " ul").empty(); 63 64 for (i=0; i < this.playlist.length; i++) { 65 var filename = this.playlist[i].name; 66 var listItem = (i === this.playlist.length-1) ? "<li class='jp-playlist-last'>" : "<li>"; 67 listItem += "<a href='#' id='" + this.cssId.playlist + this.instance + "_item_" + i +"' tabindex='1'>"+ filename +"</a>"; 68 69 // Associate playlist items with their media 70 $(this.cssSelector.playlist + " ul").append(listItem); 71 72 $(this.cssSelector.playlist + "_item_" + i).data("index", i).click(function() { 73 var index = $(this).data("index"); 74 if(self.current !== index) { 75 self.playlistChange(index); 76 } 77 else { 78 $(self.cssSelector.jPlayer).jPlayer("play"); 79 } 80 $(this).blur(); 81 return false; 82 }); 83 } 84 }, 85 playlistInit: function(autoplay) { 86 if(autoplay) { 87 this.playlistChange(this.current); 88 } else { 89 this.playlistConfig(this.current); 90 } 91 }, 92 playlistConfig: function(index) { 93 $(this.cssSelector.playlist + "_item_" + this.current).removeClass("jp-playlist-current").parent().removeClass("jp-playlist-current"); 94 $(this.cssSelector.playlist + "_item_" + index).addClass("jp-playlist-current").parent().addClass("jp-playlist-current"); 95 this.current = parseInt(index); 96 97 var filename = this.playlist[this.current]['name']; 98 var full_filename = filename; 99 //var ui_width = $(this.cssSelector.playtitle + " li").width(); 100 var ui_width = $("#container").width(); 101 var cur_width = String(filename).width($(this.cssSelector.playtitle + " li").css('font')); 102 103 if(cur_width>ui_width){ 104 var fileext = getFileExt(filename); 105 var len = filename.length; 106 var new_name = ""; 107 var i=0; 108 for(i=0; i<len; i++){ 109 new_name+=filename[i]; 110 var test_name = new_name + "." + fileext 111 var test_width = String(test_name).width($(this.cssSelector.playtitle + " li").css('font')); 112 if(test_width>ui_width){ 113 break; 114 } 115 } 116 117 filename = filename.substring(0,i-4) + "...." + fileext; 118 } 119 //alert("play "+this.playlist[this.current].mp3); 120 $(this.cssSelector.playtitle + " li").attr("title",full_filename); 121 $(this.cssSelector.playtitle + " li").text(filename); 122 $(this.cssSelector.jPlayer).jPlayer("setMedia", this.playlist[this.current]); 123 }, 124 playlistChange: function(index) { 125 this.playlistConfig(index); 126 $(this.cssSelector.jPlayer).jPlayer("play"); 127 }, 128 playlistNext: function() { 129 var index = (this.current + 1 < this.playlist.length) ? this.current + 1 : 0; 130 this.playlistChange(index); 131 }, 132 playlistPrev: function() { 133 var index = (this.current - 1 >= 0) ? this.current - 1 : this.playlist.length - 1; 134 this.playlistChange(index); 135 } 136}; 137 138var audioPlaylist = new Playlist("1", g_audio_playlist, { 139 ready: function() { 140 audioPlaylist.displayPlaylist(); 141 audioPlaylist.current = g_current_index; 142 audioPlaylist.playlistInit(true); // Parameter is a boolean for autoplay. 143 144 $("#playlist").css("visibility","visible"); 145 showHideAudioInterface(true); 146 showHideAudioList(false); 147 }, 148 ended: function() { 149 audioPlaylist.playlistNext(); 150 }, 151 play: function() { 152 $(this).jPlayer("pauseOthers"); 153 }, 154 swfPath: "/smb/js/jplayer/", 155 supplied: g_jplayer_supplied, 156 solution: g_jplayer_solution, 157 wmode: "window", 158 errorAlerts: true, 159 warningAlerts: false 160 }); 161}