// // Audioオブジェクトクラス // function mediaControlAudio(urlFormat) { this.audio = this.createAudio(this); this.urlFormat = urlFormat; this.playing = false; this.loading = false; this.pausing = false; this.isFirstPlay = false; this.nowaudio = ""; this.id = ""; this.contenttype = ""; this.a = null; } mediaControlAudio.prototype.createAudio = function (obj) { var tmpaudio = null; if (typeof (Audio) != "undefined") { tmpaudio = new Audio(); tmpaudio.volume = 0.8; tmpaudio.autoplay = false; tmpaudio.loop = false; tmpaudio.preload = "auto"; tmpaudio.controls = false; tmpaudio.id = "__mediaControlAudio"; var self = obj; self.audioErrorHandler = function (e) { self.playing = false; self.nowaudio = ""; self.id = ""; self.contenttype = ""; self.onError(e); GenerateMusicControllerPopup(); $('#bgLayer').fadeIn(); $('.mod-modal.music-control').fadeIn(); mediaAudioLoding.style.display = "none"; }; self.stopErrorHandler = function (e) { self.audio.removeEventListener("error", self.stopErrorHandler); self.audio.addEventListener("error", self.audioErrorHandler); }; tmpaudio.addEventListener("error", self.audioErrorHandler); tmpaudio.addEventListener("ended", function (e) { self.endedstop(); self.onEnded(e); }); tmpaudio.addEventListener("playing", function (e) { self.onPlaying(e); }); tmpaudio.addEventListener("canplay", function (e) { self.loading = false; if (self.audio.src != "") self.audio.play(); }); } return tmpaudio; } mediaControlAudio.prototype.play = function (url, obj, mode, nextorpreplay) { if (this.audio == null) { this.onIncompatible(); return; } if (url == null || url == "") { this.stop(); this.onEmpty(); return; } var isStopOrPause = false; var isgroupPrevOrNext = $(obj).attr("isgroupPrevOrNext"); if (playlist.length > 0) { if (nextorpreplay == false && this.playing == true && (this.id == obj.context.id || (isgroupPrevOrNext == "true" && obj.children().hasClass("btn-play") == false))) { isStopOrPause = true; } } else { if (nextorpreplay == false && this.nowaudio == url && (this.id == obj.context.id || (isgroupPrevOrNext == "true" && obj.children().hasClass("btn-play") == false))) { isStopOrPause = true; } } if (isStopOrPause) { if (mode == null || mode == "pause") { if (this.pausing) { this.audio.play(); this.pausing = false; this.onPlay(obj); } else { this.pause(obj); } } else if (mode == "stop") { this.stop(obj); } } else { if (this.audio != null) { this.stop(obj); } if (this.audio == null) { this.audio = this.createAudio(this); } if (playlist.length > 0) { this.audio.id = $(playlist[current]).attr("Id"); this.contenttype = $(playlist[current]).attr("contenttype"); } else { this.audio.id = obj.context.id; } this.id = obj.context.id; this.audio.src = url; this.nowaudio = url; this.playing = true; this.loading = true; this.pausing = false; this.audio.load(); this.onPlay(obj); } this.a = obj; } mediaControlAudio.prototype.stop = function (obj) { if (this.audio == null) { this.onIncompatible(); return; } if (!this.audio.ended && this.playing) { this.audio.pause(); if (this.loading == true && this.id == obj.context.id) { this.audio.removeEventListener("error", this.audioErrorHandler); this.audio.addEventListener("error", this.stopErrorHandler); this.audio.src = null; this.audio.load(); } if (this.audio.complete) { this.audio.currentTime = this.audio.initialTime || 0; } this.a.find(".maudio_play").show(); this.a.find(".maudio_stop").hide(); //new.style.cssのため、追加します if (this.a.closest("li").children().children().children().hasClass("btn-stop")) { this.a.closest("li").children().children().children().removeClass("btn-stop").addClass("btn-play"); } if (this.a.closest("td").children().children().children().hasClass("btn-stop")) { this.a.closest("td").children().children().children().removeClass("btn-stop").addClass("btn-play"); } //style.cssのため、追加します if (this.a.closest("li").hasClass("action-audio")) { this.a.closest("li").removeClass("active"); } if (this.a.closest("td").hasClass("action-audio")) { this.a.closest("td").removeClass("active"); } //プレイリスト試聴のため、追加します if (this.a.closest("p").children().children().hasClass("btn-stop")) { var playtext = $(this.a).attr("playtext"); this.a.closest("p").children().children().removeClass("btn-stop").addClass("btn-play").text(playtext); } //前曲と次曲ボタンの設定 if ($("#playinglist").length > 0) { if ($("#playinglist tr").length > 1) { var activeindex = $("#playinglist tr").filter(".active").index(); if (activeindex <= 0) { if (this.a.closest("div").children().find(".prev").find("a").hasClass("disable") == false) { this.a.closest("div").children().find(".prev").find("a").addClass("disable"); } if (this.a.closest("div").children().find(".next").find("a").hasClass("disable")) { this.a.closest("div").children().find(".next").find("a").removeClass("disable"); } } else if ($("#playinglist tr").length <= activeindex + 1) { if (this.a.closest("div").children().find(".prev").find("a").hasClass("disable")) { this.a.closest("div").children().find(".prev").find("a").removeClass("disable"); } if (this.a.closest("div").children().find(".next").find("a").hasClass("disable") == false) { this.a.closest("div").children().find(".next").find("a").addClass("disable"); } } else { if (this.a.closest("div").children().find(".prev").find("a").hasClass("disable")) { this.a.closest("div").children().find(".prev").find("a").removeClass("disable"); } if (this.a.closest("div").children().find(".next").find("a").hasClass("disable")) { this.a.closest("div").children().find(".next").find("a").removeClass("disable"); } } } else { if (this.a.closest("div").children().find(".prev").find("a").hasClass("disable") == false) { this.a.closest("div").children().find(".prev").find("a").addClass("disable"); } if (this.a.closest("div").children().find(".next").find("a").hasClass("disable") == false) { this.a.closest("div").children().find(".next").find("a").addClass("disable"); } } } this.onStop(obj); } this.nowaudio = ""; this.playing = false; this.pausing = false; this.id = ""; this.contenttype = ""; } mediaControlAudio.prototype.endedstop = function (obj) { this.nowaudio = ""; this.playing = false; this.pausing = false; this.id = ""; this.contenttype = ""; } mediaControlAudio.prototype.pause = function (obj) { if (this.audio == null) { this.onIncompatible(); return; } if (!this.audio.ended && this.playing) { this.audio.pause(); this.pausing = true; this.onPause(obj); } } mediaControlAudio.prototype.onError = function (e) { // エラーが発生した場合に実行 // オーバーライドして使う GenerateMusicControllerPopup(); $('#bgLayer').fadeIn(); $('.mod-modal.music-control').fadeIn(); } mediaControlAudio.prototype.onEnded = function () { // 再生が終了した場合に実行 // オーバーライドして使う } mediaControlAudio.prototype.onIncompatible = function () { // 非対応ブラウザの場合に実行 // オーバーライドして使う GenerateMusicControllerPopup(); $('#bgLayer').fadeIn(); $('.mod-modal.music-control').fadeIn(); } mediaControlAudio.prototype.onEmpty = function () { // URLがnull又は空の場合に実行 // オーバーライドして使う GenerateMusicControllerPopup(); $('#bgLayer').fadeIn(); $('.mod-modal.music-control').fadeIn(); } mediaControlAudio.prototype.onPlay = function (obj) { // 再生開始した場合に実行 // オーバーライドして使う } mediaControlAudio.prototype.onPause = function (obj) { // 一時停止した場合に実行 // オーバーライドして使う } mediaControlAudio.prototype.onStop = function (obj) { // 再生停止した場合に実行 // オーバーライドして使う } mediaControlAudio.prototype.onPlaying = function (obj) { // 再生開始した場合に実行 // オーバーライドして使う } // // jQuery用Audioプラグイン // var mediaAudio = new mediaControlAudio(); var mediaAudioSelf = null; var mediaAudioInit = null; var mediaAudioLoding = null; var mediaAudioClickFlag = false; var playlist = null; var current = 0; var currentobj = null; var playHashMap = new HashMap(); $(function () { var topUrlWithScheme = ""; var regs = new RegExp('^https', 'i'); if (regs.test(window.location.href)) topUrlWithScheme = topUrl.replace('http://', 'https://'); else { topUrlWithScheme = topUrl; } if (typeof (mediaAudioDummy) != "undefined" && typeof (Audio) != "undefined") { mediaAudioInit = new Audio(); if (mediaAudioInit.canPlayType("audio/mp4")) { mediaAudioInit.src = mediaAudioDummy; mediaAudioInit.onload = function (e) { mediaAudioInit.play(); } } } if (typeof (mediaAudioLodingImage) != "undefined") { mediaAudioLoding = new Image(); mediaAudioLoding.src = mediaAudioLodingImage; mediaAudioLoding.style.top = "0px"; mediaAudioLoding.style.position = "absolute"; mediaAudioLoding.style.display = "none"; document.body.appendChild(mediaAudioLoding); } var sampleLogFlg; /** * jQuery interface */ $.fn.mediaControlAudioInit = function () { mediaAudioSelf = this; mediaAudioControlInit(); $(this).off('click'); $(this).on('click', function (e) { var self = $(this); //check if button is disabled var strClass = self.attr('class'); if (strClass.toLowerCase().indexOf("btn-disabled") >= 0) { return false; } var prodid; if (self.attr("id").length == 10 || self.attr("id").length == 19) { prodid = self.attr("id").substring(2); } else { prodid = self.attr("id"); } // playHashMapに楽曲試聴URLを含むの場合 if (playHashMap.containsKey(prodid)) { mediaAudioClick(self, playHashMap.get(prodid)); } else { var responseText = $.ajax({ type: "POST", url: topUrlWithScheme + "/Sample/GetAudioSampleSingleUrl", //楽曲試聴URLを取得する data: { "id": prodid }, dataType: "Json", async: false }).responseText; response = $.parseJSON(responseText); var canPlay = false; // HTML5のaudio要素をサポートする場合 if(!!document.createElement('audio').canPlayType) { playlist = response.Audiolist; for (var i = 0; i < playlist.length; i++) { // //全曲試聴再生時に、内包曲の1曲目のsample_typeが「0」だった場合に、試聴ができないようにする // if (i == 0) { // if (playlist[i].SampleType == 0) { // canPlay = false; // GenerateMusicControllerPopup(); // $('#bgLayer').fadeIn(); // $('.mod-modal.music-control').fadeIn(); // e.preventDefault(); // break; // } // } if (playlist[i].SampleUrl) { canPlay = true; } } } if ($('#modalPane0') != null) $('#modalPane02').remove(); if ($('.modal_container') != null) $('.modal_container').empty(); if (canPlay) { playHashMap.put(prodid, response); mediaAudioSingleClick(self, response); if ($('.modal_overlay') != null) $('.modal_overlay').empty(); } else { GenerateMusicControllerPopup(); $('#bgLayer').fadeIn(); $('.mod-modal.music-control').fadeIn(); e.preventDefault(); } } }); $(this).bind('contextmenu ', function (e) { return false; }); mediaAudio.onPlay = function (obj) { mediaAudioControlInit(); if (obj != null) { mediaAudioLoadingShow(); var playnext = obj.attr("playnext"); obj.find(".maudio_play").hide(); obj.find(".maudio_pause").show(); //new.style.cssのため、追加します if (obj.closest("li").children().children().children().hasClass("btn-play")) { obj.closest("li").children().children().children().removeClass("btn-play").addClass("btn-stop"); } if (obj.closest("td").children().children().children().hasClass("btn-play")) { obj.closest("td").children().children().children().removeClass("btn-play").addClass("btn-stop"); } //プレイリスト試聴のため、追加します if (obj.closest("p").children().children().hasClass("btn-play")) { obj.closest("p").children().children().removeClass("btn-play").addClass("btn-stop").text("停止"); } var isplaylist = $(obj).attr("isplaylist"); if (isplaylist != "" && isplaylist == "true") { if ($("#playinglist").length > 0) { //再生している曲が分かるように設定 $("#playinglist tr").eq(current).find("td:eq(0)").find("img").hide(); $("#playinglist tr").eq(current).find("td:eq(0)").find("a").show(); $("#playinglist tr").eq(current).addClass("active"); $("#playingimg").attr("src", playlist[current].ImageUrl); //前曲と次曲ボタンの設定 SetNextAndPrebtn(playlist, current, obj); } } // for playAll if (playlist && playlist.length <= 1) { if ($("li.playAll").children().children().hasClass("btn-stop")) { $("li.playAll").children().children().removeClass("btn-stop").addClass("btn-play").text("全曲試聴"); } if ($("li.playAll").children().children().hasClass("btn-stop02")) { $("li.playAll").children().children().removeClass("btn-stop02").addClass("btn-play02").text("全曲試聴"); } } //for play bundle if (obj.closest("li").children().children().hasClass("btn-play")) { obj.closest("li").children().children().removeClass("btn-play").addClass("btn-stop").text("停止"); } if (obj.closest("li").children().children().hasClass("btn-play02")) { obj.closest("li").children().children().removeClass("btn-play02").addClass("btn-stop02").text("停止"); } if (obj.closest("td").children().children().hasClass("btn-play02")) { obj.closest("td").children().children().removeClass("btn-play02").addClass("btn-stop02"); } //style.cssのため、追加します if (playnext == "stop") { obj.find(".maudio_pause").hide(); obj.find(".maudio_stop").show(); } else { obj.find(".maudio_pause").show(); obj.find(".maudio_stop").hide(); } } } mediaAudio.onPause = function (obj) { if (obj != null) { obj.find(".maudio_play").show(); obj.find(".maudio_pause").hide(); obj.find(".maudio_stop").hide(); //new.style.cssのため、追加します if (obj.closest("li").children().children().children().hasClass("btn-stop")) { obj.closest("li").children().children().children().removeClass("btn-stop").addClass("btn-play"); } if (obj.closest("td").children().children().children().hasClass("btn-stop")) { obj.closest("td").children().children().children().removeClass("btn-stop").addClass("btn-play"); } //for play bundle if (obj.closest("li").children().children().hasClass("btn-stop02")) { obj.closest("li").children().children().removeClass("btn-stop02").addClass("btn-play02"); } if (obj.closest("td").children().children().hasClass("btn-stop02")) { obj.closest("td").children().children().removeClass("btn-stop02").addClass("btn-play02"); } //プレイリスト試聴のため、追加します if (obj.closest("p").children().children().hasClass("btn-stop")) { obj.closest("p").children().children().removeClass("btn-stop").addClass("btn-play"); } } } mediaAudio.onStop = function (obj) { obj.find(".maudio_play").show(); obj.find(".maudio_stop").hide(); //new.style.cssのため、追加します if (obj.closest("li").children().children().children().hasClass("btn-stop")) { obj.closest("li").children().children().children().removeClass("btn-stop").addClass("btn-play"); } if (obj.closest("td").children().children().children().hasClass("btn-stop")) { obj.closest("td").children().children().children().removeClass("btn-stop").addClass("btn-play"); } //for play bundle if (obj.closest("li").children().children().hasClass("btn-stop")) { obj.closest("li").children().children().removeClass("btn-stop").addClass("btn-play").text("全曲試聴"); } if (obj.closest("li").children().children().hasClass("btn-stop02")) { obj.closest("li").children().children().removeClass("btn-stop02").addClass("btn-play02").text("全曲試聴"); } if (obj.closest("td").children().children().hasClass("btn-stop02")) { obj.closest("td").children().children().removeClass("btn-stop02").addClass("btn-play02"); } //style.cssのため、追加します if (sampleLogFlg != "" && sampleLogFlg != null) { sampleLogFlg = ""; if (mediaAudio.contenttype != "" && mediaAudio.contenttype != null) { SampleJsonPostRequest(mediaAudio.audio.id, 1, mediaAudio.audio.currentTime, guid, mediaAudio.contenttype); } else { SampleJsonPostRequest(mediaAudio.audio.id, 1, mediaAudio.audio.currentTime, guid); } } mediaAudioLoadingHide(); mediaAudioControlInit(); } mediaAudio.onPlaying = function (obj) { mediaAudioLoadingHide(); sampleLogFlg = "SAMPLE_START"; generateGuid(); //guid作成 //試聴ログをAPIに送る(試聴ログの種類,再生時間,クライアントGUID) if (playlist.length > 0) { SampleJsonPostRequest(mediaAudio.audio.id, 0, 0, guid, $(playlist[current]).attr("contenttype")); } else { SampleJsonPostRequest(mediaAudio.audio.id, 0, 0, guid); } } $("a.bundlePlayAudio").mediaControlbundleAudioInit(); $("a.packagePlayAudio").mediaControlpackageAudioInit(); $("a.playlistPlayAudio").mediaControlplaylistAudioInit(); $("a.prevplaylistPlayAudio").mediaControlprevplaylistAudioInit(); $("a.nextplaylistPlayAudio").mediaControlnextplaylistAudioInit(); $("a.stopAudio").mediaControlstopAudioInit(); } //プレイリストの詳細ページの試聴を開始するとジャケ写サムネイルから切り替わる停止ボタン $.fn.mediaControlstopAudioInit = function () { this.click(function (e) { var self = $(this); current = 0; var obj = $(".playlistPlayAudio"); mediaAudio.stop(obj); }); } $.fn.mediaControlbundleAudioInit = function () { this.click(function (e) { var self = $(this); var strClass = self.attr('class'); if (strClass.toLowerCase().indexOf("btn-disabled") >= 0) { return false; } var prodid; if (self.attr("id").length == 10) { prodid = self.attr("id").substring(2); } else { prodid = self.attr("id"); } // HTML5のaudio要素をサポートしない場合 if(!document.createElement('audio').canPlayType) { GenerateMusicControllerPopup(); $('#bgLayer').fadeIn(); $('.mod-modal.music-control').fadeIn(); e.preventDefault(); return; } // playHashMapに楽曲試聴URLを含むの場合 if (playHashMap.containsKey(prodid)) { mediaAudioClick(self, playHashMap.get(prodid)); } else { var responseText = $.ajax({ type: "POST", url: topUrlWithScheme + "/Sample/GetAudioSampleUrl", //楽曲試聴URLを取得する data: { "id": prodid }, dataType: "Json", async: false }).responseText; response = $.parseJSON(responseText); var canPlay = false; playlist = response.Audiolist; for (var i = 0; i < playlist.length; i++) { //全曲試聴再生時に、内包曲の1曲目のsample_typeが「0」だった場合に、試聴ができないようにする if (i == 0) { if (playlist[i].SampleType == 0) { canPlay = false; GenerateMusicControllerPopup(); $('#bgLayer').fadeIn(); $('.mod-modal.bundle-control').fadeIn(); e.preventDefault(); break; } } if (playlist[i].SampleUrl) { canPlay = true; } } if ($('#modalPane0') != null) $('#modalPane02').remove(); if ($('.modal_container') != null) $('.modal_container').empty(); if (canPlay) { playHashMap.put(prodid, response); mediaAudioClick(self, response); if ($('.modal_overlay') != null) $('.modal_overlay').empty(); } else { GenerateMusicControllerPopup(); $('#bgLayer').fadeIn(); $('.mod-modal.bundle-control').fadeIn(); e.preventDefault(); } } }); } $.fn.mediaControlpackageAudioInit = function () { this.click(function (e) { var self = $(this); var strClass = self.attr('class'); if (strClass.toLowerCase().indexOf("btn-disabled") >= 0) { return false; } var prodid; if (self.attr("id").substring(0, 10) == 'package_id') { prodid = self.attr("id").substring(10); } else { prodid = self.attr("id"); } // HTML5のaudio要素をサポートしない場合 if(!document.createElement('audio').canPlayType) { GenerateMusicControllerPopup(); $('#bgLayer').fadeIn(); $('.mod-modal.music-control').fadeIn(); e.preventDefault(); return; } // playHashMapに楽曲試聴URLを含むの場合 if (playHashMap.containsKey(prodid)) { mediaAudioClick(self, playHashMap.get(prodid)); } else { var responseText = $.ajax({ type: "POST", url: topUrlWithScheme + "/Sample/GetPakageAudioSampleUrl", //楽曲試聴URLを取得する data: { "id": prodid }, dataType: "Json", async: false }).responseText; response = $.parseJSON(responseText); var canPlay = false; playlist = response.Audiolist; for (var i = 0; i < playlist.length; i++) { // //全曲試聴再生時に、内包曲の1曲目のsample_typeが「0」だった場合に、試聴ができないようにする // if (i == 0) { // if (playlist[i].SampleType == 0) { // canPlay = false; // $('#bgLayer').fadeIn(); // $('.mod-modal.music-control').fadeIn(); // e.preventDefault(); // break; // } // } if (playlist[i].SampleUrl) { canPlay = true; } } if ($('#modalPane0') != null) $('#modalPane02').remove(); if ($('.modal_container') != null) $('.modal_container').empty(); if (canPlay) { playHashMap.put(prodid, response); mediaAudioClick(self, response); if ($('.modal_overlay') != null) $('.modal_overlay').empty(); } else { GenerateMusicControllerPopup(); $('#bgLayer').fadeIn(); $('.mod-modal.music-control').fadeIn(); e.preventDefault(); } } }); } $.fn.mediaControlplaylistAudioInit = function () { this.click(function (e) { var self = $(this); var strClass = self.attr('class'); if (strClass.toLowerCase().indexOf("btn-disabled") >= 0) { return false; } var playlistid; playlistid = self.attr("id").replace(/id/, ""); // HTML5のaudio要素をサポートしない場合 if(!document.createElement('audio').canPlayType) { GenerateMusicControllerPopup(); $('#bgLayer').fadeIn(); $('.mod-modal.music-control').fadeIn(); e.preventDefault(); return; } // playHashMapに楽曲試聴URLを含むの場合 if (playHashMap.containsKey(playlistid)) { mediaAudioClick(self, playHashMap.get(playlistid)); } else { var responseText = $.ajax({ type: "POST", url: topUrlWithScheme + "/Sample/GetPlaylistAudioSampleUrl", //楽曲試聴URLを取得する data: { "id": playlistid }, dataType: "Json", async: false }).responseText; response = $.parseJSON(responseText); var canPlay = false; playlist = response.Audiolist; for (var i = 0; i < playlist.length; i++) { if (playlist[i].SampleUrl) { canPlay = true; } } if ($('#modalPane0') != null) $('#modalPane02').remove(); if ($('.modal_container') != null) $('.modal_container').empty(); if (canPlay) { playHashMap.put(playlistid, response); mediaAudioClick(self, response); if ($('.modal_overlay') != null) $('.modal_overlay').empty(); } else { GenerateMusicControllerPopup(); $('#bgLayer').fadeIn(); $('.mod-modal.bundle-control').fadeIn(); e.preventDefault(); } } }); } $.fn.mediaControlprevplaylistAudioInit = function () { this.click(function (e) { var self = $(this); var strClass = self.attr('class'); if (strClass.toLowerCase().indexOf("disable") >= 0) { return false; } var playnext = self.attr("playnext"); var obj = $(self).closest("div").find("p").children(); var playlistid; if ($("#playinglist tr").filter(".active").length > 0) { current = $("#playinglist tr").filter(".active").index(); $("#playinglist tr").filter(".active").find("td:eq(0)").find("img").show(); $("#playinglist tr").filter(".active").find("td:eq(0)").find("a").hide(); $("#playinglist tr").filter(".active").removeClass("active"); } playlistid = self.attr("id").replace(/prevplaylistid/, ""); playlist = playHashMap.get(playlistid).Audiolist; //skip until sampleURL <> "" current = getplayIndex(playlist, current, false); SetNextAndPrebtn(playlist, current, obj); if (current < 0) { current = 0; //再生している曲がないので、初期化時同じで表示する if ($("#playinglist").length > 0) { var defaultsrc = $("#playingimg").attr("defaultsrc"); $("#playingimg").attr("src", defaultsrc); } mediaAudio.stop(obj); return false; } if (obj.children().hasClass("btn-stop")) { mediaAudio.play(playlist[current].SampleUrl, obj, playnext, true); } else { $("#playinglist tr").eq(current).addClass("active"); $("#playingimg").attr("src", playlist[current].ImageUrl); } }); } $.fn.mediaControlnextplaylistAudioInit = function () { this.click(function (e) { var self = $(this); var strClass = self.attr('class'); if (strClass.toLowerCase().indexOf("disable") >= 0) { return false; } var playlistid; playlistid = self.attr("id").replace(/nextplaylistid/, ""); // HTML5のaudio要素をサポートしない場合 if(!document.createElement('audio').canPlayType) { GenerateMusicControllerPopup(); $('#bgLayer').fadeIn(); $('.mod-modal.music-control').fadeIn(); e.preventDefault(); return; } var playnext = self.attr("playnext"); var obj = $(self).closest("div").find("p").children(); // playHashMapに楽曲試聴URLを含むの場合 if (playHashMap.containsKey(playlistid) == false) { var responseText = $.ajax({ type: "POST", url: topUrlWithScheme + "/Sample/GetPlaylistAudioSampleUrl", //楽曲試聴URLを取得する data: { "id": playlistid }, dataType: "Json", async: false }).responseText; response = $.parseJSON(responseText); var canPlay = false; playlist = response.Audiolist; for (var i = 0; i < playlist.length; i++) { if (playlist[i].SampleUrl) { canPlay = true; } } if ($('#modalPane0') != null) $('#modalPane02').remove(); if ($('.modal_container') != null) $('.modal_container').empty(); if (canPlay) { playHashMap.put(playlistid, response); if ($('.modal_overlay') != null) $('.modal_overlay').empty(); } else { GenerateMusicControllerPopup(); $('#bgLayer').fadeIn(); $('.mod-modal.bundle-control').fadeIn(); e.preventDefault(); } } if ($("#playinglist tr").filter(".active").length > 0) { current = $("#playinglist tr").filter(".active").index(); $("#playinglist tr").filter(".active").find("td:eq(0)").find("img").show(); $("#playinglist tr").filter(".active").find("td:eq(0)").find("a").hide(); $("#playinglist tr").filter(".active").removeClass("active"); } else { current = -1; } playlist = playHashMap.get(playlistid).Audiolist; current = getplayIndex(playlist, current, true); SetNextAndPrebtn(playlist, current, obj); if (current + 1 > playlist.length) { //current = 0; //再生している曲がないので、初期化時同じで表示する if ($("#playinglist").length > 0) { var defaultsrc = $("#playingimg").attr("defaultsrc"); $("#playingimg").attr("src", defaultsrc); } mediaAudio.stop(obj); return false; } if (obj.children().hasClass("btn-stop")) { mediaAudio.play(playlist[current].SampleUrl, obj, playnext, true); } else { $("#playinglist tr").eq(current).addClass("active"); $("#playingimg").attr("src", playlist[current].ImageUrl); } }); } function mediaAudioClick(self, afile) { currentobj = null; current = 0; if (afile == "") { playlist = ""; } else { playlist = afile.Audiolist; } var onError = self.attr("onError"); if (typeof (onError) != "undefined") { mediaAudio.onError = function (e) { mediaAudioControlInit(); eval(onError); }; } else { mediaAudio.onError = function (e) { mediaAudioControlInit(); }; } var onEnded = self.attr("onEnded"); if (typeof (onEnded) != "undefined") { mediaAudio.onEnded = function (e) { var currentId = mediaAudio.audio.id; var currentTime = mediaAudio.audio.duration; mediaAudio.stop(); mediaAudioControlInit(); eval(onEnded); if (sampleLogFlg != "" && sampleLogFlg != null) { sampleLogFlg = ""; if (playlist.length > 1) { SampleJsonPostRequest(currentId, 2, currentTime, guid, playlist[current].ContentDiv); mediaAudio.stop(); if (playlist.length > current + 1) { current = current + 1; mediaAudio.play(playlist[current].SampleUrl, currentobj, playnext, false); } else { currentobj = null; current = 0; } } else { SampleJsonPostRequest(currentId, 2, currentTime, guid); } } }; } else { mediaAudio.onEnded = function (e) { var currentId = mediaAudio.audio.id; var currentTime = mediaAudio.audio.duration; mediaAudio.stop(); mediaAudioControlInit(); if (sampleLogFlg != "" && sampleLogFlg != null) { sampleLogFlg = ""; if (playlist.length > 1) { SampleJsonPostRequest(currentId, 2, currentTime, guid, playlist[current].ContentDiv); if (current != playlist.length - 1) { $("#playinglist tr").eq(current).removeClass("active"); } current = getplayIndex(playlist, current, true); if (playlist.length > current) { //プレイリストのとき、自動的に再生しない var isgroupPrevOrNext = $(currentobj).attr("isgroupPrevOrNext"); if (isgroupPrevOrNext == "true") { $("#playinglist tr").eq(current).addClass("active"); $("#playingimg").attr("src", playlist[current].ImageUrl); //プレイリスト試聴のため、追加します if (currentobj.closest("p").children().children().hasClass("btn-stop")) { var playtext = $(currentobj).attr("playtext"); currentobj.closest("p").children().children().removeClass("btn-stop").addClass("btn-play").text(playtext); //前曲と次曲ボタンの設定 SetNextAndPrebtn(playlist, current, currentobj); } } else { mediaAudio.play(playlist[current].SampleUrl, currentobj, playnext, false); } } else { currentobj.find(".maudio_play").show(); currentobj.find(".maudio_stop").hide(); //new.style.cssのため、追加します if (currentobj.closest("li").children().children().children().hasClass("btn-stop")) { currentobj.closest("li").children().children().children().removeClass("btn-stop").addClass("btn-play"); } if (currentobj.closest("td").children().children().children().hasClass("btn-stop")) { currentobj.closest("td").children().children().children().removeClass("btn-stop").addClass("btn-play"); } //プレイリスト試聴のため、追加します if (currentobj.closest("p").children().children().hasClass("btn-stop")) { var playtext = $(currentobj).attr("playtext"); currentobj.closest("p").children().children().removeClass("btn-stop").addClass("btn-play").text(playtext); } //style.cssのため、追加します ///change from button stop All to button pla yAll if (currentobj.closest("li").children().children().hasClass("btn-stop02")) { currentobj.closest("li").children().children().removeClass("btn-stop02").addClass("btn-play02").text("全曲試聴"); } // bundle playAll if (currentobj.closest("li").children().children().hasClass("btn-stop")) { currentobj.closest("li").children().children().removeClass("btn-stop").addClass("btn-play").text("全曲試聴"); } currentobj = null; current = 0; } } else { // package playAll will be changed here, because somehow the .onStop event is not fired when music ends on package if ($("li.playAll").children().children().hasClass("btn-stop02")) { $("li.playAll").children().children().removeClass("btn-stop02").addClass("btn-play02").text("全曲試聴"); } SampleJsonPostRequest(currentId, 2, currentTime, guid); if ($("li.stopAll") != null) { $("li.stopAll").removeClass("stopAll").addClass("playAll"); } if (currentobj != null) { //プレイリスト試聴のため、追加します if (currentobj.closest("p").children().children().hasClass("btn-stop")) { var playtext = $(currentobj).attr("playtext"); currentobj.closest("p").children().children().removeClass("btn-stop").addClass("btn-play").text(playtext); } } } } }; } var onIncompatible = self.attr("onIncompatible"); if (typeof (onIncompatible) != "undefined") { mediaAudio.onIncompatible = function () { mediaAudioControlInit(); eval(onIncompatible); }; } else { mediaAudio.onIncompatible = function () { mediaAudioControlInit(); }; } var onEmpty = self.attr("onEmpty"); if (typeof (onEmpty) != "undefined") { mediaAudio.onEmpty = function () { mediaAudioControlInit(); eval(onEmpty); }; } else { mediaAudio.onEmpty = function () { mediaAudioControlInit(); }; } var playnext = self.attr("playnext"); if (playlist.length == 0) { mediaAudio.play("", self, playnext, false); } else if (playlist.length == 1) { var isplaylist = self.attr("isplaylist"); if (isplaylist != "" && isplaylist == "true") { currentobj = self; } mediaAudio.play(playlist[0].SampleUrl, self, playnext, false); } else { currentobj = self; //選択された曲を取得する var isgroupPrevOrNext = $(currentobj).attr("isgroupPrevOrNext"); if ($("#playinglist tr").filter(".active").length > 0 && isgroupPrevOrNext == "true" && currentobj.children().hasClass("btn-play")) { current = $("#playinglist tr").filter(".active").index(); } ///skip until sampleURL <> "" if (null == playlist[current].SampleUrl || "" === playlist[current].SampleUrl) { for (var i = current; i < playlist.length; i++) { if ("" != playlist[i].SampleUrl) { current = i; break; } } } mediaAudio.play(playlist[current].SampleUrl, self, playnext, false); } } ///for button single click function mediaAudioSingleClick(self, afile) { currentobj = null; current = 0; if (afile == "") { playlist = ""; } else { playlist = afile.Audiolist; } var onError = self.attr("onError"); if (typeof (onError) != "undefined") { mediaAudio.onError = function (e) { mediaAudioControlInit(); eval(onError); }; } else { mediaAudio.onError = function (e) { mediaAudioControlInit(); }; } var onEnded = self.attr("onEnded"); if (typeof (onEnded) != "undefined") { mediaAudio.onEnded = function (e) { var currentId = mediaAudio.audio.id; var currentTime = mediaAudio.audio.duration; mediaAudio.stop(); mediaAudioControlInit(); eval(onEnded); if (sampleLogFlg != "" && sampleLogFlg != null) { sampleLogFlg = ""; SampleJsonPostRequest(currentId, 2, currentTime, guid); } }; } else { mediaAudio.onEnded = function (e) { var currentId = mediaAudio.audio.id; var currentTime = mediaAudio.audio.duration; mediaAudio.stop(); mediaAudioControlInit(); if (sampleLogFlg != "" && sampleLogFlg != null) { sampleLogFlg = ""; if (playlist.length > 1) { SampleJsonPostRequest(currentId, 2, currentTime, guid, playlist[current].ContentDiv); if (playlist.length > current + 1) { current = current + 1; mediaAudio.play(playlist[current].SampleUrl, currentobj, playnext, false); } else { currentobj.find(".maudio_play").show(); currentobj.find(".maudio_stop").hide(); //new.style.cssのため、追加します if (currentobj.closest("li").children().children().children().hasClass("btn-stop")) { currentobj.closest("li").children().children().children().removeClass("btn-stop").addClass("btn-play"); } if (currentobj.closest("td").children().children().children().hasClass("btn-stop")) { currentobj.closest("td").children().children().children().removeClass("btn-stop").addClass("btn-play"); } //style.cssのため、追加します if (currentobj.closest("li").hasClass("action-audio")) { currentobj.closest("li").removeClass("active"); } if (currentobj.closest("td").hasClass("action-audio")) { currentobj.closest("td").removeClass("active"); } ///change from button stop All to button pla yAll if (currentobj.closest("li").children().children().hasClass("btn-stop02")) { currentobj.closest("li").children().children().removeClass("btn-stop02").addClass("btn-play02"); } currentobj = null; current = 0; } } else { SampleJsonPostRequest(currentId, 2, currentTime, guid); } } }; } var onIncompatible = self.attr("onIncompatible"); if (typeof (onIncompatible) != "undefined") { mediaAudio.onIncompatible = function () { mediaAudioControlInit(); eval(onIncompatible); }; } else { mediaAudio.onIncompatible = function () { mediaAudioControlInit(); }; } var onEmpty = self.attr("onEmpty"); if (typeof (onEmpty) != "undefined") { mediaAudio.onEmpty = function () { mediaAudioControlInit(); eval(onEmpty); }; } else { mediaAudio.onEmpty = function () { mediaAudioControlInit(); }; } var playnext = self.attr("playnext"); if (playlist.length == 0) { mediaAudio.play("", self, playnext, false); } else if (playlist.length == 1) { mediaAudio.play(playlist[0].SampleUrl, self, playnext, false); } else { currentobj = self; ///skip until sampleURL <> "" if (null == playlist[current].SampleUrl || "" === playlist[current].SampleUrl) { for (var i = current; i < playlist.length; i++) { if ("" != playlist[i].SampleUrl) { current = i; break; } } } mediaAudio.play(playlist[current].SampleUrl, self, playnext, false); } } function mediaAudioControlInit() { var playhtml = mediaAudioSelf.find(".maudio_play"); var pausehtml = mediaAudioSelf.find(".maudio_pause"); var stophtml = mediaAudioSelf.find(".maudio_stop"); playhtml.show(); pausehtml.hide(); stophtml.hide(); //new.style.cssのため、追加します if (mediaAudioSelf.closest("li").children().children().children().hasClass("btn-stop")) { mediaAudioSelf.closest("li").children().children().children().removeClass("btn-stop").addClass("btn-play"); } if (mediaAudioSelf.closest("td").children().children().children().hasClass("btn-stop")) { mediaAudioSelf.closest("td").children().children().children().removeClass("btn-stop").addClass("btn-play"); } //style.cssのため、追加します if (mediaAudioSelf.closest("li").hasClass("action-audio")) { mediaAudioSelf.closest("li").removeClass("active"); } if (mediaAudioSelf.closest("td").hasClass("action-audio")) { mediaAudioSelf.closest("td").removeClass("active"); } //プレイリスト試聴のため、追加します if (mediaAudioSelf.closest("p").children().children().hasClass("btn-stop")) { var playtext = $(mediaAudioSelf).attr("playtext"); mediaAudioSelf.closest("p").children().children().removeClass("btn-stop").addClass("btn-play").text(playtext); } //再生している曲がないので、初期化時同じで表示する if ($("#playinglist").length > 0) { $("#playinglist tr").filter(".active").find("td:eq(0)").find("img").show(); $("#playinglist tr").filter(".active").find("td:eq(0)").find("a").hide(); } } function mediaAudioLoadingShow() { if (mediaAudioLoding != null && mediaAudioLoding.complete) { var heightMain = window.innerHeight; var widthMain = document.body.offsetWidth; mediaAudioLoding.style.left = ((widthMain - mediaAudioLoding.width) / 2) + "px"; mediaAudioLoding.style.top = (((heightMain - mediaAudioLoding.height) / 2) + window.pageYOffset) + "px"; mediaAudioLoding.style.display = "block"; } } function mediaAudioLoadingHide() { mediaAudioLoding.style.display = "none"; } function Sleep(T) { var d1 = new Date().getTime(); var d2 = new Date().getTime(); while (d2 < d1 + 1000 * T) { d2 = new Date().getTime(); } return; } $("a.playAudio").mediaControlAudioInit(); }); // // jQuery用Videoプラグイン // $(function () { /** * jQuery interface */ $.fn.mediaControlVideoInit = function () { var playhtml = this.find(".mvideo_play"); var pausehtml = this.find(".mvideo_pause"); var stophtml = this.find(".mvideo_stop"); playhtml.show(); pausehtml.hide(); stophtml.hide(); //new.style.cssのため、追加します if (this.closest("li").hasClass("stop")) { this.closest("li").removeClass("stop").addClass("audition ui-toggleactive"); } if (this.closest("td").hasClass("stop")) { this.closest("td").removeClass("stop").addClass("audition ui-toggleactive"); } //style.cssのため、追加します if (this.closest("li").hasClass("action-audio")) { this.closest("li").removeClass("active"); } if (this.closest("td").hasClass("action-audio")) { this.closest("td").removeClass("active"); } for (i = 0; i < this.length; i++) { var tmpThis = this[i]; if (isIOS) { // if (window.devicePixelRatio != null && window.devicePixelRatio != "undefined" && window.devicePixelRatio > 1) { //iPhone4+ $(tmpThis).click(function () { if (mediaAudio.a != null) { mediaAudio.stop(mediaAudio.a); } var videoObjs = $(this).find("video"); var videoObj = null; if (videoObjs.length > 0) { videoObj = videoObjs[0]; } else { $(this).append("