(function($) { "use strict"; $(".myCast").append('
'); $.fn.myCast = function(options) { var settings = $.extend({ URL: "", version: "icecast", stream_id: 1, mount_point: "aac_autodj", type: "/;type=mp3", streampath: "/stream?icy=http", enable_cors: !0, cors: "", artwork: !0, logo: "https://a48fm.com/imag/logo.png", vertical_layout: !1, bg: "grey", accent: "deeporange", blur: !1, blur_opacity: 0.16, lang: "en", src: "", volume: 0.75, autoplay: !1 }, options); var thisObj; thisObj = this; var audio; var cBGwpr = $(".bg-wpr", thisObj); var ppBtn = $(".ppBtn", thisObj); var cVolumeSlider = $(".volume-slider", thisObj); var cVolumeIcon = $(".vol-icon", thisObj); audio = new Audio(); audio.volume = settings.volume; audio.preload = "auto"; $(".album-cover, .album-cover2", thisObj).css({ 'background-image': 'url(' + settings.logo + ')', 'background-size': '100% 100%' }); $(".blur", thisObj).css({ 'background-image': 'url(' + settings.logo + ')', 'background-position': 'center center', 'opacity': +settings.blur_opacity, 'filter': 'blur(5px)', '-ms-filter': 'blur(5px)', '-webkit-filter': 'blur(5px)', 'transition': 'opacity 1s ease-in', 'transition-delay': '1.5s' }); thisObj.each(function() { if (settings.bg.length > 0) { $(cBGwpr).addClass('bg-' + settings.bg) } if (settings.accent.length > 0) { $(cBGwpr).addClass("accent-" + settings.accent) } if (settings.blur == !0) { $(".blur", thisObj).css('display', 'block') } if (settings.autoplay == !0) { audio.autoplay = !0 } if (settings.vertical_layout == !0) { $(".player-wpr", thisObj).addClass("vertical"); $(".album-cover-wpr", thisObj).addClass("hidden") } ShareButtons(); if (settings.version == 1) { audio.src = settings.URL + "/;type=mp3"; settings.src = audio.src; var dataURL = settings.cors + "?q=" + settings.URL + "/7.html"; var hisURL = settings.cors + "?q=" + settings.URL + "/played.html"; getSD(dataURL, hisURL) } else if (settings.version == 2) { audio.src = settings.URL + settings.streampath; settings.src = audio.src; if (settings.enable_cors == !0) { var dataURL = settings.cors + "?q=" + settings.URL + "/stats?sid=" + settings.stream_id + "&json=1&callback=?"; var hisURL = settings.cors + "?q=" + settings.URL + "/played?sid=" + settings.stream_id + "&type=json&callback=?" } else { var dataURL = settings.URL + "/stats?sid=" + settings.stream_id + "&json=1&callback=?"; var hisURL = settings.URL + "/played?sid=" + settings.stream_id + "&type=json&callback=?" } getSD(dataURL, hisURL) } else if (settings.version == "icecast") { audio.src = settings.URL + "/" + settings.mount_point; settings.src = audio.src; var dataURL = settings.URL + "/status-json.xsl"; getIC(dataURL) } }); function togglePlying(tog, bool) { $(tog).toggleClass("playing", bool) } function playHandling() { if (audio.paused) { audio.src = settings.src; audio.play(); var $playing = $('.ppBtn.playing'); if ($(thisObj).find($playing).length === 0) { $playing.click() } } else { audio.pause() } } $(audio).on("playing", function() { togglePlying(ppBtn, !0); $(ppBtn).addClass("stop-btn"); $(ppBtn).removeClass("play-btn") }); $(audio).on("pause", function() { togglePlying(ppBtn, !1); $(ppBtn).removeClass("stop-btn"); $(ppBtn).addClass("play-btn") }); $(ppBtn, thisObj).on("click tap", function() { playHandling() }); var volVal = audio.volume * 100; $(cVolumeSlider).val(volVal); $(".vol-value", thisObj).text(volVal + '%'); volumeIcon(); function volumeIcon() { if ($(cVolumeSlider).val() < 55 && $(cVolumeSlider).val() > 0) { $(cVolumeIcon).removeClass("vol-icon3 vol-icon1"); $(cVolumeIcon).addClass("vol-icon2") } if ($(cVolumeSlider).val() == 0) { $(cVolumeIcon).removeClass("vol-icon2 vol-icon3"); $(cVolumeIcon).addClass("vol-icon1") } else if ($(cVolumeSlider).val() > 55) { $(cVolumeIcon).removeClass("vol-icon1 vol-icon2"); $(cVolumeIcon).addClass("vol-icon3") } } if (navigator.appName == 'Microsoft Internet Explorer' || !!(navigator.userAgent.match(/Trident/) || navigator.userAgent.match(/rv:11/)) || (typeof $.browser !== "undefined" && $.browser.msie == 1)) { cVolumeSlider.change('input', function() { audio.volume = parseInt(this.value, 10) / 100; var volumeVal = audio.volume * 100; var volumeVal = Math.round(volumeVal); $(".vol-value", thisObj).text(volumeVal + '%'); volumeIcon() }, !1) } else { cVolumeSlider.on('input', function() { var volumeVal = $(cVolumeSlider).val(); audio.volume = volumeVal / 100; var volumeVal = Math.round(volumeVal); $(".vol-value", thisObj).text(volumeVal + '%') volumeIcon() }) } function getTag() { return $(thisObj).attr("data-tag") } function formatArtist(artist) { artist = artist.toLowerCase(); artist = $.trim(artist); if (artist.includes("&")) { artist = artist.substr(0, artist.indexOf(' &')) } else if (artist.includes("feat")) { artist = artist.substr(0, artist.indexOf(' feat')) } else if (artist.includes("ft.")) { artist = artist.substr(0, artist.indexOf(' ft.')) } return artist } function formatTitle(title) { title = title.toLowerCase(); title = $.trim(title); if (title.includes("&")) { title = title.replace('&', 'and') } else if (title.includes("(")) { title = title.substr(0, title.indexOf(' (')) } else if (title.includes("ft")) { title = title.substr(0, title.indexOf(' ft')) } return title } function getSD(url, sHistory) { if (settings.version == 1) { function foo() { $.ajax({ type: 'GET', dataType: 'html', url: url, success: function(data) { var result = $.parseHTML(data)[1].data; var songtitle = result.split(",")[6]; if (songtitle != getTag()) { updateTag(songtitle); var songtitleSplit = songtitle.split('-'); var artist = songtitleSplit[0]; var title = songtitleSplit[1]; updateArtist(artist); updateTitle(title); updateServerInfo(result); if (settings.artwork == !0) { getCover(artist, title) }; updateHistory(sHistory) } }, error: function() { console.log("error getting metadata") } }) } foo(); setInterval(foo, 12000) } else if (settings.version == 2) { function foo() { $.ajax({ dataType: 'jsonp', url: url, success: function(result) { if (result.songtitle != getTag()) { updateTag(result.songtitle); var songtitle = result.songtitle; var songtitleSplit = songtitle.split('-'); var artist = songtitleSplit[0]; var title = songtitleSplit[1]; updateArtist(artist); updateTitle(title); updateServerInfo(result); if (settings.artwork == !0) { getCover(artist, title) }; updateHistory(sHistory) } }, error: function() { console.log("error getting metadata") } }) } foo(); setInterval(foo, 12000) } } function getIC(url) { if (settings.version == "icecast") { function foo() { $.ajax({ dataType: 'json', url: url, success: function(data) { var result = findMPData(data); if (result.title != getTag()) { updateTag(result.title); var songtitle = result.title; var songtitleSplit = songtitle.split('-'); var artist = songtitleSplit[0]; var title = songtitleSplit[1]; updateArtist(artist); updateTitle(title); getCover(artist, title); if (icHis.length >= 20) { icHis = [] } updateHistoryIC(artist, title); updateServerInfoIC(result) } }, error: function() { console.log("error getting metadata") } }) } foo(); setInterval(foo, 12000) } } var icHis = new Array(); function findMPData(data) { if (data.icestats.source.length === undefined) { return data.icestats.source } else { for (var i = 0; i < data.icestats.source.length; i++) { var str = data.icestats.source[i].listenurl; if (str.indexOf(settings.mount_point) >= 0) { return data.icestats.source[i] } } } } function updateArtist(name) { $(".artist-name", thisObj).text(name); $(".artist-name", thisObj).addClass("lightSpeedIn"); setTimeout(function() { $(".artist-name", thisObj).removeClass("lightSpeedIn") }, 3000) } function updateTitle(name) { $(".track-title", thisObj).text(name); $(".track-title", thisObj).addClass("lightSpeedIn"); setTimeout(function() { $(".track-title", thisObj).removeClass("lightSpeedIn") }, 3000) } function updateTag(data) { $(thisObj).attr("data-tag", data) } function getCover(artist, title) { artist = formatArtist(artist); title = formatTitle(title); artist = encodeURI(artist); title = encodeURI(title); var url = "https://itunes.apple.com/search?term==" + artist + "-" + title + "&media=music&limit=1"; $.ajax({ dataType: 'jsonp', url: url, success: function(data) { if (data.results.length == 1) { cover = data.results[0].artworkUrl100; cover = cover.replace('100x100', '300x300') } else { var cover = settings.logo } var blur_opacity = settings.blur_opacity; if (settings.blur_opacity < 0.31) { var blur_level = "5px" } else { var blur_level = "18px" } $(".album-cover, .album-cover2", thisObj).css({ 'background-image': 'url(' + cover + ')', 'background-size': '100% 100%' }); $(".album-cover, .album-cover2", thisObj).addClass("fadeIn"); setTimeout(function() { $(".album-cover, .album-cover2", thisObj).removeClass("fadeIn") }, 5000); $(".blur", thisObj).css({ 'background-image': 'url(' + cover + ')', 'background-position': 'center center', 'opacity': +blur_opacity, 'filter': 'blur(' + blur_level + ')', '-ms-filter': 'blur(' + blur_level + ')', '-webkit-filter': 'blur(' + blur_level + ')', 'transition': 'opacity 1s ease-in', 'transition-delay': '1.5s' }) }, error: function() { console.log("Error on track title " + encodeURI(title)) } }) } function updateServerInfo(result) { if (settings.version == 1) { $(".listenersTxt", thisObj).text(listenersTxt + ": " + result.split(",")[0]); $(".qualityTxt", thisObj).text(qualityTxt + ": " + result.split(",")[5] + "kbps") } else if (settings.version == 2) { $(".listenersTxt", thisObj).text(listenersTxt + ": " + result.currentlisteners); $(".qualityTxt", thisObj).text(qualityTxt + ": " + result.bitrate + "k"); $(".genreTxt", thisObj).text(genreTxt + ": " + result.servergenre + ", " + result.servergenre2) } } function updateHistory(url) { $(".history ul li", thisObj).remove(); if (settings.version == 1) { $.ajax({ type: 'GET', url: url, dataType: 'html', success: function(data) { var result = $(data).find("table")[2]; var table = $(result); var tbody = $(result).find("tbody"); var tr = $(tbody).find("tr"); var td = $(tr).find("td"); $(".history ul", thisObj).append("
  • " + "1 - " + td[3].innerHTML + "
  • " + "
  • " + "2 - " + td[6].innerHTML + "
  • " + "
  • " + "3 - " + td[8].innerHTML + "
  • " + "
  • " + "4 - " + td[10].innerHTML + "
  • " + "
  • " + "5 - " + td[12].innerHTML + "
  • " + "
  • " + "6 - " + td[14].innerHTML + "
  • " + "
  • " + "7 - " + td[16].innerHTML + "
  • ") } }) } else if (settings.version == 2) { $.ajax({ dataType: 'jsonp', url: url, success: function(data) { for (var i = 1; i < data.length; i++) { var rows = i; var title = data[i].title; $(".history ul", thisObj).append("
  • " + rows + " - " + title + "
  • ") } } }) } } function updateHistoryIC(artist, title) { addToArray(title, artist); createHisList() } function addToArray(title, artist) { icHis.unshift({ ar: artist, tt: title }) } function createHisList() { $(".history ul li", thisObj).remove(); for (var i = 0; i < icHis.length; i++) { var rows = i; var artist = icHis[i].ar; var title = icHis[i].tt; $(".history ul", thisObj).append("
  • " + rows + " - " + artist + " - " + title + "
  • ") } } function updateServerInfoIC(data) { $(".listenersTxt", thisObj).text(listenersTxt + ": " + data.listeners); $(".qualityTxt", thisObj).text(qualityTxt + ": " + data.bitrate + "k"); $(".genreTxt", thisObj).text(genreTxt + ": " + data.genre) } $('.more', thisObj).on("click tap", function() { if (!$(".more", thisObj).hasClass("morert")) { $(".more", thisObj).addClass("morert"); $(".controls-wpr, .track-info, .album-cover-wpr", thisObj).fadeOut("slow"); $(".data-panel", thisObj).delay(600).fadeIn(400) } else if ($(".more", thisObj).hasClass("morert")) { $(".more", thisObj).removeClass("morert"); $(".data-panel", thisObj).fadeOut(400); $(".controls-wpr, .track-info, .album-cover-wpr", thisObj).delay(600).fadeIn(400) } }); function ShareButtons() { setTimeout(function() { "use strict"; var trackURL = window.location.href; FBShareLink(trackURL); TWShareLink(trackURL); GPShareLink(trackURL) }, 3500) } function FBShareLink(siteURL) { var url = "https://www.facebook.com/sharer/sharer.php?u=" + encodeURIComponent(siteURL); $("li.afacebook", thisObj).find("a").attr("href", url) } function TWShareLink(siteURL) { var url = "https://twitter.com/home?status=" + encodeURIComponent(siteURL); $("li.atwitter", thisObj).find("a").attr("href", url) } function GPShareLink(siteURL) { var url = "https://plus.google.com/share?url=" + encodeURIComponent(siteURL); $("li.agoogle", thisObj).find("a").attr("href", url) } if (/Android|webOS|iPhone|iPad|iPod|Opera Mini/i.test(navigator.userAgent)) { $(cVolumeSlider).addClass("dis-none"); $(".vol-value").addClass("dis-none"); $(cVolumeIcon).addClass("vol-dis") } if (settings.lang == "en") { var listenersTxt = "Online"; var qualityTxt = "Qlty"; var genreTxt = "Genre" } if (settings.lang == "es") { var listenersTxt = "Listeners"; var qualityTxt = "Kbps"; var genreTxt = "Genre" } if (settings.lang == "pt") { var listenersTxt = "Conectados"; var qualityTxt = "Qualidade"; var genreTxt = "GΓͺnero" } if (settings.lang == "fr") { var listenersTxt = "En Ligne"; var qualityTxt = "QualitΓ©"; var genreTxt = "Genre" } if (settings.lang == "it") { var listenersTxt = "In Linea"; var qualityTxt = "QualitΓ "; var genreTxt = "Genere" } } })(jQuery)