/**
* author: koder_alex
*/
var audio = function () {
var e = !1, t = !1, a = !1, n = !1, o = function (t) {
(e || n !== !1) && (e = !1, v && n === !1 || (a = !0, s.pause())), cancelEvent(t), removeEvent(s, "play", o), removeEvent(document, isTouch ? "touchstart" : "click", r);
}, i = function () {
n !== !1 && n();
}, r = function () {
t && (t = !1, e = !0, s.play(),removeEvent(document, isTouch ? "touchstart" : "click", r));
}, s = b(), l = Math.random().toString(36).substr(2), c = [], u = null, d = {}, p = "", v = !1, f = !1, g = !1,
h = !1, _ = null, m = !1, y = !1;
function b(t) {
var s = window.Audio ? new Audio : ce("audio");
s.onerror = function(e){
audio.pause();
};
return s.autobuffer = !0, s.muted = !1, t && (s.volume = t.volume, removeEvent(t, "play", w), removeEvent(t, "pause", C), removeEvent(t, "progress", k), removeEvent(t, "timeupdate", x), removeEvent(t, "ended", S), removeEvent(t, "play", o), removeEvent(t, "progress canplaythrough", i), removeEvent(document, isTouch ? "touchstart" : "click", r), t.muted = !0, t.pause(), t.src = null), h = !1, f = !1, g = !1, e = !1, a = !1, n = !1, addEvent(s, "play", w), addEvent(s, "pause", C), addEvent(s, "progress",
k), addEvent(s, "timeupdate", x), addEvent(s, "ended", S), addEvent(s, "play", o), addEvent(s, "progress canplaythrough", i), addEvent(document, isTouch ? "touchstart" : "click", r), s;
}
function w() {
v || (v = !0, audio.onPlay(!0), ssSet("audio_play", "1"), clearTimeout(_), _ = setTimeout(E, 100));
}
function C() {
return a ? void(a = !1) : void(v && (v = !1, audio.onPause(!0), ssSet("audio_play", "0"), clearTimeout(_)));
}
function k() {
audio.onProgress(!0);
}
function x() {
a || (audio.onProgress(!0), audio.onPositionChanged(!0, audio.position(), audio.duration()), ssSet("audio_pos", audio.position()), !h && s.duration - s.currentTime < .5 && (h = !0), f && (f = !1, audio.next()));
}
function S() {
audio.onEnded(!0), h ? (h = !1, audio.next()) : f = !0;
}
function B() {
return c[u] || !1;
}
function z() {
return B().id || !1;
}
function T(e) {
e && (s.src = e.src, ssSet("audio_src", e.src), s.load(), audio.onSelect(!0, e));
if(e) {
var l = ge("listenMusic");
l && (hide(ge('pp_status_link')),hide(ge('pp_status_info')), show(l), val(geByClass1("ai_artist", l), e.artist), val(geByClass1("ai_title", l), e.title));
var li = ge("listenMusicInfo");
li && (val(geByClass1("ai_artist", li), e.artist), val(geByClass1("ai_title", li), e.title));
}
}
function E() {
if (v) {
var e = lsGet("audio_current_player");
l != e ? audio.pause() : _ = setTimeout(E, 100);
}
}
function j() {
var e = z();
ssSet("audio_id", e), ssSet("audio_pos", 0), m && (document.cookie = m + "=" + e + "; expires=" + (new Date(timeNow() + 864e5)).toUTCString() + "; path=" + y);
}
function A(e) {
ssSet("audio_query", e), m && (document.cookie = m + "q=" + encodeURIComponent(e) + "; expires=" + (new Date(timeNow() + 864e5)).toUTCString() + "; path=" + y);
}
var checkRadio = null;
function isRadio(){
if(checkRadio === null)
checkRadio = (ge('radio_container') === null);
return checkRadio;
}
var repeat = false;
return {
init: function (e) {
return audio.support ? (e.cookie && (m = e.cookie, y = e.cookie_path || "/"), void onDOMReady(function () {
var a = ssGet("audio_id");
if (a) {
var n = ssGet("audio_pos"), o = ssGet("audio_vol"), i = ssGet("audio_play");
audio.select(a), "1" == i && (audio.isRadio() && (null !== n && audio.position(n)), null !== o && audio.volume(o), t = !0, audio.play());
}
})) : !1;
},
isRadio : isRadio,
support: s.canPlayType && s.canPlayType("audio/mpeg") && "no" != s.canPlayType("audio/mpeg") || !1,
onPlay: se(z),
onPause: se(z),
onDeselect: se(z, function () {
return audio.duration();
}),
onSelect: se(),
onProgress: se(z, function () {
return audio.loaded();
}, function () {
return audio.duration();
}),
onPositionChanged: se(z),
onVolumeChanged: se(z, function () {
return s.volume;
}),
onEnded: se(z),
onNotFoundError: se(),
onEmptyPlaylistError: se(),
getCurrent: B,
getCurrentId: z,
operate: function (e) {
return audio.support ? void(!e || c[u] && e == c[u].id ? v ? audio.pause() : audio.play() : audio.play(e)) : !1;
},
playing: function () {
return v;
},
select: function (e) {
if (!audio.support) {
return !1;
}
if (e) {
return c.length ? c[d[e]] ? (z() && audio.onDeselect(!0), u = d[e], T(c[u]), j(), !0) : void audio.onNotFoundError(!0, e) : void audio.onEmptyPlaylistError(!0, e);
}
},
play: function (e) {
if (!audio.support) {
return !1;
}
if (e) {
if (v && audio.pause(), !audio.select(e)) {
return;
}
try {
s.currentTime = .01;
} catch (t$0) {
}
}
if(audio.isRadio() === false) {
s.currentTime = .01;
}
v || (s.muted = !1, s.play(), v = !0, audio.onPlay(!0),ssSet("audio_play", "1"), lsSet("audio_current_player", l));
},
pause: function () {
return audio.support ? void(v && (audio.isRadio() === false && (s.currentTime = .01), s.pause(), v = !1, audio.onPause(!0), ssSet("audio_play", "0"))) : !1;
},
position: function (e, t) {
if (!audio.support) {
return !1;
}
if ("undefined" == typeof e) {
return s.currentTime;
}
t && (e = audio.duration() * e), e = Math.max(0, Math.min(e, audio.duration()));
var a = v;
a && (v = !1, s.pause());
try {
s.currentTime = e, audio.onPositionChanged(!0, audio.position(), audio.duration()), ssSet("audio_pos", e), a && (v = !0, s.muted = !1, s.play().catch(function(e){
audio.next();
}));
} catch (o$1) {
audio.onPositionChanged(!0, e, audio.duration()), n = function () {
n = !1, audio.position(e);
}, a && (v = !0);
}
},
volume: function (e) {
if (!audio.support) {
return !1;
}
if ("undefined" == typeof e) {
return s.volume;
}
try {
s.volume = e || 0;
} catch (t$2) {
}
audio.onVolumeChanged(!0), ssSet("audio_vol", e || 0);
},
loaded: function () {
return s.buffered && s.buffered.length && s.buffered.end(s.buffered.length - 1) || 0;
},
duration: function () {
return c[u] && c[u].dur || s.duration || 0;
},
next: function () {
return audio.support ? (v && audio.pause(), audio.onDeselect(!0), ++u >= c.length && (u = 0), T(c[u]), j(), t = !0, void audio.play()) : !1;
},
prev: function () {
return audio.support ? (v && audio.pause(), audio.onDeselect(!0), --u <= 0 && (u = c.length - 1), T(c[u]), j(), t = !0, void audio.play()) : !1;
},
repeat: function () {
var t = ge("lm_audio");
if(t) {
if(repeat === true)
removeClass('repeat_enabled', 'lm_audio');
else
addClass('repeat_enabled', 'lm_audio');
}
return audio.support ? (repeat = (repeat === true ? false : true) ) : !1;
},
playlist: function (e, t) {
return audio.support ? "undefined" == typeof e ? c : (v && audio.pause(), B() && audio.onDeselect(!0), c = e, p = t && t.q || "", u = null, d = {}, each(e, function (e, t) {
d[t.id] = e;
}), A(p), void 0) : !1;
},
playlist_q: function () {
return p;
}
};
}(), audioplayer = function () {
var e = "1" == lsGet("audio_time_left"), o = null, i = 0, r = {}, restoreBasisContent, restoreHeadContent;
audio.onPlay(l), audio.onPause(c), audio.onSelect(u), audio.onDeselect(d), audio.onProgress(function (e, t, a) {
var n = ge("audio" + e);
audio.playing() ? (addClass("ai_playing", n), addClass("ai_playing", "lm_audio")) : (removeClass("ai_playing", n), removeClass("ai_playing", "lm_audio")), n && (C(n, t / a), addClass("ai_current", n));
}), audio.onPositionChanged(p), audio.onVolumeChanged(function (e, t) {
var a = ge("audio" + e);
a && x(a, t);
}), audio.onEnded(function (e) {
var t = ge("audio" + e);
t && k(t, 1);
}), audio.onNotFoundError(v), audio.onEmptyPlaylistError(v);
function s() {
each(geByClass("ai_current"), function (e, t) {
t = S(t), d(t.id, t.dur);
});
var e = audio.getCurrentId(), t = ge("audio" + e), a = audio.loaded(), n = audio.position(),
o = audio.duration();
audio.playing() ? (addClass("ai_playing", t), addClass("ai_playing", "lm_audio")) : (removeClass("ai_playing", t), removeClass("ai_playing", "lm_audio")), u(audio.getCurrent()), C(t, a / o), p(audio.getCurrentId(), n, o);
}
function l(e) {
addClass("ai_playing", "lm_audio");
var t = ge("audio" + e);
t && (addClass("ai_playing", t), addClass("ai_current", t), audioplayer.playback(e));
}
function c(e) {
removeClass("ai_playing", "lm_audio");
var t = ge("audio" + e);
t && (removeClass("ai_playing", t), addClass("ai_current", t), audioplayer.playback(e, !0));
}
function u(e) {
if (!e) {
return void hide("lm_player");
}
show("lm_player");
var t = ge("lm_audio");
if(t) {
if (e.title == "")
hide(geByClass1("divider", t));
else
show(geByClass1("divider", t));
}
t && (val(geByClass1("ai_artist", t), e.artist), val(geByClass1("ai_title", t), e.title));
var a = ge("audio" + e.id);
a && (C(a, 0), k(a, 0), w(a, T(0, audio.duration())), x(a, audio.volume()), addClass("ai_current", a));
}
function d(e, t) {
var a = ge("audio" + e);
removeClass("ai_playing", "lm_audio"), a && (w(a, z(t)), removeClass("ai_playing", a), removeClass("ai_current", a), i = 0, r[e] && delete r[e]);
}
function p(e, t, a) {
var n = ge("audio" + e);
n && (f || k(n, t / a), x(n, audio.volume()), w(n, audioplayer.getFormatedTime(t, a)), t > 1 && (r[e] = 1));
}
function v(e) {
//t = gpeByClass("audios_list", "audio" + e), a = geByClass("audio_item", t)
var a = geByClass("audio_item"), n = [], o = !1;
each(a, function (t, a) {
return (a = S(a)) ? (n.push(a), void(a.id == e && (o = !0))) : !0;
}), audio.playlist(n, {q: ""}), o && audio.play(e);
}
var f = null, g = null, h = !1, _ = !1;
addEvent(document, isTouch ? "touchend touchcancel" : "mouseup", y), addEvent(document, isTouch ? "touchmove" : "mousemove", m);
function m(e) {
if (f) {
var t = gpeByClass("audio", f), a = b(f, e);
e && cancelEvent(e), h && k(t, a), _ && (x(t, a), audio.volume(a)), g = a;
}
}
function y(e) {
if (f) {
var t = gpeByClass("audio_item", f), a = b(f, e) || g;
e && cancelEvent(e), h && (k(t, a), audio.position(a, !0)), _ && x(t, a), f = g = null, h = _ = !1;
}
}
function b(e, t) {
var a = hasClass("touch", bodyNode) ? 10 : 8,
n = t.pageX || t.touches && t.touches[0] && t.touches[0].pageX || 0, o = n - getX(e) - a / 2,
i = e.offsetWidth - a, r = i ? Math.max(0, Math.min(o / i, 1)) : 0;
return r;
}
var currentTrack = undefined;
function w(e, t) {
if (e) {
var a = geByClass1("ai_dur", e);
if(a) {
val(a, t);
if (currentTrack !== audio.getCurrentId() && audio.position() > 0.1) {
/**
* ToDo send request listen music
*/
var title = audio.getCurrent().title;
var dur = parseInt(audio.duration().toFixed(0));
hide(ge('pp_status_link'));
var listenMusic = ge('listenMusic');
show(listenMusic);
val(geByClass1('ai_artist', listenMusic), title);
restoreBasisContent !== undefined && restoreBasisContent.find('.ai_artist').text(title);
$.post('/listen_music.php', {
title: title,
dur: dur
});
currentTrack = audio.getCurrentId();
}
}
}
}
function C(e, t) {
if (audio.isRadio()) {
var a = geByClass1("aic_progress_wrap", e);
if(a !== undefined) {
var n = geByClass1("aic_load_line", a);
n.style.width = 100 * Math.max(0, Math.min(t, 1)) + "%";
if (parseInt(n.style.width) > 0)
removeClass("slider_loading_bar", geByClass1("slider_loading_bar", e));
}
}
}
function k(e, t) {
if (e) {
{
var a = geByClass1("aic_progress_wrap", e), n = geByClass1("aic_progress_line", a);
geByClass1("aic_slider", n);
}
n.style.width = 100 * t + "%";
}
}
function x(e, t) {
if (e) {
{
var a = geByClass1("aic_volume_wrap", e), n = geByClass1("aic_progress_line", a);
geByClass1("aic_slider", n);
}
n.style.width = 100 * t + "%";
}
}
function S(e) {
if (e = ge(e), !e || !attr(e, "data-id")) {
return !1;
}
var t = attr(e, "data-id"), a = val(geByTag1("input", e)), n = attr(geByClass1("ai_dur", e), "data-dur"),
o = val(geByClass1("ai_artist", e)), i = val(geByClass1("ai_title", e)), c = attr(geByClass1("ai_play", e), "style");
return {id: t, src: a, cover: c, dur: n, artist: htsc(stripTags(o)), title: htsc(stripTags(i))};
}
function B(e, t, a) {
if (!e) {
return "";
}
var n = htsc(e.id), o = htsc(e.src), i = +e.dur, r = e.artist, s = e.title, l = e.can_add, c = e.can_del,
u = s ? '<span class="divider"> – </span>' : "", d = isTouch ? "ontouchstart" : "onmousedown", p = "",
v = "";
}
function z(e) {
var t, a, n, o = 0 > e;
return e = Math.round(o ? -e : e), a = e % 60, t = 10 > a ? "0" + a : a, e = Math.floor(e / 60), n = e % 60, t = n + ":" + t, e = Math.floor(e / 60), e > 0 && (10 > n && (t = "0" + t), t = e + ":" + t), o && (t = "-" + t), t;
}
function T(t, a) {
return z(e && a ? t - a : t);
}
return {
init: function (e) {
return audio.support ? void("") : !1;
}, initAudio: s, isOpenPlayer: false, getDOMFromAudio: B, playPause: function (e, t, a) {
if(e.target.className === "i_download" || e.target.className === "ai_download") {
return false;
}
if (audio.support) {
var n = ge("audio" + t);
a && t != audio.getCurrentId() ? v(t, !0) : audio.operate(t);
} else {
alert('mobile_audio_player_not_support');
}
return cancelEvent(e), !1;
}, getFormatedTime: T, switchTimeFormat: function (t, a) {
var n = gpeByClass("audio_item", t);
if (!hasClass("ai_current", n) || hasClass("ai_select", n)) {
return !0;
}
e = !e, lsSet("audio_time_left", e ? "1" : "0");
var o = ge("audio" + audio.getCurrentId());
return w(o, T(audio.position(), audio.duration())), a && cancelEvent(a), !1;
}, setPosition: function (e, t) {
f || (f = e, h = !0, m(t));
}, setVolume: function (e, t) {
f || (f = e, _ = !0, m(t));
}, playback: function (e, a) {
if (clearTimeout(o), !a && e && e != i) {
o = setTimeout(1E4);
}
}, openPlayer: function() {
var p = audio.playlist();
if(p.length <= 0 || audioplayer.isOpenPlayer === true) {
return false;
}
audioplayer.isOpenPlayer = true;
$('#vk_wrap').removeClass('lm_opened');
$('body').removeClass('lm_opened');
restoreBasisContent = $('#m #mcont').children();
restoreHeadContent = $('#mhead h1.header__center').children();
$('#mhead h1.header__center').html('<a class="header__back al_back" href="" accesskey="0" aria-label="Назад" onclick="return audioplayer.backContent()"></a>\n' +
'<span class="header__title hb_btn mh_header mhi_back">Плейлист</span>\n');
var tmpNode = '<div class="pcont audioPage">\n' +
'<div id="au_search_items" class="upanel bl_cont">\n' +
'<div class="audios_block audios_list _si_container">\n';
for(var l in p) {
tmpNode += '<div id="audio' + p[l].id + '" data-id="' + p[l].id + '" class="audio_item ai_has_btn" onclick="audioplayer.playPause(event, \'' + p[l].id + '\')">\n' +
' <div class="ai_info">\n' +
' <div class="ai_play" style=""><i class="i_play"></i></div>\n' +
' <div class="ai_body">\n' +
' <div class="ai_dur" onclick="audioplayer.switchTimeFormat(this, event);"></div>\n' +
' <div class="ai_label">\n' +
' <span class="ai_title">' + p[l].title + '</span>\n' +
' <span class="divider" style="display: none"></span>\n' +
' <span class="ai_artist" style="display: none"></span>\n' +
' </div>\n' +
' <input type="hidden" value="' + p[l].src + '">\n' +
' </div>\n' +
' </div>\n' +
' <div class="ai_controls">\n' +
' <table class="row_table">\n' +
' <tbody><tr>\n' +
' <td class="aic_progress_wrap">\n' +
' <div class="aic_line" onmousedown="audioplayer.setPosition(this, event);" onclick="cancelEvent(event);">\n' +
' <div class="aic_ln aic_back_line" onclick="cancelEvent(event);"></div>\n' +
' <div class="aic_ln aic_load_line" onclick="cancelEvent(event);"></div>\n' +
' <div class="aic_ln aic_pl_wrap" onclick="cancelEvent(event);">\n' +
' <div class="aic_ln aic_progress_line" onclick="cancelEvent(event);">\n' +
' <div class="aic_slider" onclick="cancelEvent(event);"></div>\n' +
' </div>\n' +
' </div>\n' +
' </div>\n' +
' </td>\n' +
' <td class="aic_volume_wrap">\n' +
' <div class="aic_line" onmousedown="audioplayer.setVolume(this, event);" onclick="cancelEvent(event);" style="display: block;">\n' +
' <div class="aic_ln aic_back_line" onclick="cancelEvent(event);"></div>\n' +
' <div class="aic_ln aic_pl_wrap" onclick="cancelEvent(event);">\n' +
' <div class="aic_ln aic_progress_line" onclick="cancelEvent(event);">\n' +
' <div class="aic_slider" onclick="cancelEvent(event);"></div>\n' +
' </div>\n' +
' </div>\n' +
' </div>\n' +
' </td>\n' +
' </tr>\n' +
' </tbody></table>\n' +
' </div>\n' +
' </div>';
}
tmpNode += '</div>\n</div>\n</div>';
$('#m #mcont').html(tmpNode);
}, backContent: function() {
if(restoreBasisContent === undefined && restoreHeadContent === undefined || restoreBasisContent.length <= 0 && restoreHeadContent.length <= 0) {
return false;
}
audioplayer.isOpenPlayer = false;
$('#m #mcont').html(restoreBasisContent);
$('#mhead h1.header__center').html(restoreHeadContent);
restoreHeadContent = restoreBasisContent = undefined;
return false;
}
};
}();