Skip to content

Instantly share code, notes, and snippets.

@Glowin
Last active December 10, 2015 11:08
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Glowin/4425462 to your computer and use it in GitHub Desktop.
Save Glowin/4425462 to your computer and use it in GitHub Desktop.
百度随心听 http://fm.baidu.com 的核心播放代码
(function(a, b) {
function c(b, c) {
var g = b.nodeName.toLowerCase();
if ("area" === g) {
var g = b.parentNode, i = g.name;
if (!b.href || !i || "map" !== g.nodeName.toLowerCase())
return !1;
g = a("img[usemap=#" + i + "]")[0];
return !!g && d(g)
}
return (/input|select|textarea|button|object/.test(g) ? !b.disabled : "a" == g ? b.href || c : c) && d(b)
}
function d(b) {
return !a(b).parents().andSelf().filter(function() {
return "hidden" === a.curCSS(this, "visibility") || a.expr.filters.hidden(this)
}).length
}
a.ui = a.ui || {};
a.ui.version || (a.extend(a.ui, {version: "@VERSION",
keyCode: {ALT: 18,BACKSPACE: 8,CAPS_LOCK: 20,COMMA: 188,COMMAND: 91,COMMAND_LEFT: 91,COMMAND_RIGHT: 93,CONTROL: 17,DELETE: 46,DOWN: 40,END: 35,ENTER: 13,ESCAPE: 27,HOME: 36,INSERT: 45,LEFT: 37,MENU: 93,NUMPAD_ADD: 107,NUMPAD_DECIMAL: 110,NUMPAD_DIVIDE: 111,NUMPAD_ENTER: 108,NUMPAD_MULTIPLY: 106,NUMPAD_SUBTRACT: 109,PAGE_DOWN: 34,PAGE_UP: 33,PERIOD: 190,RIGHT: 39,SHIFT: 16,SPACE: 32,TAB: 9,UP: 38,WINDOWS: 91}}), a.fn.extend({propAttr: a.fn.prop || a.fn.attr,_focus: a.fn.focus,focus: function(b, c) {
return "number" === typeof b ? this.each(function() {
var d =
this;
setTimeout(function() {
a(d).focus();
c && c.call(d)
}, b)
}) : this._focus.apply(this, arguments)
},scrollParent: function() {
var b;
b = a.browser.msie && /(static|relative)/.test(this.css("position")) || /absolute/.test(this.css("position")) ? this.parents().filter(function() {
return /(relative|absolute|fixed)/.test(a.curCSS(this, "position", 1)) && /(auto|scroll)/.test(a.curCSS(this, "overflow", 1) + a.curCSS(this, "overflow-y", 1) + a.curCSS(this, "overflow-x", 1))
}).eq(0) : this.parents().filter(function() {
return /(auto|scroll)/.test(a.curCSS(this,
"overflow", 1) + a.curCSS(this, "overflow-y", 1) + a.curCSS(this, "overflow-x", 1))
}).eq(0);
return /fixed/.test(this.css("position")) || !b.length ? a(document) : b
},zIndex: function(c) {
if (c !== b)
return this.css("zIndex", c);
if (this.length)
for (var c = a(this[0]), d; c.length && c[0] !== document; ) {
d = c.css("position");
if ("absolute" === d || "relative" === d || "fixed" === d)
if (d = parseInt(c.css("zIndex"), 10), !isNaN(d) && 0 !== d)
return d;
c = c.parent()
}
return 0
},disableSelection: function() {
return this.bind((a.support.selectstart ? "selectstart" :
"mousedown") + ".ui-disableSelection", function(a) {
a.preventDefault()
})
},enableSelection: function() {
return this.unbind(".ui-disableSelection")
}}), a("<a>").outerWidth(1).jquery || a.each(["Width", "Height"], function(c, d) {
function g(b, c, d, e) {
a.each(i, function() {
c -= parseFloat(a.curCSS(b, "padding" + this, !0)) || 0;
d && (c -= parseFloat(a.curCSS(b, "border" + this + "Width", !0)) || 0);
e && (c -= parseFloat(a.curCSS(b, "margin" + this, !0)) || 0)
});
return c
}
var i = "Width" === d ? ["Left", "Right"] : ["Top", "Bottom"], j = d.toLowerCase(), n = {innerWidth: a.fn.innerWidth,
innerHeight: a.fn.innerHeight,outerWidth: a.fn.outerWidth,outerHeight: a.fn.outerHeight};
a.fn["inner" + d] = function(c) {
return c === b ? n["inner" + d].call(this) : this.each(function() {
a(this).css(j, g(this, c) + "px")
})
};
a.fn["outer" + d] = function(b, c) {
return "number" !== typeof b ? n["outer" + d].call(this, b) : this.each(function() {
a(this).css(j, g(this, b, !0, c) + "px")
})
}
}), a.extend(a.expr[":"], {data: a.expr.createPseudo ? a.expr.createPseudo(function(b) {
return function(c) {
return !!a.data(c, b)
}
}) : function(b, c, d) {
return !!a.data(b,
d[3])
},focusable: function(b) {
return c(b, !isNaN(a.attr(b, "tabindex")))
},tabbable: function(b) {
var d = a.attr(b, "tabindex"), g = isNaN(d);
return (g || 0 <= d) && c(b, !g)
}}), a(function() {
var b = document.body, c = b.appendChild(c = document.createElement("div"));
c.offsetHeight;
a.extend(c.style, {minHeight: "100px",height: "auto",padding: 0,borderWidth: 0});
a.support.minHeight = 100 === c.offsetHeight;
a.support.selectstart = "onselectstart" in c;
b.removeChild(c).style.display = "none"
}), a.curCSS || (a.curCSS = a.css), a.extend(a.ui, {plugin: {add: function(b,
c, d) {
var b = a.ui[b].prototype, i;
for (i in d) {
b.plugins[i] = b.plugins[i] || [];
b.plugins[i].push([c, d[i]])
}
},call: function(a, b, c) {
if ((b = a.plugins[b]) && a.element[0].parentNode)
for (var d = 0; d < b.length; d++)
a.options[b[d][0]] && b[d][1].apply(a.element, c)
}},contains: function(a, b) {
return document.compareDocumentPosition ? a.compareDocumentPosition(b) & 16 : a !== b && a.contains(b)
},hasScroll: function(b, c) {
if (a(b).css("overflow") === "hidden")
return false;
var d = c && c === "left" ? "scrollLeft" : "scrollTop", i = false;
if (b[d] > 0)
return true;
b[d] = 1;
i = b[d] > 0;
b[d] = 0;
return i
},isOverAxis: function(a, b, c) {
return a > b && a < b + c
},isOver: function(b, c, d, i, j, n) {
return a.ui.isOverAxis(b, d, j) && a.ui.isOverAxis(c, i, n)
}}))
})(jQuery);
(function(a, b) {
if (a.cleanData) {
var c = a.cleanData;
a.cleanData = function(b) {
for (var d = 0, g; null != (g = b[d]); d++)
try {
a(g).triggerHandler("remove")
} catch (i) {
}
c(b)
}
} else {
var d = a.fn.remove;
a.fn.remove = function(b, c) {
return this.each(function() {
c || (!b || a.filter(b, [this]).length) && a("*", this).add([this]).each(function() {
try {
a(this).triggerHandler("remove")
} catch (b) {
}
});
return d.call(a(this), b, c)
})
}
}
a.widget = function(b, c, d) {
var i = b.split(".")[0], j, b = b.split(".")[1];
j = i + "-" + b;
d || (d = c, c = a.Widget);
a.expr[":"][j] =
function(c) {
return !!a.data(c, b)
};
a[i] = a[i] || {};
a[i][b] = function(a, b) {
arguments.length && this._createWidget(a, b)
};
c = new c;
c.options = a.extend(!0, {}, c.options);
a[i][b].prototype = a.extend(!0, c, {namespace: i,widgetName: b,widgetEventPrefix: a[i][b].prototype.widgetEventPrefix || b,widgetBaseClass: j}, d);
a.widget.bridge(b, a[i][b])
};
a.widget.bridge = function(c, d) {
a.fn[c] = function(g) {
var i = "string" === typeof g, j = Array.prototype.slice.call(arguments, 1), n = this, g = !i && j.length ? a.extend.apply(null, [!0, g].concat(j)) : g;
if (i && "_" === g.charAt(0))
return n;
i ? this.each(function() {
var d = a.data(this, c), f = d && a.isFunction(d[g]) ? d[g].apply(d, j) : d;
if (f !== d && f !== b)
return n = f, !1
}) : this.each(function() {
var b = a.data(this, c);
b ? b.option(g || {})._init() : a.data(this, c, new d(g, this))
});
return n
}
};
a.Widget = function(a, b) {
arguments.length && this._createWidget(a, b)
};
a.Widget.prototype = {widgetName: "widget",widgetEventPrefix: "",options: {disabled: !1},_createWidget: function(b, c) {
a.data(c, this.widgetName, this);
this.element = a(c);
this.options = a.extend(!0,
{}, this.options, this._getCreateOptions(), b);
var d = this;
this.element.bind("remove." + this.widgetName, function() {
d.destroy()
});
this._create();
this._trigger("create");
this._init()
},_getCreateOptions: function() {
return a.metadata && a.metadata.get(this.element[0])[this.widgetName]
},_create: function() {
},_init: function() {
},destroy: function() {
this.element.unbind("." + this.widgetName).removeData(this.widgetName);
this.widget().unbind("." + this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass +
"-disabled ui-state-disabled")
},widget: function() {
return this.element
},option: function(c, d) {
var g = c;
if (0 === arguments.length)
return a.extend({}, this.options);
if ("string" === typeof c) {
if (d === b)
return this.options[c];
g = {};
g[c] = d
}
this._setOptions(g);
return this
},_setOptions: function(b) {
var c = this;
a.each(b, function(a, b) {
c._setOption(a, b)
});
return this
},_setOption: function(a, b) {
this.options[a] = b;
"disabled" === a && this.widget()[b ? "addClass" : "removeClass"](this.widgetBaseClass + "-disabled ui-state-disabled").attr("aria-disabled",
b);
return this
},enable: function() {
return this._setOption("disabled", !1)
},disable: function() {
return this._setOption("disabled", !0)
},_trigger: function(b, c, d) {
var i, j = this.options[b], d = d || {}, c = a.Event(c);
c.type = (b === this.widgetEventPrefix ? b : this.widgetEventPrefix + b).toLowerCase();
c.target = this.element[0];
if (b = c.originalEvent)
for (i in b)
i in c || (c[i] = b[i]);
this.element.trigger(c, d);
return !(a.isFunction(j) && !1 === j.call(this.element[0], c, d) || c.isDefaultPrevented())
}}
})(jQuery);
(function(a) {
var b = !1;
a(document).mouseup(function() {
b = !1
});
a.widget("ui.mouse", {options: {cancel: ":input,option",distance: 1,delay: 0},_mouseInit: function() {
var b = this;
this.element.bind("mousedown." + this.widgetName, function(a) {
return b._mouseDown(a)
}).bind("click." + this.widgetName, function(d) {
if (!0 === a.data(d.target, b.widgetName + ".preventClickEvent"))
return a.removeData(d.target, b.widgetName + ".preventClickEvent"), d.stopImmediatePropagation(), !1
});
this.started = !1
},_mouseDestroy: function() {
this.element.unbind("." +
this.widgetName);
this._mouseMoveDelegate && a(document).unbind("mousemove." + this.widgetName, this._mouseMoveDelegate).unbind("mouseup." + this.widgetName, this._mouseUpDelegate)
},_mouseDown: function(c) {
if (!b) {
this._mouseStarted && this._mouseUp(c);
this._mouseDownEvent = c;
var d = this, e = 1 == c.which, f = "string" == typeof this.options.cancel && c.target.nodeName ? a(c.target).closest(this.options.cancel).length : !1;
if (!e || f || !this._mouseCapture(c))
return !0;
this.mouseDelayMet = !this.options.delay;
this.mouseDelayMet || (this._mouseDelayTimer =
setTimeout(function() {
d.mouseDelayMet = !0
}, this.options.delay));
if (this._mouseDistanceMet(c) && this._mouseDelayMet(c) && (this._mouseStarted = !1 !== this._mouseStart(c), !this._mouseStarted))
return c.preventDefault(), !0;
!0 === a.data(c.target, this.widgetName + ".preventClickEvent") && a.removeData(c.target, this.widgetName + ".preventClickEvent");
this._mouseMoveDelegate = function(a) {
return d._mouseMove(a)
};
this._mouseUpDelegate = function(a) {
return d._mouseUp(a)
};
a(document).bind("mousemove." + this.widgetName, this._mouseMoveDelegate).bind("mouseup." +
this.widgetName, this._mouseUpDelegate);
c.preventDefault();
return b = !0
}
},_mouseMove: function(b) {
if (a.browser.msie && !(9 <= document.documentMode) && !b.button)
return this._mouseUp(b);
if (this._mouseStarted)
return this._mouseDrag(b), b.preventDefault();
this._mouseDistanceMet(b) && this._mouseDelayMet(b) && ((this._mouseStarted = !1 !== this._mouseStart(this._mouseDownEvent, b)) ? this._mouseDrag(b) : this._mouseUp(b));
return !this._mouseStarted
},_mouseUp: function(b) {
a(document).unbind("mousemove." + this.widgetName, this._mouseMoveDelegate).unbind("mouseup." +
this.widgetName, this._mouseUpDelegate);
this._mouseStarted && (this._mouseStarted = !1, b.target == this._mouseDownEvent.target && a.data(b.target, this.widgetName + ".preventClickEvent", !0), this._mouseStop(b));
return !1
},_mouseDistanceMet: function(a) {
return Math.max(Math.abs(this._mouseDownEvent.pageX - a.pageX), Math.abs(this._mouseDownEvent.pageY - a.pageY)) >= this.options.distance
},_mouseDelayMet: function() {
return this.mouseDelayMet
},_mouseStart: function() {
},_mouseDrag: function() {
},_mouseStop: function() {
},_mouseCapture: function() {
return !0
}})
})(jQuery);
(function(a) {
a.widget("ui.slider", a.ui.mouse, {widgetEventPrefix: "slide",options: {animate: !1,distance: 0,max: 100,min: 0,orientation: "horizontal",range: !1,step: 1,value: 0,values: null},_create: function() {
var b = this, c = this.options, d = this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"), e = c.values && c.values.length || 1, f = [];
this._mouseSliding = this._keySliding = !1;
this._animateOff = !0;
this._handleIndex = null;
this._detectOrientation();
this._mouseInit();
this.element.addClass("ui-slider ui-slider-" +
this.orientation + " ui-widget ui-widget-content ui-corner-all" + (c.disabled ? " ui-slider-disabled ui-disabled" : ""));
this.range = a([]);
if (c.range) {
if (!0 === c.range && (c.values || (c.values = [this._valueMin(), this._valueMin()]), c.values.length && 2 !== c.values.length))
c.values = [c.values[0], c.values[0]];
this.range = a("<div></div>").appendTo(this.element).addClass("ui-slider-range ui-widget-header" + ("min" === c.range || "max" === c.range ? " ui-slider-range-" + c.range : ""))
}
for (var g = d.length; g < e; g += 1)
f.push("<a class='ui-slider-handle ui-state-default ui-corner-all' href='#'></a>");
this.handles = d.add(a(f.join("")).appendTo(b.element));
this.handle = this.handles.eq(0);
this.handles.add(this.range).filter("a").click(function(a) {
a.preventDefault()
}).hover(function() {
c.disabled || a(this).addClass("ui-state-hover")
}, function() {
a(this).removeClass("ui-state-hover")
}).focus(function() {
c.disabled ? a(this).blur() : (a(".ui-slider .ui-state-focus").removeClass("ui-state-focus"), a(this).addClass("ui-state-focus"))
}).blur(function() {
a(this).removeClass("ui-state-focus")
});
this.handles.each(function(b) {
a(this).data("index.ui-slider-handle",
b)
});
this.handles.keydown(function(c) {
var d = a(this).data("index.ui-slider-handle"), e, f, g;
if (!b.options.disabled) {
switch (c.keyCode) {
case a.ui.keyCode.HOME:
case a.ui.keyCode.END:
case a.ui.keyCode.PAGE_UP:
case a.ui.keyCode.PAGE_DOWN:
case a.ui.keyCode.UP:
case a.ui.keyCode.RIGHT:
case a.ui.keyCode.DOWN:
case a.ui.keyCode.LEFT:
if (c.preventDefault(), !b._keySliding && (b._keySliding = !0, a(this).addClass("ui-state-active"), e = b._start(c, d), !1 === e))
return
}
g = b.options.step;
e = b.options.values && b.options.values.length ?
f = b.values(d) : f = b.value();
switch (c.keyCode) {
case a.ui.keyCode.HOME:
f = b._valueMin();
break;
case a.ui.keyCode.END:
f = b._valueMax();
break;
case a.ui.keyCode.PAGE_UP:
f = b._trimAlignValue(e + (b._valueMax() - b._valueMin()) / 5);
break;
case a.ui.keyCode.PAGE_DOWN:
f = b._trimAlignValue(e - (b._valueMax() - b._valueMin()) / 5);
break;
case a.ui.keyCode.UP:
case a.ui.keyCode.RIGHT:
if (e === b._valueMax())
return;
f = b._trimAlignValue(e + g);
break;
case a.ui.keyCode.DOWN:
case a.ui.keyCode.LEFT:
if (e === b._valueMin())
return;
f = b._trimAlignValue(e -
g)
}
b._slide(c, d, f)
}
}).keyup(function(c) {
var d = a(this).data("index.ui-slider-handle");
b._keySliding && (b._keySliding = !1, b._stop(c, d), b._change(c, d), a(this).removeClass("ui-state-active"))
});
this._refreshValue();
this._animateOff = !1
},destroy: function() {
this.handles.remove();
this.range.remove();
this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all").removeData("slider").unbind(".slider");
this._mouseDestroy();
return this
},
_mouseCapture: function(b) {
var c = this.options, d, e, f, g, i;
if (c.disabled)
return !1;
this.elementSize = {width: this.element.outerWidth(),height: this.element.outerHeight()};
this.elementOffset = this.element.offset();
d = this._normValueFromMouse({x: b.pageX,y: b.pageY});
e = this._valueMax() - this._valueMin() + 1;
g = this;
this.handles.each(function(b) {
var c = Math.abs(d - g.values(b));
e > c && (e = c, f = a(this), i = b)
});
!0 === c.range && this.values(1) === c.min && (i += 1, f = a(this.handles[i]));
if (!1 === this._start(b, i))
return !1;
this._mouseSliding =
!0;
g._handleIndex = i;
f.addClass("ui-state-active").focus();
c = f.offset();
this._clickOffset = !a(b.target).parents().andSelf().is(".ui-slider-handle") ? {left: 0,top: 0} : {left: b.pageX - c.left - f.width() / 2,top: b.pageY - c.top - f.height() / 2 - (parseInt(f.css("borderTopWidth"), 10) || 0) - (parseInt(f.css("borderBottomWidth"), 10) || 0) + (parseInt(f.css("marginTop"), 10) || 0)};
this.handles.hasClass("ui-state-hover") || this._slide(b, i, d);
return this._animateOff = !0
},_mouseStart: function() {
return !0
},_mouseDrag: function(a) {
var c = this._normValueFromMouse({x: a.pageX,
y: a.pageY});
this._slide(a, this._handleIndex, c);
return !1
},_mouseStop: function(a) {
this.handles.removeClass("ui-state-active");
this._mouseSliding = !1;
this._stop(a, this._handleIndex);
this._change(a, this._handleIndex);
this._clickOffset = this._handleIndex = null;
return this._animateOff = !1
},_detectOrientation: function() {
this.orientation = "vertical" === this.options.orientation ? "vertical" : "horizontal"
},_normValueFromMouse: function(a) {
var c;
"horizontal" === this.orientation ? (c = this.elementSize.width, a = a.x - this.elementOffset.left -
(this._clickOffset ? this._clickOffset.left : 0)) : (c = this.elementSize.height, a = a.y - this.elementOffset.top - (this._clickOffset ? this._clickOffset.top : 0));
c = a / c;
1 < c && (c = 1);
0 > c && (c = 0);
"vertical" === this.orientation && (c = 1 - c);
a = this._valueMax() - this._valueMin();
c = this._valueMin() + c * a;
return this._trimAlignValue(c)
},_start: function(a, c) {
var d = {handle: this.handles[c],value: this.value()};
this.options.values && this.options.values.length && (d.value = this.values(c), d.values = this.values());
return this._trigger("start",
a, d)
},_slide: function(a, c, d) {
var e;
if (this.options.values && this.options.values.length) {
e = this.values(c ? 0 : 1);
if (2 === this.options.values.length && !0 === this.options.range && (0 === c && d > e || 1 === c && d < e))
d = e;
d !== this.values(c) && (e = this.values(), e[c] = d, a = this._trigger("slide", a, {handle: this.handles[c],value: d,values: e}), this.values(c ? 0 : 1), !1 !== a && this.values(c, d, !0))
} else
d !== this.value() && (a = this._trigger("slide", a, {handle: this.handles[c],value: d}), !1 !== a && this.value(d))
},_stop: function(a, c) {
var d = {handle: this.handles[c],
value: this.value()};
this.options.values && this.options.values.length && (d.value = this.values(c), d.values = this.values());
this._trigger("stop", a, d)
},_change: function(a, c) {
if (!this._keySliding && !this._mouseSliding) {
var d = {handle: this.handles[c],value: this.value()};
this.options.values && this.options.values.length && (d.value = this.values(c), d.values = this.values());
this._trigger("change", a, d)
}
},value: function(a) {
if (arguments.length)
this.options.value = this._trimAlignValue(a), this._refreshValue(), this._change(null,
0);
else
return this._value()
},values: function(b, c) {
var d, e, f;
if (1 < arguments.length)
this.options.values[b] = this._trimAlignValue(c), this._refreshValue(), this._change(null, b);
else if (arguments.length)
if (a.isArray(arguments[0])) {
d = this.options.values;
e = arguments[0];
for (f = 0; f < d.length; f += 1)
d[f] = this._trimAlignValue(e[f]), this._change(null, f);
this._refreshValue()
} else
return this.options.values && this.options.values.length ? this._values(b) : this.value();
else
return this._values()
},_setOption: function(b, c) {
var d,
e = 0;
a.isArray(this.options.values) && (e = this.options.values.length);
a.Widget.prototype._setOption.apply(this, arguments);
switch (b) {
case "disabled":
c ? (this.handles.filter(".ui-state-focus").blur(), this.handles.removeClass("ui-state-hover"), this.handles.propAttr("disabled", !0), this.element.addClass("ui-disabled")) : (this.handles.propAttr("disabled", !1), this.element.removeClass("ui-disabled"));
break;
case "orientation":
this._detectOrientation();
this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-" +
this.orientation);
this._refreshValue();
break;
case "value":
this._animateOff = !0;
this._refreshValue();
this._change(null, 0);
this._animateOff = !1;
break;
case "values":
this._animateOff = !0;
this._refreshValue();
for (d = 0; d < e; d += 1)
this._change(null, d);
this._animateOff = !1
}
},_value: function() {
var a = this.options.value;
return a = this._trimAlignValue(a)
},_values: function(a) {
var c, d;
if (arguments.length)
return c = this.options.values[a], c = this._trimAlignValue(c);
c = this.options.values.slice();
for (d = 0; d < c.length; d += 1)
c[d] =
this._trimAlignValue(c[d]);
return c
},_trimAlignValue: function(a) {
if (a <= this._valueMin())
return this._valueMin();
if (a >= this._valueMax())
return this._valueMax();
var c = 0 < this.options.step ? this.options.step : 1, d = (a - this._valueMin()) % c, a = a - d;
2 * Math.abs(d) >= c && (a += 0 < d ? c : -c);
return parseFloat(a.toFixed(5))
},_valueMin: function() {
return this.options.min
},_valueMax: function() {
return this.options.max
},_refreshValue: function() {
var b = this.options.range, c = this.options, d = this, e = !this._animateOff ? c.animate : !1, f, g =
{}, i, j, n, l;
if (this.options.values && this.options.values.length)
this.handles.each(function(b) {
f = 100 * ((d.values(b) - d._valueMin()) / (d._valueMax() - d._valueMin()));
g["horizontal" === d.orientation ? "left" : "bottom"] = f + "%";
a(this).stop(1, 1)[e ? "animate" : "css"](g, c.animate);
if (!0 === d.options.range)
if ("horizontal" === d.orientation) {
if (0 === b)
d.range.stop(1, 1)[e ? "animate" : "css"]({left: f + "%"}, c.animate);
if (1 === b)
d.range[e ? "animate" : "css"]({width: f - i + "%"}, {queue: !1,duration: c.animate})
} else {
if (0 === b)
d.range.stop(1,
1)[e ? "animate" : "css"]({bottom: f + "%"}, c.animate);
if (1 === b)
d.range[e ? "animate" : "css"]({height: f - i + "%"}, {queue: !1,duration: c.animate})
}
i = f
});
else {
j = this.value();
n = this._valueMin();
l = this._valueMax();
f = l !== n ? 100 * ((j - n) / (l - n)) : 0;
g["horizontal" === d.orientation ? "left" : "bottom"] = f + "%";
this.handle.stop(1, 1)[e ? "animate" : "css"](g, c.animate);
if ("min" === b && "horizontal" === this.orientation)
this.range.stop(1, 1)[e ? "animate" : "css"]({width: f + "%"}, c.animate);
if ("max" === b && "horizontal" === this.orientation)
this.range[e ?
"animate" : "css"]({width: 100 - f + "%"}, {queue: !1,duration: c.animate});
if ("min" === b && "vertical" === this.orientation)
this.range.stop(1, 1)[e ? "animate" : "css"]({height: f + "%"}, c.animate);
if ("max" === b && "vertical" === this.orientation)
this.range[e ? "animate" : "css"]({height: 100 - f + "%"}, {queue: !1,duration: c.animate})
}
}});
a.extend(a.ui.slider, {version: "@VERSION"})
})(jQuery);
(function(a) {
a.widget("ui.tooltip", {_init: function() {
var b = this, c = this._calPosition(this.element);
this.widgetEventPrefix = "tooltip";
a("#jq-tooltip").remove();
a("body").append("<div id='jq-tooltip'><table border='0' cellpadding='0' cellspacing='0'><tbody><tr class='top'><td class='jq-tooltip-top-left'></td><td class='jq-tooltip-top'></td><td class='jq-tooltip-top-right'></td></tr><tr class='middle'><td class='jq-tooltip-left'></td><td class='jq-tooltip-center'></td><td class='jq-tooltip-right'></td></tr><tr class='bottom'><td class='jq-tooltip-bottom-left'></td><td class='jq-tooltip-bottom'></td><td class='jq-tooltip-bottom-right'></td></tr></tbody></table></div>");
this.setPosition(c);
this.setOffset();
this.setInnerHtml(this.options.innerHtml);
this.options.closeEnable && a(".jq-tooltip-close").bind("click", function() {
b.destroy();
return !1
});
this.options.autoCloseEnable && setTimeout(function() {
a(document).bind("click", function() {
a(document).unbind("click");
a("#jq-tooltip").remove()
})
}, 100)
},destroy: function() {
this._trigger("destroyed");
a("#jq-tooltip").remove()
},setPosition: function(b) {
a("#jq-tooltip").css({position: "absolute",left: b.left + "px",top: b.top + "px"})
},getPosition: function() {
return a("#jq-tooltip").offset()
},
setInnerHtml: function(b) {
this.options.innerHtml = b || this.options.innerHtml;
a(".jq-tooltip-center").empty();
this.options.closeEnable ? a(".jq-tooltip-center").append(this.options.innerHtml).append(this.options._close) : a(".jq-tooltip-center").append(this.options.innerHtml)
},getInnerHtml: function() {
return this.options.innerHtml
},setOffset: function(a) {
var a = a || this.options.offset, c = this.getPosition();
c.top += a.top;
c.left += a.left;
this.setPosition(c);
this.options.offset = a
},closeEnable: function() {
var b = this;
this.options.closeEnable = !0;
this.setInnerHtml();
a(".jq-tooltip-close").bind("click", function() {
b.destroy();
return !1
})
},closeDisable: function() {
this.options.closeEnable = !1;
this.setInnerHtml()
},_fixAlphaForIE6: function() {
var b = [], c = [];
b[0] = "-left";
b[1] = "";
b[2] = "-right";
c[0] = "-top";
c[1] = "";
c[2] = "-bottom";
for (var d = 0; 3 > d; ++d)
for (var e = 0; 3 > e; ++e)
if (!(1 == d && 1 == e)) {
var f = ".jq-tooltip" + c[d] + b[e], g = "images/tooltip" + c[d] + b[e] + ".png";
".jq-tooltip-top" == f ? a(f).css("filter", "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=crop, src='" +
g + "')") : a(f).css("filter", "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale, src='" + g + "')")
}
},_calPosition: function(a) {
var c = a.offset(), d = c.left, c = c.top, a = a.height();
return {left: d,top: c + a}
},options: {offset: {top: 0,left: 0},closeEnable: !0,autoCloseEnable: !1,_close: "<a class='jq-tooltip-close' href='#'>&nbsp&nbsp&nbsp</a>",innerHtml: ""},setMutex: function() {
}})
})(jQuery);
(function(a) {
a.widget("bradio.pageNavigator", {options: {total: 0,size: 0,start: 0,show_total: 0,focus_neighbor: 0,hash: 0},_init: function() {
this.options.size = this.options.size || 10;
this.options.show_total = this.options.show_total || 10;
this.options.focus_neighbor = this.options.focus_neighbor || 4;
this.options.hash = this.options.hash || 0;
this.widgetEventPrefix = "pagenavigator.";
this._event(this);
this.options.page = this._start2page(this.options.start, this.options.size)
},_start2page: function(a, c) {
return parseInt(a / c) +
1
},_event: function(b) {
var c = b.element;
a(".page-navigator-prev", c).click(b._click(b));
a(".page-navigator-next", c).click(b._click(b));
a(".page-navigator-number", c).click(b._click(b))
},_click: function(b) {
return function(c) {
var d;
d = a(this).hasClass("page-navigator-prev") ? b.options.page - 1 : a(this).hasClass("page-navigator-next") ? b.options.page - -1 : parseInt(a(this).text());
b.setPage(d);
b._trigger("pageChange", c, {size: b.options.size,page: d,start: (d - 1) * b.options.size});
b.options.hash && (window.location.hash =
"", window.location.hash = b.options.hash);
return !1
}
},getTotal: function() {
return this.options.total
},setTotal: function(a) {
this.options.total = a;
this._draw()
},getPage: function() {
return this.options.page
},setPage: function(a) {
this.options.page = parseInt(a);
this._draw()
},page_number_width: function(a) {
return 3 > (a + "").length ? "PNNW-S" : "PNNW-D"
},setStart: function(a) {
this.setPage(this._start2page(a, this.options.size))
},setParam: function(a) {
this.options.total = a.total || this.options.total;
this.options.start = a.start ||
this.options.start;
this.options.size = a.size || this.options.size;
this.options.page = a.page || this.options.page;
this._draw()
},getParam: function() {
return {total: this.options.total,start: this.options.start,size: this.options.size,page: this.options.page}
},_draw: function() {
var a = this._page_info(this.options), c = a.total_page, d = a.page, e = a.first, f = a.last, g = a.begin, a = a.end, i = this.element, j = [];
if (2 > c)
return !1;
this.options.total > this.options.size && i.addClass("page-navigator");
i.text("");
1 == d ? j.push('<span class="page-navigator-prev-disable">上一页</span>') :
(this.currentPage = d - 1, j.push('<a class="page-navigator-prev" href="' + this.options.hash + '">上一页</a>'));
e && (this.currentPage = 1, j.push('<a href="' + this.options.hash + '" class="page-navigator-number PNNW-S">1</a>'), j.push('<span class="page-navigator-dots">...</span>'));
for (; g <= a; g++)
e = this.page_number_width(g), g == d ? j.push('<span class="page-navigator-current ' + e + '">' + g + "</span>") : (this.currentPage = g, j.push('<a href="' + this.options.hash + '" class="page-navigator-number ' + e + '">' + g + "</a>"));
f && (this.currentPage =
c, e = this.page_number_width(c), j.push('<span class="page-navigator-dots">...</span>'), j.push('<a href="' + this.options.hash + '" class="page-navigator-number ' + e + '">' + c + "</a>"));
d == c ? j.push('<span class="page-navigator-next-disable">下一页</span>') : (this.currentPage = d + 1, j.push('<a class="page-navigator-next" href="' + this.options.hash + '">下一页</a>'));
i.html(j.join(""));
this._event(this)
},_focusNeighbor: function(a, c) {
var d = (a + c).toString().length - 3, d = c - (0 < d ? d : 0);
return 1 > d ? 1 : d
},_page_info: function(a) {
var c =
a.total, d = a.size || 10, e = a.page, f = a.show_total || 10, a = a.focus_neighbor || 4, g = parseInt(c / d), i, j;
0 != c % d && (g += 1);
1 > e && (e = 1);
e > g && (e = g);
a = this._focusNeighbor(e, a);
g <= f ? (c = 1, d = g) : (c = e - a, d = e + a, j = i = !0, 3 > c ? (c = 1, d = f - 1, i = !1) : d > g - 2 && (c = g - 2 * a, d = g, j = !1));
return {total_page: g,page: e,first: i,last: j,begin: c,end: d}
}})
})(jQuery);
(function(a) {
a.cookie = function(b, c, d) {
if (1 < arguments.length && (!/Object/.test(Object.prototype.toString.call(c)) || null === c || void 0 === c)) {
d = a.extend({}, d);
if (null === c || void 0 === c)
d.expires = -1;
if ("number" === typeof d.expires) {
var e = d.expires, f = d.expires = new Date;
f.setDate(f.getDate() + e)
}
c = String(c);
return document.cookie = [encodeURIComponent(b), "=", d.raw ? c : encodeURIComponent(c), d.expires ? "; expires=" + d.expires.toUTCString() : "", d.path ? "; path=" + d.path : "", d.domain ? "; domain=" + d.domain : "", d.secure ? "; secure" :
""].join("")
}
for (var d = c || {}, e = d.raw ? function(a) {
return a
} : decodeURIComponent, f = document.cookie.split("; "), g = 0, i; i = f[g] && f[g].split("="); g++)
if (e(i[0]) === b)
return e(i[1] || "");
return null
}
})(jQuery);
(function() {
var a = [].slice, b = {}.hasOwnProperty;
var c = function() {
var c, e, f, g, i, j, n, l, m, k, q, u, s, o, r, v, x, y, z, w, A, E, t, D, B;
w = function(a) {
return a.fn.render = function(a, b, c) {
var d, e, f;
e = 0;
for (f = this.length; e < f; e++)
d = this[e], A(d, a, b, c);
return this
}
};
null != this.jQuery && (c = this.jQuery, w(c));
l = function(a) {
return a.transparency || (a.transparency = {})
};
y = function() {
};
n = function() {
var b, c, d, e, f;
c = 1 <= arguments.length ? a.call(arguments, 0) : [];
f = [];
d = 0;
for (e = c.length; d < e; d++) {
b = c[d];
f.push(console.log(b))
}
return f
};
v =
y;
A = function(a, c, d, e) {
var f, g, j, k, q, B, s, w, u, t, D, H, N, K, J;
v = e != null && e.debug && typeof console !== "undefined" && console !== null ? n : y;
v("Context:", a, "Models:", c, "Directives:", d, "Config:", e);
if (a) {
c || (c = []);
d || (d = {});
Array.isArray(c) || (c = [c]);
if (u = a.parentNode) {
t = a.nextSibling;
u.removeChild(a)
}
z(a, c);
g = l(a);
q = D = 0;
for (N = c.length; D < N; q = ++D) {
w = c[q];
f = [];
B = g.instances[q];
v("Model:", w, "Template instance for the model:", B);
J = B.elements;
H = 0;
for (K = J.length; H < K; H++) {
j = J[H];
l(j).model = w
}
if (o(w) && (k = B.elements[0]))
m(k).appendChild(w);
else if (typeof w === "object")
for (s in w)
if (b.call(w, s)) {
j = w[s];
if (j != null)
if (r(j)) {
J = x(B, s);
H = 0;
for (K = J.length; H < K; H++) {
k = J[H];
k.nodeName.toLowerCase() === "input" ? i(k, "value", j) : i(k, "text", j)
}
} else
typeof j === "object" && f.push(s)
}
E(B, w, q, d);
q = 0;
for (j = f.length; q < j; q++) {
s = f[q];
J = x(B, s);
K = 0;
for (H = J.length; K < H; K++) {
k = J[K];
A(k, w[s], d[s], e)
}
}
}
u && (t ? u.insertBefore(a, t) : u.appendChild(a));
return a
}
};
z = function(a, b) {
var c, d, e, g, i, k;
c = l(a);
if (!c.template) {
c.template = j(a);
c.instanceCache = [];
c.instances = [new f(a)]
}
for (v("Template",
c.template); b.length > c.instances.length; ) {
d = c.instanceCache.pop() || new f(j(c.template));
k = d.childNodes;
g = 0;
for (i = k.length; g < i; g++) {
e = k[g];
a.appendChild(e)
}
c.instances.push(d)
}
for (g = []; b.length < c.instances.length; ) {
c.instanceCache.push(d = c.instances.pop());
g.push(function() {
var a, b, c, f;
c = d.childNodes;
f = [];
a = 0;
for (b = c.length; a < b; a++) {
e = c[a];
f.push(e.parentNode.removeChild(e))
}
return f
}())
}
return g
};
f = function(a) {
this.template = a;
this.queryCache = {};
this.elements = [];
this.childNodes = [];
q(this.template,
this.elements, this.childNodes)
};
q = function(a, b, c) {
var d, a = a.firstChild;
for (d = []; a; ) {
c != null && c.push(a);
if (a.nodeType === e) {
b.push(a);
q(a, b)
}
d.push(a = a.nextSibling)
}
return d
};
E = function(a, c, d, e) {
var f, g, j, l, k, n, q;
if (e) {
c = typeof c === "object" ? c : {value: c};
q = [];
for (k in e)
if (b.call(e, k)) {
g = e[k];
if (typeof g !== "object")
throw Error("Directive syntax is directive[element][attribute] = function(params)");
q.push(function() {
var b, e, q, m;
q = x(a, k);
m = [];
b = 0;
for (e = q.length; b < e; b++) {
l = q[b];
m.push(function() {
var a;
a =
[];
for (f in g) {
j = g[f];
if (typeof j === "function") {
n = j.call(c, {element: l,index: d,value: i(l, f)});
a.push(i(l, f, n))
}
}
return a
}())
}
return m
}())
}
return q
}
};
t = function(a, b) {
var c, d, f, g, i;
c = l(a);
if (c.html !== b) {
c.html = b;
if (!c.children) {
var j;
i = a.childNodes;
j = [];
f = 0;
for (g = i.length; f < g; f++) {
d = i[f];
d.nodeType === e && j.push(d)
}
c.children = j
}
m(a);
a.innerHTML = b;
g = c.children;
i = [];
d = 0;
for (f = g.length; d < f; d++) {
c = g[d];
i.push(a.appendChild(c))
}
return i
}
};
D = function(a, b) {
var c;
c = l(a);
if (!(b == null || c.text === b)) {
c.text = b;
return (c =
a.firstChild) ? c.nodeType !== g ? a.insertBefore(a.ownerDocument.createTextNode(b), c) : c.nodeValue = b : a.appendChild(a.ownerDocument.createTextNode(b))
}
};
u = function(a) {
var b, c, d, e;
d = a.childNodes;
e = [];
b = 0;
for (c = d.length; b < c; b++) {
a = d[b];
a.nodeType === g && e.push(a.nodeValue)
}
return e.join("")
};
i = function(a, b, c) {
var d, e, f, g, i;
c != null && typeof c !== "string" && (c = c.toString());
d = l(a);
d.originalAttributes || (d.originalAttributes = {});
switch (b) {
case "text":
(e = d.originalAttributes).text || (e.text = u(a));
c != null && D(a, c);
break;
case "html":
(f = d.originalAttributes).html || (f.html = a.innerHTML);
c != null && t(a, c);
break;
case "class":
(g = d.originalAttributes)["class"] || (g["class"] = a.className);
if (c != null)
a.className = c;
break;
default:
(i = d.originalAttributes)[b] || (i[b] = a.getAttribute(b));
c != null && a.setAttribute(b, c)
}
return c != null ? c : d.originalAttributes[b]
};
x = function(a, b) {
var c, d;
if (!(c = (d = a.queryCache)[b])) {
var e, f, g, i;
g = a.elements;
i = [];
e = 0;
for (f = g.length; e < f; e++) {
c = g[e];
k.matcher(c, b) && i.push(c)
}
c = d[b] = i
}
d = c;
v("Matching elements for '" +
b + "':", d);
return d
};
m = function(a) {
for (var c; c = a.firstChild; )
a.removeChild(c);
return a
};
e = 1;
g = 3;
j = !("undefined" !== typeof document && null !== document) || function() {
return document.createElement("nav").cloneNode(true).outerHTML !== "<:nav></:nav>"
}() ? function(a) {
return a.cloneNode(true)
} : function(a) {
var b, f, g, i, a = c(a).clone()[0];
if (a.nodeType === e) {
a.removeAttribute("transparency");
i = a.getElementsByTagName("*");
f = 0;
for (g = i.length; f < g; f++) {
b = i[f];
b.removeAttribute("transparency")
}
}
return a
};
null == Array.isArray &&
(Array.isArray = function(a) {
return c.isArray(a)
});
if (null == (B = Array.prototype).indexOf)
B.indexOf = function(a) {
return c.inArray(a, this)
};
s = function(a) {
return Object.prototype.toString.call(a) === "[object Date]"
};
o = function(a) {
return (a != null ? a.nodeType : void 0) === e
};
r = function(a) {
return s(a) || typeof a !== "object" && typeof a !== "function"
};
return k = {render: A,register: w,matcher: function(a, c) {
return a.id === c || a.className.split(" ").indexOf(c) > -1 || a.name === c || a.getAttribute("data-bind") === c
}}
};
"undefined" !== typeof define &&
null !== define && define.amd ? define(c) : "undefined" !== typeof module && null !== module && module.exports ? module.exports = c() : this.Transparency = c()
}).call(this);
(function(a) {
a.add2fav = function(a, c) {
if (window.sidebar)
window.sidebar.addPanel(c, a, "");
else if (document.all)
window.external.AddFavorite(a, c);
else if (window.opera && window.print)
return !0;
return null
}
})(jQuery);
passPortLoadStatus = !1;
var M3 = {PATH: "",id: function() {
var a = arguments.callee;
a.number = ++a.number || 0;
return "_" + a.number
},timeStamp: function() {
return (new Date).getTime()
},log: function(a) {
var b = "log_" + M3.timeStamp();
(window[b] = new Image).src = a
},nul: function() {
return !1
},dispatch: function(a, b) {
var c, d, e;
"undefined" == typeof b && (b = []);
c = arguments.callee;
c.map || (c.map = {});
d = function(a, b, d) {
var e;
(e = c.map[a]) && $.each(e, function(a, c) {
c.apply(d, b)
})
};
e = function(a, b) {
var d;
d = c.map;
d[a] || (d[a] = []);
d[a].push(b)
};
"function" == typeof b ?
e.apply(this, arguments) : b instanceof Array && d.apply(this, arguments)
},registerClassEvent: function() {
this.on = function(a, b) {
M3.dispatch(this.instanceId + a, b)
};
this.un = function() {
};
this.fireEvent = function(a, b) {
M3.dispatch(this.instanceId + a, b)
}
},Class: function(a, b, c, d) {
var e, f, a = a || function() {
}, b = b || {};
e = function() {
this.instanceId = M3.id();
a.apply(this, arguments)
};
f = e.prototype;
M3.registerClassEvent.call(f);
$.each(b, function(a, b) {
f[a] = "function" == typeof b ? function() {
var e, f;
e = Array.prototype.slice.call(arguments,
0);
if (!(c && !1 === c.apply(this, [a].concat(e))))
return this.fireEvent("before" + a, e), f = b.apply(this, e), d && d.apply(this, [a].concat(e)), this.fireEvent(a, e), f
} : b
});
return e
},dom: {},boxModule: {pageSize: function() {
var a, b, c, d, e, f, g = document.documentElement, i = document.body;
window.innerWidth ? (a = window.innerWidth, b = window.innerHeight, e = window.pageXOffset, f = window.pageYOffset) : g && g.clientWidth && (a = g.clientWidth, b = g.clientHeight, e = g.scrollLeft, f = g.scrollTop);
g && g.scrollWidth ? (c = g.scrollWidth, d = g.scrollHeight) :
i.scrollWidth && (c = i.scrollWidth, d = i.scrollHeight);
return [c, d, a, b, e, f]
},elementSize: function(a) {
return [a.offsetWidth, a.offsetHeight, a.clientWidth, a.clientHeight, a.scrollWidth, a.scrollHeight, a.scrollLeft, a.scrollTop]
}},mask: {create: function(a, b, c) {
b || $("body");
(c || $.browser.msie && (6 == $.browser.version || 7 == $.browser.version)) && M3.boxModule.pageSize();
a = $("#overlay");
name = "Height";
h = Math.max(document.documentElement["client" + name], document.body["scroll" + name], document.documentElement["scroll" + name], document.body["offset" +
name], document.documentElement["offset" + name]);
a.css({display: "block",height: h + "px"});
return a[0]
},show: function(a) {
$(a).css("display", "block")
},hide: function(a, b) {
return b ? $(a).remove() : $(a).css("display", "none")
}},popup: {show: function(a, b, c) {
b = b || {};
b.z = b.z || 1E3;
var d = M3.boxModule.pageSize(), e, f = [], g = [];
$(a).css("display", "block");
!b.left && !b.right ? (e = M3.boxModule.elementSize(a), f[0] = "left", f[1] = (d[2] - e[0]) / 2) : f = b.left ? ["left", b.left] : ["right", b.right];
!b.top && !b.bottom ? (e = e || MV.boxModule.elementSize(a),
g[0] = "top", g[1] = (d[3] - e[1]) / 2) : g = b.top ? ["top", b.top] : ["bottom", b.bottom];
f[1] += "px";
g[1] += "px";
c && (!$.browser.msie || 6 != $.browser.version) && $(a).css("position", "fixed")
},hide: function(a) {
$(a).hide()
}},user: {json: null,sign: function(a) {
a = a || {top: 50,z: 1E3};
if (M3.user.sign.info)
reSet(), M3.mask.show(M3.user.sign.info.mask), M3.popup.show(M3.user.sign.info.container, a), $("#pass_login_username_0").focus();
else {
M3.user.sign.info = {poz: a};
var a = function(a) {
return function() {
var c = {luname: j,lphone: n}, b = {luname: g,
lphone: i}, d;
for (d in c)
if (d == a) {
if (c[d].hasClass("on"))
return !1;
c[d].addClass("on");
b[d].removeClass("hidden")
} else
c[d].removeClass(), b[d].addClass("hidden")
}
}, b = M3.user.sign.info, c = $("<div />"), d = $("<div />"), e = M3.mask.create(b.poz.z - 1), f = M3.user.statusBar.config;
c.addClass("pop");
d.addClass("pop-wrapper");
d.append(c);
d.insertBefore($("#overlay"));
b.mask = e;
b.container = c[0];
c.html('<div class="pop-header"><ul class="tab clearfix"><li class="on" id="mv_sign_tab_luname"><a href="javascript:;" hidefocus="true">登录<i class="bg"></i></a></li><li id="mv_sign_tab_lphone"><a href="javascript:;" hidefocus="true">手机登录<i class="bg"></i></a></li></ul><a class="pop-close" id="mv_sign_close" title="关闭"><i class="close">关闭</i></a></div><div class="pop-cont"><i class="bg"></i><div class="pop-box-wrapper"><div class="pop-box login-box"><div id="mv_luname" class="via-uname-box"></div><div id="mv_lphone" class="via-phone-box hidden"></div></div><div class="pop-box login-desc"><div id="login-desc-upper" class="login-desc-upper"><ul><li>还没有百度帐号?</li><li><a href="https://passport.baidu.com/v2/?reg&regType=1&tpl=music&u=http://fm.baidu.com/" target="_blank" id="register-text">立即注册</a></li></ul></div><div class="login-desc-bottom"><div class="list-label">登录即可享受</div><ul><li class="item-listen png">忠实记录听歌喜好</li><li class="item-love png">打造自己的红心频道</li><li class="item-private png">私人个性歌曲推荐</li></ul></div></div></div></div>');
M3.popup.show(c[0], b.poz);
var g = $("#mv_luname"), i = $("#mv_lphone"), j = $("#mv_sign_tab_luname"), n = $("#mv_sign_tab_lphone"), d = $("#mv_sign_close");
j.click(a("luname"));
n.click(a("lphone"));
d.click(function() {
M3.mask.hide(e);
M3.popup.hide(c[0]);
f && f.close && f.close();
FM.setLoginInfo({user_name: "",user_id: 0})
});
var a = location.href.replace(/(http:\/\/[^\/\\]+)([\/\\].*)/g, "$1") + "/v2Jump.html", l, m;
bdPass.api.login.init({outerDomId: "mv_luname",isPhone: !1,u: null,staticpage: a,onReady: function(a) {
l = createErrHolder($(a));
$("#pass_login_label_username_0").text("请输入百度帐号");
$("#pass_login_label_password_0").text("请输入密码");
labelSwitcher({inputUsername: $("#pass_login_username_0"),inputPassword: $("#pass_login_password_0"),inputVcode: $("#pass_login_verifycode_0")});
passPortLoadStatus = !0;
$("#pass_login_username_0").focus()
},onInputErr: function(a, c) {
loginErr("uname", l, a, c)
},onLoginSuccess: function() {
b.mask.style.display = "none";
b.container.style.display = "none";
M3.user.statusBar(!1, 1)
}});
bdPass.api.login.init({outerDomId: "mv_lphone",
isPhone: !0,u: null,staticpage: a,onReady: function(a) {
m = createErrHolder($(a));
$("#pass_login_label_phoneNumber_1").text("请输入手机号");
$("#pass_login_label_password_1").text("请输入密码");
labelSwitcher({inputUsername: $("#pass_login_phoneNumber_1"),inputPassword: $("#pass_login_password_1"),inputVcode: $("#pass_login_verifycode_1")})
},onInputErr: function(a, c) {
loginErr("phone", m, a, c)
},onLoginSuccess: function() {
b.mask.style.display = "none";
b.container.style.display = "none";
M3.user.statusBar(!1, 1)
}});
baidu.phoenix.require(["tsina",
"renren"], {target: "login-desc-upper",tpl: "music",html: {tsina: "tsina",renren: "renren"},u: "http://fm.baidu.com/",memlogin: 1})
}
},signOut: function() {
M3.log("http://passport.baidu.com/?logout&u=" + encodeURIComponent(location.href) + "&" + M3.timeStamp());
M3.user.statusBar(!1, 1)
},check: function(a) {
var b = "M3CheckUser" + M3.id();
window[b] = function(c) {
M3.user.json = c;
a && a(c);
window[b] = null
};
$.getScript("/dev/api/?tn=checkuser&format=json&callback=" + b + "&rnd=" + M3.timeStamp())
},statusBar: function(a, b) {
var c = "M3GetUserInfo" +
M3.id();
window[c] = function(a) {
M3.user.json = a;
FM.setLoginInfo({user_name: a.uName,user_id: a.uId || 0});
if (M3.user.statusBar.config) {
var e = M3.user.statusBar.config;
b ? (1 == b && e.signIn && e.signIn(a), 2 == b && e.signUp && e.signUp(a)) : e.check && e.check(a)
}
window[c] = null
};
a && (M3.user.statusBar.config || (M3.user.statusBar.config = a));
$.getScript("/dev/api/?tn=checkuser&format=json&callback=" + c + "&rnd=" + M3.timeStamp())
}}};
function reSet() {
if (passPortLoadStatus) {
var a = $("mv_sign_tab_luname"), b = $("mv_luname");
a.hasClass("on") || (a.addClass("on"), a.next().removeClass("on"), b.next().addClass("hidden"), b.removeClass("hidden"));
$("pass_login_username_0").attr("value", "");
$("pass_login_password_0").attr("value", "");
$("pass_login_phoneNumber_1").attr("value", "");
$("pass_login_password_1").attr("value", "")
}
}
function loginErr(a, b, c, d) {
var e, f = {"-1": "登录时发生未知错误,请重新输入","-3": "手机号格式错误,请重新输入。(小于或等于11位的数字)","-11": "您尝试使用邮箱登录,但邮箱太长。(不超过60个字节)","-21": "您尝试使用用户名登录,但用户名太长。(不超过7个汉字或14个字节)",4: "登录密码错误,请重新输入",6: "验证码不匹配,请重新输入验证码",5: "今日登录次数过多",16: "对不起,您现在无法登录",20: "此帐号已登录人数过多",257: "请输入验证码",110024: "该用户已注册,但未激活,请激活"}, g = {username: "请输入百度账号",phoneNumber: "请输入手机号",password: "请输入密码",verifycode: "请输入验证码"};
"uname" == a ? (f[1] = "用户名格式错误,请重新输入", f[2] = "用户不存在") : "phone" == a && (f[1] = "手机号格式错误,请重新输入", f[2] = "手机号不存在");
if ("-2" == d)
for (var i in g) {
if (c.id.match(RegExp(i))) {
e =
g[i];
break
}
}
else
e = f[d];
b.text(e || "")
}
function createErrHolder(a) {
var b = $("<div />");
b.addClass("login-err-msg");
b.insertBefore(a.first());
return b
}
function labelSwitcher(a) {
for (var b in a)
"" == a[b].attr("value") ? a[b].prev().show() : a[b].prev().hide(), a[b].focus(function(c) {
return function() {
a[c].prev().hide()
}
}(b)), a[b].blur(function(c) {
return function() {
"" == a[c].attr("value") && a[c].prev().show()
}
}(b)), a[b].prev().click(function(c) {
return function() {
a[c].prev().hide();
a[c].focus()
}
}(b))
}
var bradio = bradio || {}, console = console || {log: function() {
}};
window._log = function(a, b) {
var c = "log_" + M3.timeStamp(), c = window[c] = new Image, d = "http://nsclick.baidu.com/v.gif?pid=304&ref=radio&url=&type=" + a + "&msg=" + (b || "") + "&source=pcweb&_=" + (new Date).getTime();
c.src = d
};
_log("init", "");
window.onerror = function(a, b, c) {
_log("jserror", a + " line:" + c);
return !1
};
bradio.namespace = function() {
var a = arguments, b = null, c, d, e, f;
c = 0;
for (f = a.length; c < f; c++) {
e = ("" + a[c]).split(".");
b = bradio;
for (d = "bradio" == e[0] ? 1 : 0; d < e.length; d += 1)
b[e[d]] = b[e[d]] || {}, b = b[e[d]]
}
return b
};
bradio.addPath = function(a) {
/^.+\/$/g.test(a) && (a += "__init__");
document.write(unescape("%3Cscript src='" + ("/static/js/" + a + ".js") + "' type='text/javascript'%3E%3C/script%3E"))
};
if ($.browser.msie && 7 > $.browser.version) {
var bgHide = $("#body-bg-hide");
window.onscroll = function() {
bgHide && bgHide.html("")
}
}
var T, baidu = T = baidu || {version: "1.5.2.2"};
baidu.guid = "$BAIDU$";
baidu.$$ = window[baidu.guid] = window[baidu.guid] || {global: {}};
baidu.ajax = baidu.ajax || {};
baidu.fn = baidu.fn || {};
baidu.fn.blank = function() {
};
baidu.ajax.request = function(a, b) {
function c() {
if (4 == o.readyState) {
try {
var a = o.status
} catch (c) {
e("failure");
return
}
e(a);
200 <= a && 300 > a || 304 == a || 1223 == a ? e("success") : e("failure");
window.setTimeout(function() {
o.onreadystatechange = baidu.fn.blank;
i && (o = null)
}, 0)
}
}
function d() {
if (window.ActiveXObject)
try {
return new ActiveXObject("Msxml2.XMLHTTP")
} catch (a) {
try {
return new ActiveXObject("Microsoft.XMLHTTP")
} catch (c) {
}
}
if (window.XMLHttpRequest)
return new XMLHttpRequest
}
function e(a) {
var a = "on" + a, c = q[a], b = baidu.ajax[a];
if (c)
if (u && clearTimeout(u), "onsuccess" != a)
c(o);
else {
try {
o.responseText
} catch (d) {
return c(o)
}
c(o, o.responseText)
}
else
b && "onsuccess" != a && b(o)
}
var f = b || {}, g = f.data || "", i = !1 !== f.async, j = f.username || "", n = f.password || "", l = (f.method || "GET").toUpperCase(), m = f.headers || {}, k = f.timeout || 0, q = {}, u, s, o;
for (s in f)
q[s] = f[s];
m["X-Requested-With"] = "XMLHttpRequest";
try {
o = d();
"GET" == l && (g && (a += (0 <= a.indexOf("?") ? "&" : "?") + g, g = null), f.noCache && (a += (0 <= a.indexOf("?") ? "&" : "?") + "b" + +new Date + "=1"));
j ? o.open(l, a, i, j, n) :
o.open(l, a, i);
i && (o.onreadystatechange = c);
"POST" == l && o.setRequestHeader("Content-Type", m["Content-Type"] || "application/x-www-form-urlencoded");
for (s in m)
m.hasOwnProperty(s) && o.setRequestHeader(s, m[s]);
e("beforerequest");
k && (u = setTimeout(function() {
o.onreadystatechange = baidu.fn.blank;
o.abort();
e("timeout")
}, k));
o.send(g);
i || c()
} catch (r) {
e("failure")
}
return o
};
baidu.string = baidu.string || {};
baidu.string.format = function(a, b) {
var a = String(a), c = Array.prototype.slice.call(arguments, 1), d = Object.prototype.toString;
return c.length ? (c = 1 == c.length ? null !== b && /\[object Array\]|\[object Object\]/.test(d.call(b)) ? b : c : c, a.replace(/#\{(.+?)\}/g, function(a, b) {
var g = c[b];
"[object Function]" == d.call(g) && (g = g(b));
return "undefined" == typeof g ? "" : g
})) : a
};
baidu.format = baidu.string.format;
baidu.object = baidu.object || {};
baidu.object.each = function(a, b) {
var c, d;
if ("function" == typeof b)
for (d in a)
if (a.hasOwnProperty(d) && (c = a[d], c = b.call(a, c, d), !1 === c))
break;
return a
};
baidu.extend = baidu.object.extend = function(a, b) {
for (var c in b)
b.hasOwnProperty(c) && (a[c] = b[c]);
return a
};
baidu.number = baidu.number || {};
baidu.number.pad = function(a, b) {
var c = "", d = 0 > a, e = String(Math.abs(a));
e.length < b && (c = Array(b - e.length + 1).join("0"));
return (d ? "-" : "") + c + e
};
baidu.platform = baidu.platform || {};
baidu.platform.isAndroid = /android/i.test(navigator.userAgent);
baidu.platform.isIpad = /ipad/i.test(navigator.userAgent);
baidu.platform.isIphone = /iphone/i.test(navigator.userAgent);
baidu.swf = baidu.swf || {};
baidu.browser = baidu.browser || {};
baidu.browser.ie = baidu.ie = /msie (\d+\.\d+)/i.test(navigator.userAgent) ? document.documentMode || +RegExp.$1 : void 0;
baidu.array = baidu.array || {};
baidu.array.remove = function(a, b) {
for (var c = a.length; c--; )
c in a && a[c] === b && a.splice(c, 1);
return a
};
baidu.lang = baidu.lang || {};
baidu.lang.isArray = function(a) {
return "[object Array]" == Object.prototype.toString.call(a)
};
baidu.lang.isFunction = function(a) {
return "[object Function]" == Object.prototype.toString.call(a)
};
baidu.lang.toArray = function(a) {
if (null === a || void 0 === a)
return [];
if (baidu.lang.isArray(a))
return a;
if ("number" !== typeof a.length || "string" === typeof a || baidu.lang.isFunction(a))
return [a];
if (a.item) {
for (var b = a.length, c = Array(b); b--; )
c[b] = a[b];
return c
}
return [].slice.call(a)
};
baidu.swf.getMovie = function(a) {
var b = document[a], c;
return 9 == baidu.browser.ie ? b && b.length ? 1 == (c = baidu.array.remove(baidu.lang.toArray(b), function(a) {
return "embed" != a.tagName.toLowerCase()
})).length ? c[0] : c : b : b || window[a]
};
baidu.swf.version = function() {
var a = navigator;
if (a.plugins && a.mimeTypes.length) {
var b = a.plugins["Shockwave Flash"];
if (b && b.description)
return b.description.replace(/([a-zA-Z]|\s)+/, "").replace(/(\s)+r/, ".") + ".0"
} else if (window.ActiveXObject && !window.opera)
for (a = 12; 2 <= a; a--)
try {
if (b = new ActiveXObject("ShockwaveFlash.ShockwaveFlash." + a))
return b.GetVariable("$version").replace(/WIN/g, "").replace(/,/g, ".")
} catch (c) {
}
}();
baidu.dom = baidu.dom || {};
baidu.dom.g = function(a) {
return !a ? null : "string" == typeof a || a instanceof String ? document.getElementById(a) : a.nodeName && (1 == a.nodeType || 9 == a.nodeType) ? a : null
};
baidu.g = baidu.G = baidu.dom.g;
baidu.browser.opera = /opera(\/| )(\d+(\.\d+)?)(.+?(version\/(\d+(\.\d+)?)))?/i.test(navigator.userAgent) ? +(RegExp.$6 || RegExp.$2) : void 0;
baidu.dom.insertHTML = function(a, b, c) {
var a = baidu.dom.g(a), d;
a.insertAdjacentHTML && !baidu.browser.opera ? a.insertAdjacentHTML(b, c) : (d = a.ownerDocument.createRange(), b = b.toUpperCase(), "AFTERBEGIN" == b || "BEFOREEND" == b ? (d.selectNodeContents(a), d.collapse("AFTERBEGIN" == b)) : (b = "BEFOREBEGIN" == b, d[b ? "setStartBefore" : "setEndAfter"](a), d.collapse(b)), d.insertNode(d.createContextualFragment(c)));
return a
};
baidu.insertHTML = baidu.dom.insertHTML;
baidu.string.encodeHTML = function(a) {
return String(a).replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#39;")
};
baidu.encodeHTML = baidu.string.encodeHTML;
baidu.swf.createHTML = function(a) {
var a = a || {}, b = baidu.swf.version, c = a.ver || "6.0.0", d, e, f, g;
f = {};
var i = baidu.string.encodeHTML;
for (g in a)
f[g] = a[g];
a = f;
if (b) {
b = b.split(".");
c = c.split(".");
for (f = 0; 3 > f && !(d = parseInt(b[f], 10), e = parseInt(c[f], 10), e < d); f++)
if (e > d)
return ""
} else
return "";
f = a.vars;
c = "classid codebase id width height align".split(" ");
a.align = a.align || "middle";
a.classid = "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000";
a.codebase = "http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0";
a.movie = a.url || "";
delete a.vars;
delete a.url;
if ("string" == typeof f)
a.flashvars = f;
else {
d = [];
for (g in f)
b = f[g], d.push(g + "=" + encodeURIComponent(b));
a.flashvars = d.join("&")
}
d = ["<object "];
f = 0;
for (e = c.length; f < e; f++)
b = c[f], d.push(" ", b, '="', i(a[b]), '"');
d.push(">");
f = {wmode: 1,scale: 1,quality: 1,play: 1,loop: 1,menu: 1,salign: 1,bgcolor: 1,base: 1,allowscriptaccess: 1,allownetworking: 1,allowfullscreen: 1,seamlesstabbing: 1,devicefont: 1,swliveconnect: 1,flashvars: 1,movie: 1};
for (g in a)
b = a[g], g = g.toLowerCase(), f[g] &&
(b || !1 === b || 0 === b) && d.push('<param name="' + g + '" value="' + i(b) + '" />');
a.src = a.movie;
a.name = a.id;
delete a.id;
delete a.movie;
delete a.classid;
delete a.codebase;
a.type = "application/x-shockwave-flash";
a.pluginspage = "http://www.macromedia.com/go/getflashplayer";
d.push("<embed");
var j;
for (g in a)
if ((b = a[g]) || !1 === b || 0 === b)
/ /^salign$/i .
test(g) ? j = b : d.push(" ", g, '="', i(b), '"');
j && d.push(' salign="', i(j), '"');
d.push("></embed></object>");
return d.join("")
};
baidu.swf.create = function(a, b) {
var a = a || {}, c = baidu.swf.createHTML(a) || a.errorMessage || "";
b && "string" == typeof b && (b = document.getElementById(b));
baidu.dom.insertHTML(b || document.body, "beforeEnd", c)
};
baidu.lang.guid = function() {
return "TANGRAM$" + baidu.$$._counter++
};
baidu.$$._counter = baidu.$$._counter || 1;
baidu.lang.Class = function() {
this.guid = baidu.lang.guid();
!this.__decontrolled && (baidu.$$._instances[this.guid] = this)
};
baidu.$$._instances = baidu.$$._instances || {};
baidu.lang.Class.prototype.dispose = function() {
delete baidu.$$._instances[this.guid];
for (var a in this)
"function" != typeof this[a] && delete this[a];
this.disposed = !0
};
baidu.lang.Class.prototype.toString = function() {
return "[object " + (this.__type || this._className || "Object") + "]"
};
window.baiduInstance = function(a) {
return baidu.$$._instances[a]
};
baidu.lang.isString = function(a) {
return "[object String]" == Object.prototype.toString.call(a)
};
baidu.isString = baidu.lang.isString;
baidu.lang.Event = function(a, b) {
this.type = a;
this.returnValue = !0;
this.target = b || null;
this.currentTarget = null
};
baidu.lang.Class.prototype.fire = baidu.lang.Class.prototype.dispatchEvent = function(a, b) {
baidu.lang.isString(a) && (a = new baidu.lang.Event(a));
!this.__listeners && (this.__listeners = {});
var b = b || {}, c;
for (c in b)
a[c] = b[c];
var d, e = this.__listeners, f = a.type;
a.target = a.target || (a.currentTarget = this);
f.indexOf("on") && (f = "on" + f);
"function" == typeof this[f] && this[f].apply(this, arguments);
if ("object" == typeof e[f]) {
c = 0;
for (d = e[f].length; c < d; c++)
e[f][c] && e[f][c].apply(this, arguments)
}
return a.returnValue
};
baidu.lang.Class.prototype.on = baidu.lang.Class.prototype.addEventListener = function(a, b, c) {
if ("function" == typeof b) {
!this.__listeners && (this.__listeners = {});
var d, e = this.__listeners;
a.indexOf("on") && (a = "on" + a);
"object" != typeof e[a] && (e[a] = []);
for (d = e[a].length - 1; 0 <= d; d--)
if (e[a][d] === b)
return b;
e[a].push(b);
c && "string" == typeof c && (e[a][c] = b);
return b
}
};
baidu.lang.createClass = function(a, b) {
var b = b || {}, c = b.superClass || baidu.lang.Class, d = function() {
b.decontrolled && (this.__decontrolled = !0);
c.apply(this, arguments);
for (e in d.options)
this[e] = d.options[e];
a.apply(this, arguments);
for (var e = 0, f = d["r"]; f && e < f.length; e++)
f[e].apply(this, arguments)
};
d.options = b.options || {};
var e = function() {
}, f = a.prototype;
e.prototype = c.prototype;
var e = d.prototype = new e, g;
for (g in f)
e[g] = f[g];
g = b.className || b.type;
"string" == typeof g && (e.__type = g);
e.constructor = f.constructor;
d.extend = function(a) {
for (var c in a)
d.prototype[c] = a[c];
return d
};
return d
};
baidu.lang.inherits = function(a, b, c) {
var d, e, f = a.prototype, g = new Function;
g.prototype = b.prototype;
e = a.prototype = new g;
for (d in f)
e[d] = f[d];
a.prototype.constructor = a;
a.superClass = b.prototype;
"string" == typeof c && (e.__type = c);
a.extend = function(c) {
for (var b in c)
e[b] = c[b];
return a
};
return a
};
baidu.inherits = baidu.lang.inherits;
baidu.lang.isBoolean = function(a) {
return "boolean" === typeof a
};
baidu.lang.isElement = function(a) {
return !(!a || !(a.nodeName && 1 == a.nodeType))
};
baidu.lang.isNumber = function(a) {
return "[object Number]" == Object.prototype.toString.call(a) && isFinite(a)
};
baidu.lang.isObject = function(a) {
return "function" == typeof a || !!(a && "object" == typeof a)
};
baidu.isObject = baidu.lang.isObject;
baidu.fn.bind = function(a, b) {
var c = 2 < arguments.length ? [].slice.call(arguments, 2) : null;
return function() {
var d = baidu.lang.isString(a) ? b[a] : a, e = c ? c.concat([].slice.call(arguments, 0)) : arguments;
return d.apply(b || d, e)
}
};
baidu.each = baidu.array.forEach = baidu.array.each = function(a, b, c) {
var d, e, f = a.length;
if ("function" == typeof b)
for (e = 0; e < f && !(d = a[e], d = b.call(c || a, d, e), !1 === d); e++)
;
return a
};
baidu.array.some = function(a, b, c) {
for (var d = 0, e = a.length; d < e; d++)
if (d in a && b.call(c || a, a[d], d))
return !0;
return !1
};
baidu.browser.chrome = /chrome\/(\d+\.\d+)/i.test(navigator.userAgent) ? +RegExp.$1 : void 0;
baidu.browser.firefox = /firefox\/(\d+\.\d+)/i.test(navigator.userAgent) ? +RegExp.$1 : void 0;
baidu.browser.isWebkit = /webkit/i.test(navigator.userAgent);
try {
/(\d+\.\d+)/.test(external.max_version) && (baidu.browser.maxthon = +RegExp.$1)
} catch (e$$22) {
}
(function() {
var a = navigator.userAgent;
baidu.browser.safari = /(\d+\.\d)?(?:\.\d)?\s+safari\/?(\d+\.\d+)?/i.test(a) && !/chrome/i.test(a) ? +(RegExp.$1 || RegExp.$2) : void 0
})();
baidu.dom._styleFixer = baidu.dom._styleFixer || {};
baidu.dom._styleFilter = baidu.dom._styleFilter || [];
baidu.dom._styleFilter.filter = function(a, b, c) {
for (var d = 0, e = baidu.dom._styleFilter, f; f = e[d]; d++)
if (f = f[c])
b = f(a, b);
return b
};
baidu.string.toCamelCase = function(a) {
return 0 > a.indexOf("-") && 0 > a.indexOf("_") ? a : a.replace(/[-_][^-_]/g, function(a) {
return a.charAt(1).toUpperCase()
})
};
baidu.dom.setStyle = function(a, b, c) {
var d = baidu.dom, e, a = d.g(a), b = baidu.string.toCamelCase(b);
if (e = d._styleFilter)
c = e.filter(b, c, "set");
(e = d._styleFixer[b]) && e.set ? e.set(a, c, b) : a.style[e || b] = c;
return a
};
baidu.setStyle = baidu.dom.setStyle;
baidu.dom.setStyles = function(a, b) {
var a = baidu.dom.g(a), c;
for (c in b)
baidu.dom.setStyle(a, c, b[c]);
return a
};
baidu.setStyles = baidu.dom.setStyles;
baidu.dom._NAME_ATTRS = function() {
var a = {cellpadding: "cellPadding",cellspacing: "cellSpacing",colspan: "colSpan",rowspan: "rowSpan",valign: "vAlign",usemap: "useMap",frameborder: "frameBorder"};
8 > baidu.browser.ie ? (a["for"] = "htmlFor", a["class"] = "className") : (a.htmlFor = "for", a.className = "class");
return a
}();
baidu.dom.setAttr = function(a, b, c) {
a = baidu.dom.g(a);
"style" == b ? a.style.cssText = c : (b = baidu.dom._NAME_ATTRS[b] || b, a.setAttribute(b, c));
return a
};
baidu.setAttr = baidu.dom.setAttr;
baidu.dom.setAttrs = function(a, b) {
var a = baidu.dom.g(a), c;
for (c in b)
baidu.dom.setAttr(a, c, b[c]);
return a
};
baidu.setAttrs = baidu.dom.setAttrs;
baidu.dom.create = function(a, b) {
var c = document.createElement(a);
return baidu.dom.setAttrs(c, b || {})
};
baidu.sio = baidu.sio || {};
baidu.sio._createScriptTag = function(a, b, c) {
a.setAttribute("type", "text/javascript");
c && a.setAttribute("charset", c);
a.setAttribute("src", b);
document.getElementsByTagName("head")[0].appendChild(a)
};
baidu.sio._removeScriptTag = function(a) {
if (a.clearAttributes)
a.clearAttributes();
else
for (var b in a)
a.hasOwnProperty(b) && delete a[b];
a && a.parentNode && a.parentNode.removeChild(a)
};
baidu.sio.callByServer = function(a, b, c) {
function d(a) {
return function() {
try {
a ? g.onfailure && g.onfailure() : (b.apply(window, arguments), clearTimeout(n)), window[f] = null, delete window[f]
} catch (c) {
}finally {
baidu.sio._removeScriptTag(e)
}
}
}
var e = document.createElement("SCRIPT"), f, g = c || {}, c = g.charset, i = g.queryField || "callback", j = g.timeOut || 0, n, l = RegExp("(\\?|&)" + i + "=([^&]*)"), m;
if (baidu.lang.isFunction(b))
f = "bd__cbs__" + Math.floor(2147483648 * Math.random()).toString(36), window[f] = d(0);
else if (baidu.lang.isString(b))
f =
b;
else if (m = l.exec(a))
f = m[2];
j && (n = setTimeout(d(1), j));
a = a.replace(l, "$1" + i + "=" + f);
0 > a.search(l) && (a += (0 > a.indexOf("?") ? "?" : "&") + i + "=" + f);
baidu.sio._createScriptTag(e, a, c)
};
baidu.dom._g = function(a) {
return baidu.lang.isString(a) ? document.getElementById(a) : a
};
baidu._g = baidu.dom._g;
baidu.dom.getDocument = function(a) {
a = baidu.dom.g(a);
return 9 == a.nodeType ? a : a.ownerDocument || a.document
};
baidu.dom.getComputedStyle = function(a, b) {
var a = baidu.dom._g(a), c = baidu.dom.getDocument(a);
return c.defaultView && c.defaultView.getComputedStyle && (c = c.defaultView.getComputedStyle(a, null)) ? c[b] || c.getPropertyValue(b) : ""
};
baidu.event = baidu.event || {};
baidu.event._listeners = baidu.event._listeners || [];
baidu.event.on = function(a, b, c) {
var b = b.replace(/^on/i, ""), a = baidu.dom._g(a), d = function(b) {
c.call(a, b)
}, e = baidu.event._listeners, f = baidu.event._eventFilter, g = b, b = b.toLowerCase();
f && f[b] && (d = f[b](a, b, d), g = d.type, d = d.listener);
a.addEventListener ? a.addEventListener(g, d, !1) : a.attachEvent && a.attachEvent("on" + g, d);
e[e.length] = [a, b, c, d, g];
return a
};
baidu.on = baidu.event.on;
baidu.page = baidu.page || {};
baidu.page.getScrollTop = function() {
var a = document;
return window.pageYOffset || a.documentElement.scrollTop || a.body.scrollTop
};
baidu.page.getScrollLeft = function() {
var a = document;
return window.pageXOffset || a.documentElement.scrollLeft || a.body.scrollLeft
};
(function() {
baidu.page.getMousePosition = function() {
return {x: baidu.page.getScrollLeft() + a.x,y: baidu.page.getScrollTop() + a.y}
};
var a = {x: 0,y: 0};
baidu.event.on(document, "onmousemove", function(b) {
b = window.event || b;
a.x = b.clientX;
a.y = b.clientY
})
})();
baidu.dom.getStyle = function(a, b) {
var c = baidu.dom, a = c.g(a), b = baidu.string.toCamelCase(b), d = a.style[b] || (a.currentStyle ? a.currentStyle[b] : "") || c.getComputedStyle(a, b);
if (!d || "auto" == d) {
var e = c._styleFixer[b];
e && (d = e.get ? e.get(a, b, d) : baidu.dom.getStyle(a, e))
}
if (e = c._styleFilter)
d = e.filter(b, d, "get");
return d
};
baidu.getStyle = baidu.dom.getStyle;
baidu.browser.isGecko = /gecko/i.test(navigator.userAgent) && !/like gecko/i.test(navigator.userAgent);
baidu.browser.isStrict = "CSS1Compat" == document.compatMode;
baidu.dom.getPosition = function(a) {
var a = baidu.dom.g(a), b = baidu.dom.getDocument(a), c = baidu.browser, d = baidu.dom.getStyle;
0 < c.isGecko && b.getBoxObjectFor && d(a, "position");
var e = {left: 0,top: 0}, f;
if (a == (c.ie && !c.isStrict ? b.body : b.documentElement))
return e;
if (a.getBoundingClientRect)
a = a.getBoundingClientRect(), e.left = Math.floor(a.left) + Math.max(b.documentElement.scrollLeft, b.body.scrollLeft), e.top = Math.floor(a.top) + Math.max(b.documentElement.scrollTop, b.body.scrollTop), e.left -= b.documentElement.clientLeft,
e.top -= b.documentElement.clientTop, a = b.body, b = parseInt(d(a, "borderLeftWidth")), d = parseInt(d(a, "borderTopWidth")), c.ie && !c.isStrict && (e.left -= isNaN(b) ? 2 : b, e.top -= isNaN(d) ? 2 : d);
else {
f = a;
do {
e.left += f.offsetLeft;
e.top += f.offsetTop;
if (0 < c.isWebkit && "fixed" == d(f, "position")) {
e.left += b.body.scrollLeft;
e.top += b.body.scrollTop;
break
}
f = f.offsetParent
} while (f && f != a);
if (0 < c.opera || 0 < c.isWebkit && "absolute" == d(a, "position"))
e.top -= b.body.offsetTop;
for (f = a.offsetParent; f && f != b.body; ) {
e.left -= f.scrollLeft;
if (!c.opera ||
"TR" != f.tagName)
e.top -= f.scrollTop;
f = f.offsetParent
}
}
return e
};
baidu.array.indexOf = function(a, b, c) {
var d = a.length, c = c | 0;
for (0 > c && (c = Math.max(0, d + c)); c < d; c++)
if (c in a && a[c] === b)
return c;
return -1
};
baidu.array.contains = function(a, b) {
return 0 <= baidu.array.indexOf(a, b)
};
baidu.event.getKeyCode = function(a) {
return a.which || a.keyCode
};
baidu.object.values = function(a) {
var b = [], c = 0, d;
for (d in a)
a.hasOwnProperty(d) && (b[c++] = a[d]);
return b
};
(function() {
function a(a, c) {
for (var b = 0, d = a.length, e = {}; b < d; b++)
e[a[b]] = c[a[b]], delete c[a[b]];
return e
}
function b(c, b, d) {
var d = baidu.object.extend({}, d), e = baidu.object.values(a(j[b], d)), f = document.createEvent(b);
e.unshift(c);
"KeyEvents" == b ? f.initKeyEvent.apply(f, e) : "MouseEvents" == b ? f.initMouseEvent.apply(f, e) : "UIEvents" == b ? f.initUIEvent.apply(f, e) : f.initEvent.apply(f, e);
baidu.object.extend(f, d);
return f
}
function c(a) {
var c;
document.createEventObject && (c = document.createEventObject(), baidu.object.extend(c,
a));
return c
}
var d = baidu.browser, e = {keydown: 1,keyup: 1,keypress: 1}, f = {click: 1,dblclick: 1,mousedown: 1,mousemove: 1,mouseup: 1,mouseover: 1,mouseout: 1}, g = {abort: 1,blur: 1,change: 1,error: 1,focus: 1,load: d.ie ? 0 : 1,reset: 1,resize: 1,scroll: 1,select: 1,submit: 1,unload: d.ie ? 0 : 1}, i = {scroll: 1,resize: 1,reset: 1,submit: 1,change: 1,select: 1,error: 1,abort: 1}, j = {KeyEvents: "bubbles cancelable view ctrlKey altKey shiftKey metaKey keyCode charCode".split(" "),MouseEvents: "bubbles cancelable view detail screenX screenY clientX clientY ctrlKey altKey shiftKey metaKey button relatedTarget".split(" "),
HTMLEvents: ["bubbles", "cancelable"],UIEvents: ["bubbles", "cancelable", "view", "detail"],Events: ["bubbles", "cancelable"]};
baidu.object.extend(i, e);
baidu.object.extend(i, f);
baidu.event.fire = function(d, l, m) {
l = l.replace(/^on/i, "");
d = baidu.dom._g(d);
m = baidu.object.extend({bubbles: !0,cancelable: !0,view: window,detail: 1,screenX: 0,screenY: 0,clientX: 0,clientY: 0,ctrlKey: !1,altKey: !1,shiftKey: !1,metaKey: !1,keyCode: 0,charCode: 0,button: 0,relatedTarget: null}, m);
if (e[l]) {
var k = l, m = a(j.KeyEvents, m), q;
if (document.createEvent)
try {
q =
b(k, "KeyEvents", m)
} catch (u) {
try {
q = b(k, "Events", m)
} catch (s) {
q = b(k, "UIEvents", m)
}
}
else
m.keyCode = 0 < m.charCode ? m.charCode : m.keyCode, q = c(m);
m = q
} else if (f[l])
q = l, m = a(j.MouseEvents, m), document.createEvent ? (k = b(q, "MouseEvents", m), m.relatedTarget && !k.relatedTarget && ("mouseout" == q.toLowerCase() ? k.toElement = m.relatedTarget : "mouseover" == q.toLowerCase() && (k.fromElement = m.relatedTarget))) : (m.button = 0 == m.button ? 1 : 1 == m.button ? 4 : baidu.lang.isNumber(m.button) ? m.button : 0, k = c(m)), m = k;
else if (g[l]) {
q = l;
m.bubbles = i.hasOwnProperty(q);
m = a(j.HTMLEvents, m);
if (document.createEvent)
try {
k = b(q, "HTMLEvents", m)
} catch (o) {
try {
k = b(q, "UIEvents", m)
} catch (r) {
k = b(q, "Events", m)
}
}
else
k = c(m);
m = k
} else
throw Error(l + " is not support!");
m && (d.dispatchEvent ? d.dispatchEvent(m) : d.fireEvent && d.fireEvent("on" + l, m))
}
})();
baidu.event.getTarget = function(a) {
return a.target || a.srcElement
};
baidu.dom.show = function(a) {
a = baidu.dom.g(a);
a.style.display = "";
return a
};
baidu.show = baidu.dom.show;
T.undope = !0;
var mbox = mbox || {};
mbox.namespace = function() {
var a = arguments, b = null, c, d, e;
c = 0;
for (len = a.length; c < len; c++) {
e = ("" + a[c]).split(".");
b = mbox;
for (d = "mbox" == e[0] ? 1 : 0; d < e.length; d += 1)
b[e[d]] = b[e[d]] || {}, b = b[e[d]]
}
return b
};
T.extend(mbox, {Fuze: function() {
var a, b, c;
a = [];
b = function(b) {
c ? b() : a.push(b)
};
b.fire = function() {
for (; a.length; )
a.shift()();
c = !0
};
b.extinguish = function() {
c = !1
};
b.wettish = function() {
this.fire();
this.extinguish()
};
return b
},convertTime: function(a) {
var b, a = Math.round(a / 1E3);
b = Math.floor(a / 60);
a %= 60;
return T.number.pad(b, 2) + ":" + T.number.pad(a, 2)
},Timer: function(a) {
var b = function(a, b) {
this._timer = function() {
};
this._listener = function() {
};
this._timerComplete = function() {
};
this._timerID = null;
this._delay = this._remain =
a;
this._repeatCount = b || 0;
this._currentCount = 0;
this._isRunning = !1;
this._startTime = this._endTime = 0;
this.EVENTS = {TIMER: "timer",COMPLETE: "timerComplete"}
};
b.prototype = {_createTimer: function(c, b) {
var e = this;
return 1 == b ? function() {
return a.setTimeout(function() {
e.reset();
e._listener(e._delay, b);
e._timerComplete()
}, c)
} : function() {
return a.setInterval(function() {
0 != b && e._currentCount >= b ? (e.reset(), e._timerComplete()) : (e._currentCount++, e._listener(c, e._currentCount))
}, c)
}
},addEventListener: function(a, b) {
"timer" ==
a ? (this._listener = b, this._timer = this._createTimer(this._delay, this._repeatCount)) : "timerComplete" == a && (this._timerComplete = b)
},reset: function() {
this.stop();
1 == this._repeatCount && (this._timer = this._createTimer(this._delay, this._repeatCount));
this._currentCount = 0;
this._remain = this._delay;
this._startTime = this._endTime = 0
},start: function() {
this._timerID || (this._timerID = this._timer(), 1 == this._repeatCount && (this._startTime = (new Date).getTime()), this._isRunning = !0)
},stop: function() {
this._timerID && (1 == this._repeatCount ?
a.clearTimeout(this._timerID) : a.clearInterval(this._timerID), this._timerID = null, this._isRunning = !1)
},pause: function() {
1 == this._repeatCount ? this._timerID && (this.stop(), this._endTime = (new Date).getTime(), this._remain -= this._endTime - this._startTime, 0 < this._remain ? this._timer = this._createTimer(this._remain, 1) : this.reset()) : this.stop()
},getCurrentCount: function() {
return this._currentCount
},isRunning: function() {
return this._isRunning
}};
return b
}(window),StopWatch: function() {
var a = 0, b = function() {
this.startTime =
0;
this.isRunning = !1;
this.isReset = !0;
this.passedTime = 0;
a++
};
b.prototype = {reset: function() {
this.passedTime = this.pauseTime = this.startTime = 0;
this.isRunning = !1;
this.isReset = !0
},start: function() {
this.isReset ? (this.reset(), this.startTime = (new Date).getTime()) : this.isRunning || (this.startTime = (new Date).getTime());
this.isRunning = !0;
this.isReset = !1
},pause: function() {
!this.isReset && this.isRunning && (this.pauseTime = (new Date).getTime(), this.passedTime += this.pauseTime - this.startTime, this.isRunning = !1)
},isRunning: function() {
return this.isRunning
},
isReset: function() {
return this.isReset
},getTime: function() {
return this.isReset ? 0 : this.isRunning ? (new Date).getTime() - this.startTime + this.passedTime : this.passedTime
},getCounts: function() {
return a
}};
return b
}(window)});
mbox.namespace("mbox.lang");
T.extend(mbox.lang, {createClass: function(a, b) {
var c = T.lang.createClass(a, b);
c.extend = function(a) {
for (var b in a)
c.prototype[b] = function(a, b) {
return T.lang.isFunction(a) ? function() {
this.dispatchEvent(b, {name: b,arguments: arguments});
return a.apply(this, arguments)
} : a
}(a[b], b);
return c
};
return c
}});
var PlayEngine_Interface = mbox.lang.createClass(function() {
var a = 0, b = function(a) {
this.STATES = {INIT: "init",READY: "ready",STOP: "stop",PLAY: "play",PAUSE: "pause",END: "end",BUFFERING: "buffering",PREBUFFER: "pre-buffer",ERROR: "error"};
this.EVENTS = {STATECHANGE: "player_playStateChange",POSITIONCHANGE: "player_positionChange",PROGRESS: "player_progress",ERROR: "player_error",INIT: "player_initSuccess",INITFAIL: "player_initFail"};
a = a || {};
this.mute = "undefined" == typeof a.mute ? !1 : !!a.mute;
this.volume = "undefined" == typeof a.volume ?
50 : a.volume;
this.ready = !1;
this.url = "";
this.state = this.STATES.INIT;
this.engineType = "";
this.stateStack = [this.STATES.INIT];
this.supportMimeType = []
};
b.prototype = {newId: function() {
return "_m3_" + a++
},init: function() {
},reset: function() {
},setUrl: function() {
},getUrl: function() {
return this.url
},play: function() {
},pause: function() {
},stop: function() {
},setMute: function() {
},getMute: function() {
return this.mute
},setVolume: function() {
},getVolume: function() {
return this.volume
},getState: function() {
return ""
},setCurrentPosition: function() {
},
getCurrentPosition: function() {
return 0
},getLoadedPercent: function() {
return 0
},getLoadedBytes: function() {
return 0
},getTotalBytes: function() {
return 0
},getTotalTime: function() {
return 0
},getVersion: function() {
return ""
},getEngineType: function() {
return this.engineType
},canPlayType: function(a) {
var b = this.getSupportMimeTypeList();
return T.array.some(b, function(b) {
return a == b
})
},getSupportMimeTypeList: function() {
return this.supportMimeType
},setEventListener: function(a, b) {
var e = T.fn.bind(function() {
return b.apply(this,
arguments)
}, this);
this.addEventListener(a, e)
}};
return b
}(window), {superClass: T.lang.Class,className: "PlayEngine_Interface"}), PlayEngine = mbox.lang.createClass(function(a) {
a = a || {};
this.subEnginesConf = [];
this.subEnginesInitArgs = {};
this.curEngine = null;
this.curEngineType = "";
this.unInitEngineList = [];
this.engineList = [];
this.engineTypeList = [];
this.ready = !1;
this.defaultExt = ".mp3";
this.coreContainer = null;
this.EVENTS = {STATECHANGE: "player_playStateChange",POSITIONCHANGE: "player_positionChange",PROGRESS: "player_progress",
ERROR: "player_error",INIT: "player_initSuccess",INITFAIL: "player_initFail"};
this.STATES = {INIT: "init",READY: "ready",STOP: "stop",PLAY: "play",PAUSE: "pause",END: "end",BUFFERING: "buffering",PREBUFFER: "pre-buffer",ERROR: "error"};
this.progressTimer = new mbox.Timer(200, 0);
this.positionTimer = new mbox.Timer(100, 0);
this._initEngines(a)
}, {className: "PlayEngine"}).extend({_error: function(a) {
throw Error(a);
},_initEngines: function(a) {
this.coreContainer = a.el || null;
this.subEnginesConf = a.subEngines || [];
T.array.each(this.subEnginesConf,
T.fn.bind(function(a) {
var c = a.constructorName, a = a.args || {}, d;
this.subEnginesInitArgs[c] = a;
try {
if (d = eval(c), !T.lang.isFunction(d))
return
} catch (e) {
return
}
c = new d(a);
this.unInitEngineList.push(c)
}, this));
this.curEngine = this.unInitEngineList[0]
},init: function(a) {
if (this.ready)
return this._error("");
a = a || {};
this.subEnginesInitArgs = a.subEngines ? a.subEngines : this.subEnginesInitArgs;
this.coreContainer = a.el ? a.el : this.coreContainer;
if (!this.coreContainer) {
var b = T.dom.create("div", {id: "_player_container_" + T.lang.guid()});
T.dom.setStyles(b, {width: "1px",height: "1px",overflow: "hidden"});
document.body.appendChild(b);
this.coreContainer = a.el = b
}
T.array.each(this.unInitEngineList, T.fn.bind(function(a) {
var b = "";
/^\[object (.*)\]$/i.test(a.toString()) && (b = RegExp.$1);
b = this.subEnginesInitArgs[b] || {};
a.test(!0) && (b.instanceName = b.instanceName + ".engineList[" + this.engineList.length + "]", b.el = b.el || this.coreContainer, this.engineList.push(a), a.init.apply(a, [b]))
}, this));
this.switchEngineByUrl(this.defaultExt);
this.ready = !0;
this._initProgressEvent();
this._initPositionChangeEvent()
},canPlayType: function(a) {
return T.array.some(this.engineList, function(b) {
return b.canPlayType(a)
})
},getSupportMimeTypeList: function() {
var a = [];
T.array.each(this.engineList, T.fn.bind(function(b) {
a = a.concat(b.getSupportMimeTypeList())
}, this));
return a
},switchEngineByUrl: function(a) {
var b = T.array.some(this.engineList, T.fn.bind(function(b) {
var c = b.getSupportMimeTypeList().join("|");
if (RegExp("\\.(" + c + ")(\\?|$)", "ig").test(a))
return this.curEngine = b, this.curEngineType = b.getEngineType(),
!0
}, this)), c = arguments[1];
!b && !c && arguments.callee.apply(this, [this.defaultExt, !0])
},switchEngineByMimeType: function(a) {
T.array.some(this.engineList, T.fn.bind(function(b) {
if (b.canPlayType(a))
return this.curEngine = b, this.curEngineType = b.getEngineType(), !0
}, this))
},reset: function() {
this.curEngine.reset.apply(this.curEngine, arguments)
},setUrl: function(a) {
var b = this.curEngine;
this.switchEngineByUrl(a);
b && b != this.curEngine && b.stop();
this.curEngine && this.curEngine.setUrl.apply(this.curEngine, arguments)
},
getUrl: function() {
return this.curEngine.getUrl.apply(this.curEngine, arguments)
},play: function(a) {
if ("undefined" == typeof a) {
if (this.curEngine)
return this.curEngine.play.apply(this.curEngine, arguments)
} else
return this.setCurrentPosition(a)
},pause: function() {
if (this.curEngine)
return this.curEngine.pause.apply(this.curEngine, arguments)
},stop: function() {
if (this.curEngine)
return this.curEngine.stop.apply(this.curEngine, arguments)
},setMute: function(a) {
var b = arguments;
T.array.each(this.engineList, function(a) {
a.setMute.apply(a,
b)
})
},getMute: function() {
return this.curEngine ? this.curEngine.getMute.apply(this.curEngine, arguments) : !1
},setVolume: function(a) {
var b = arguments;
T.array.each(this.engineList, function(a) {
a.setVolume.apply(a, b)
})
},getVolume: function() {
return this.curEngine ? this.curEngine.getVolume.apply(this.curEngine, arguments) : 0
},setCurrentPosition: function(a) {
if (this.curEngine)
return this.curEngine.setCurrentPosition.apply(this.curEngine, arguments)
},getCurrentPosition: function() {
return this.curEngine ? this.curEngine.getCurrentPosition.apply(this.curEngine,
arguments) : 0
},getCurrentPositionString: function() {
return mbox.convertTime(this.getCurrentPosition())
},getLoadedPercent: function() {
return this.curEngine ? this.curEngine.getLoadedPercent.apply(this.curEngine, arguments) : 0
},getLoadedBytes: function() {
if (this.curEngine)
return this.curEngine.getLoadedBytes.apply(this.curEngine, arguments)
},getTotalBytes: function() {
return this.curEngine ? this.curEngine.getTotalBytes.apply(this.curEngine, arguments) : 0
},getTotalTime: function() {
return this.curEngine ? this.curEngine.getTotalTime.apply(this.curEngine,
arguments) : 0
},getTotalTimeString: function() {
return mbox.convertTime(this.getTotalTime())
},getCurEngine: function() {
return this.curEngine
},getEngineType: function() {
return this.getCurEngine().getEngineType()
},getVersion: function() {
var a = {};
T.array.each(this.engineList, function(b) {
a[b.getEngineType()] = b.getVersion()
});
return a
},getState: function() {
return this.curEngine ? this.curEngine.getState.apply(this.curEngine, arguments) : null
},setEventListener: function(a, b) {
var c;
c = a == this.EVENTS.INITFAIL || a == this.EVENTS.INIT ?
T.fn.bind(function(a) {
b.apply(this, arguments)
}, this) : T.fn.bind(function(a) {
a.target && a.target.getEngineType() == this.curEngineType && b.apply(this, arguments)
}, this);
T.array.each(this.unInitEngineList, function(b) {
b.setEventListener(a, c)
})
},_initProgressEvent: function() {
this.progressTimer.addEventListener("timer", T.fn.bind(function() {
var a = this.getLoadedPercent();
this.curEngine.dispatchEvent(this.EVENTS.PROGRESS, {progress: a,totalBytes: this.getTotalBytes(),loadedBytes: this.getLoadedBytes(),totalTime: this.getTotalTime()});
1 == a && this.progressTimer.stop()
}, this));
this.setEventListener(this.EVENTS.STATECHANGE, T.fn.bind(function(a) {
switch (a.newState) {
case this.STATES.PREBUFFER:
case this.STATES.PLAY:
1 > this.getLoadedPercent() && this.progressTimer.start();
break;
case this.STATES.STOP:
case this.STATES.READY:
case this.STATES.END:
this.progressTimer.reset()
}
}, this));
this.setEventListener("setUrl", T.fn.bind(function() {
this.progressTimer.reset();
this.progressTimer.start()
}, this))
},_initPositionChangeEvent: function() {
this.positionTimer.addEventListener("timer",
T.fn.bind(function() {
var a = this.getCurrentPosition();
this.curEngine.dispatchEvent(this.EVENTS.POSITIONCHANGE, {position: a})
}, this));
this.setEventListener(this.EVENTS.STATECHANGE, T.fn.bind(function(a) {
switch (a.newState) {
case this.STATES.PLAY:
this.positionTimer.start();
break;
case this.STATES.STOP:
case this.STATES.PAUSE:
this.positionTimer.pause();
this.curEngine.dispatchEvent(this.EVENTS.POSITIONCHANGE, {position: this.getCurrentPosition()});
break;
case this.STATES.READY:
case this.STATES.END:
this.positionTimer.reset()
}
},
this));
this.setEventListener("setUrl", T.fn.bind(function() {
this.positionTimer.reset()
}, this))
}}), PlayEngine_Audio = mbox.lang.createClass(function() {
this.engineType = "audio";
this.contentType = {mp3: ["audio/mpeg", "audio/mp3"],mp4: ["audio/mp4", "audio/MP4A-LATM", "video/mpeg4", "audio/mpeg4-generic"],m4a: ["audio/mp4", "audio/MP4A-LATM", "video/mpeg4", "audio/mpeg4-generic"],aac: ["audio/aac", "audio/aacp"],"3gp": ["audio/3gpp", "audio/3gpp2"],ogg: ["audio/ogg", "video/ogg", "application/ogg", "audio/vorbis"],oga: ["audio/ogg",
"application/ogg", "audio/vorbis"],wma: ["audio/x-ms-wma"]};
this.supportAudio = "undefined" != typeof Audio;
this.supportMimeType = [];
this.supportAudio && (this.audio = new Audio, "function" == typeof this.audio.canPlayType && T.object.each(this.contentType, T.fn.bind(function(a, b) {
for (var c = 0; c < a.length; c++) {
var d = this.audio.canPlayType(a[c]);
if ("probably" == d || "maybe" == d) {
this.supportMimeType.push(b);
break
}
}
}, this)), this.supportMimeType.length || (this.supportAudio = !1));
this.supportVolume = T.fn.bind(function() {
if (this.supportAudio) {
this.audio.volume =
0.5;
return this.audio.volume < 1
}
return false
}, this)()
}, {superClass: PlayEngine_Interface,className: "PlayEngine_Audio"}).extend({test: function(a) {
!this.supportAudio && a && this.dispatchEvent(this.EVENTS.INITFAIL, {engineType: this.engineType});
return this.supportAudio
},init: function() {
this.lastState = this.STATES.INIT;
this.muted = this.audio.muted = !1;
this.volume = 50;
this.audio.volume = 0.5;
this.url = "";
this._definedEvents();
this.state = this.STATES.READY;
this.dispatchEvent(this.EVENTS.INIT, {engineType: this.engineType,
engine: this.audio})
},reset: function() {
this.supportAudio && (this.url = "", this.audio.pause(), this.lastState = this.state = "ready")
},setUrl: function(a) {
this.supportAudio && (this.url = a, this.audio.src = a, this.audio.load(), this._firePlayStateChange(this.STATES.PREBUFFER))
},play: function() {
if (this.supportAudio && "ready" != this.state)
if (T.platform.isAndroid && T.browser.isWebkit && 3 > this.audio.readyState) {
var a = T.fn.bind(function() {
this.audio.play();
this.audio.removeEventListener("canplay", a, !1)
}, this);
this.audio.addEventListener("canplay",
a, !1)
} else
this.audio.play()
},pause: function() {
this.supportAudio && (this.state != this.STATES.STOP && this.state != this.STATES.READY && this.state != this.STATES.END) && (this.audio.pause(), this._firePlayStateChange(this.STATES.PAUSE))
},stop: function() {
this.supportAudio && this.state != this.STATES.READY && (0 != this.audio.currentTime && (this.audio.currentTime = 0), this.audio.pause(), this._firePlayStateChange(this.STATES.STOP))
},setMute: function(a) {
this.supportAudio && (this.audio.muted = this.mute = a)
},setVolume: function(a) {
this.supportAudio &&
(a = T.lang.isNumber(a) ? a : 50, this.volume = a = Math.max(Math.min(a, 100), 0), this.audio.volume = a / 100)
},setCurrentPosition: function(a) {
if (this.supportAudio)
if (T.platform.isAndroid && 3 > this.audio.readyState) {
var b = T.fn.bind(function() {
this.audio.currentTime = a / 1E3;
this.audio.play();
this.audio.removeEventListener("canplay", b, !1)
}, this);
this.audio.addEventListener("canplay", b, !1)
} else
this.audio.currentTime = a / 1E3, this.audio.play()
},getCurrentPosition: function() {
return !this.supportAudio ? 0 : Math.round(1E3 * this.audio.currentTime)
},
getLoadedPercent: function() {
try {
var a = this.audio.buffered.end(0), b = this.audio.duration, b = isNaN(b) ? 0 : b;
return Math.round(100 * (a / b)) / 100
} catch (c) {
return 0
}
},getTotalTime: function() {
if (!this.supportAudio)
return 0;
var a = this.audio.duration, a = isNaN(a) ? 0 : a;
return Math.round(1E3 * a)
},getState: function() {
return this.state
},_firePlayStateChange: function(a) {
this.state != a && (this.lastState = this.state, this.state = a, this.dispatchEvent(this.EVENTS.STATECHANGE, {newState: a,oldState: this.lastState,engineType: this.engineType}))
},
_definedEvents: function() {
this.audio.addEventListener("error", T.fn.bind(function() {
this._firePlayStateChange(this.STATES.ERROR);
this.dispatchEvent(this.EVENTS.ERROR, {engineType: this.engineType})
}, this), !1);
this.audio.addEventListener("ended", T.fn.bind(function() {
this._firePlayStateChange(this.STATES.END)
}, this), !1);
this.audio.addEventListener("playing", T.fn.bind(function() {
this._firePlayStateChange(this.STATES.PLAY)
}, this), !1);
this.audio.addEventListener("pause", T.fn.bind(function() {
this.getState() ==
this.STATES.PLAY && this._firePlayStateChange(this.getCurrentPosition() ? this.STATES.PAUSE : this.STATES.STOP)
}, this), !1);
this.audio.addEventListener("waiting", T.fn.bind(function() {
this._firePlayStateChange(this.getCurrentPosition() ? this.STATES.BUFFERING : this.STATES.PREBUFFER)
}, this), !1)
}}), PlayEngine_FMP_MP3 = mbox.lang.createClass(function(a) {
a = a || {};
this.supportMimeType = ["mp3"];
this.engineType = "fmp_mp3";
this.swfPath = "fmp_mp3.swf";
this.flashVersionRequire = a.flashVersionRequire || "9.0.0";
this.versionErrorMessage =
a.versionErrorMessage || "";
this.stateCode = {"-2": this.STATES.INIT,"-1": this.STATES.READY,"0": this.STATES.STOP,1: this.STATES.PLAY,2: this.STATES.PAUSE,3: this.STATES.END,4: this.STATES.BUFFERING,5: this.STATES.PREBUFFER,6: this.STATES.ERROR};
this.flashLoaded = !1;
this.flashReady = new mbox.Fuze
}, {superClass: PlayEngine_Interface,className: "PlayEngine_FMP_MP3"}).extend({test: function(a) {
return this._checkPlayer(a)
},init: function(a) {
var a = a || {}, b = a.el;
this.instanceName = a.instanceName;
this.swfPath = a.swfPath || this.swfPath;
var c = this.newId();
T.lang.isString(b) && (b = T.g(b));
b || (b = T.dom.create("div"), document.body.appendChild(b));
a = T.dom.create("div");
b.appendChild(a);
if (T.browser.maxthon || T.browser.ie)
this.swfPath += "?" + c + "_" + Math.random();
T.swf.create({id: this.flashObjectId = c,width: "1px",height: "1px",ver: this.flashVersionRequire,errorMessage: this.versionErrorMessage,allowscriptaccess: "always",url: this.swfPath,bgcolor: "#ffffff",wmode: "window",scale: "noscale",vars: {_instanceName: this.instanceName + "",_buffertime: 2E3}}, a);
this.flashObject = T.swf.getMovie(this.flashObjectId)
},reset: function() {
this.stop();
this.state != this.STATES.INIT && (this.url = "", this.state = this.STATES.READY, this.stateStack = [this.STATES.READY])
},setUrl: function(a) {
this.flashReady(T.fn.bind(function() {
this.url = a;
this.flashObject.f_load(a)
}, this))
},play: function() {
this.flashReady(T.fn.bind(function() {
this.state != this.STATES.PLAY && this.flashObject.f_play()
}, this))
},pause: function() {
this.flashReady(T.fn.bind(function() {
this.state == this.STATES.PAUSE || (this.state ==
this.STATES.STOP || this.state == this.STATES.END) || this.flashObject.f_pause()
}, this))
},stop: function() {
this.flashReady(T.fn.bind(function() {
this.state != this.STATES.STOP && this.flashObject.f_stop()
}, this))
},setMute: function(a) {
this.flashReady(T.fn.bind(function() {
this.mute = a;
this.flashObject.setData("mute", a)
}, this))
},setVolume: function(a) {
this.flashReady(T.fn.bind(function() {
this.volume = a;
this.flashObject.setData("volume", a)
}, this))
},setCurrentPosition: function(a) {
this.flashReady(T.fn.bind(function() {
this.flashObject.f_play(a)
},
this))
},getCurrentPosition: function() {
return this.flashLoaded ? this.flashObject.getData("currentPosition") : 0
},getLoadedPercent: function() {
return this.flashLoaded ? this.flashObject.getData("loadedPct") : 0
},getTotalTime: function() {
return this.flashLoaded ? this.flashObject.getData("length") : 0
},getState: function(a) {
return T.lang.isNumber(a) ? this.stateCode[a] : this.state
},getVersion: function() {
return T.swf.version
},_firePlayStateChange: function(a) {
if (this.state != a) {
this.state = a;
this.stateStack.push(a);
var b =
this.stateStack.shift();
this.dispatchEvent(this.EVENTS.STATECHANGE, {newState: a,oldState: b,engineType: this.engineType})
}
},_onLoad: function() {
this.state = this.STATES.READY;
this.stateStack = [this.state];
this.dispatchEvent(this.EVENTS.INIT, {engineType: this.engineType,engine: this.flashObject});
setTimeout(T.fn.bind(function() {
this.flashReady.fire();
this.flashLoaded = !0
}, this), 0)
},_onPlayStateChange: function(a) {
this._firePlayStateChange(this.getState(a))
},_checkPlayer: function(a) {
var a = !!a, b = T.swf.version,
c = this.flashVersionRequire;
if (b) {
b = b.split(".");
c = c.split(".");
if (0 <= b[0] - c[0] && 0 <= b[1] - c[1])
return !0;
a && this.dispatchEvent(this.EVENTS.INITFAIL, {engineType: this.engineType});
return !1
}
a && this.dispatchEvent(this.EVENTS.INITFAIL, {engineType: this.engineType});
return !1
}}), PlayEngine_FMP_AAC = mbox.lang.createClass(function(a) {
a = a || {};
this.supportMimeType = ["mp4", "m4a"];
this.engineType = "fmp_aac";
this.swfPath = "fmp_aac.swf";
this.flashVersionRequire = a.flashVersionRequire || "10.0.0"
}, {superClass: PlayEngine_FMP_MP3,
className: "PlayEngine_FMP_AAC"}), PlayEngineRuleModel = mbox.lang.createClass(function(a) {
a = a || {};
this.name = a.name || "";
this.delayTime = a.delayTime;
this.timer = null;
this.playEngine = a.playEngine || null;
this.listener = a.listener || {};
this.handler = a.handler || function() {
};
this.EVENTS = {TIMER: "timer"};
this.init()
}, {className: "PlayEngineRuleModel"}).extend({init: function() {
!this.timer && null != this.delayTime && (this.timer = new mbox.Timer(this.delayTime, 1), this.addHandler(this.handler), this.timer.addEventListener(this.timer.EVENTS.TIMER,
T.fn.bind(function() {
this.dispatchEvent(this.EVENTS.TIMER, {timer: this.timer,playEngine: this.playEngine})
}, this)))
},setPlayEngine: function(a) {
this.playEngine = a
},getName: function() {
return this.name
},getListener: function() {
return this.listener
},getTimer: function() {
return this.timer
},addHandler: function(a) {
this.addEventListener(this.EVENTS.TIMER, T.fn.bind(function() {
a.apply(this, arguments)
}, this))
}}), PlayEngineRulesController = mbox.lang.createClass(function(a) {
a = a || {};
this.playEngine = a.playEngine;
this.rules =
[];
this.isBlock = !1
}, {className: "PlayEngineRulesController"}).extend({addRule: function(a) {
var b = a.getRule();
b.setPlayEngine(this.playEngine);
this.rules.push(b);
a = b.getListener();
T.object.each(a, T.fn.bind(function(a, d) {
var e = T.fn.bind(function() {
this.isBlock || a.apply(b, arguments)
}, this, b);
switch (d.toLowerCase()) {
case "playstatechange":
d = this.playEngine.EVENTS.STATECHANGE
}
this.playEngine.setEventListener(d, e)
}, this))
},getRulesCount: function() {
return this.rules.length
},getRules: function() {
return this.rules
},
reset: function(a) {
if (a)
for (var b = 0, c = this.rules.length; b < c; b++)
this.rules[b].getName() == a && this.rules[b].getTimer().reset();
else {
b = 0;
for (c = this.rules.length; b < c; b++)
this.rules[b].getTimer().reset()
}
},blockListen: function() {
this.isBlock = !0
},resetListen: function() {
this.isBlock = !1
},getBlockState: function() {
return this.isBlock
}}), PlayEngineRules = PlayEngineRules || {};
PlayEngineRules.Prebuffer = mbox.lang.createClass(function(a) {
a = a || {};
a.time = a.time || 10;
a.handler = a.handler || function() {
};
this.rule = new PlayEngineRuleModel({name: "preBuffer",delayTime: 1E3 * a.time,listener: {setUrl: function(a) {
a.getTimer().reset()
},playStateChange: function(a, c) {
c.newState == c.target.STATES.PREBUFFER ? a.getTimer().start() : a.getTimer().reset()
}}});
this.rule.addHandler(a.handler)
}, {className: "PlayEngineRules.Prebuffer"}).extend({getRule: function() {
return this.rule
}});
PlayEngineRules.FirstBuffer = mbox.lang.createClass(function(a) {
a = a || {};
a.time = a.time || 10;
a.handler = a.handler || function() {
};
this.rule = new PlayEngineRuleModel({name: "firstBuffer",delayTime: 1E3 * a.time,listener: {setUrl: function(a) {
a.getTimer().reset()
},playStateChange: function(a, c) {
var d = c.oldState, e = c.target.STATES;
c.newState == e.BUFFERING ? (d == e.READY || d == e.PREBUFFER) && a.getTimer().start() : a.getTimer().reset()
}}});
this.rule.addHandler(a.handler)
}, {className: "PlayEngineRules.FirstBuffer"}).extend({getRule: function() {
return this.rule
}});
PlayEngineRules.Buffer = mbox.lang.createClass(function(a) {
a = a || {};
a.time = a.time || 20;
a.handler = a.handler || function() {
};
this.rule = new PlayEngineRuleModel({name: "buffer",delayTime: 1E3 * a.time,listener: {setUrl: function(a) {
a.startRecord = !0;
a.getTimer().reset()
},playStateChange: function(a, c) {
var d = c.newState, e = c.oldState, f = c.target.STATES;
if (a.startRecord)
if (d == f.BUFFERING)
e == f.PLAY && a.getTimer().start();
else if (d == f.PLAY || d == f.PAUSE)
e == f.BUFFERING && a.getTimer().pause();
else if (d == f.END || d == f.READY)
a.getTimer().reset(),
a.startRecord = !1
}},handler: function(a) {
a.target.startRecord = !1
}});
this.rule.addHandler(a.handler)
}, {className: "PlayEngineRules.Buffer"}).extend({getRule: function() {
return this.rule
}});
PlayEngineRules.Exception = mbox.lang.createClass(function(a) {
a = a || {};
a.time = a.time || 1;
a.handler = a.handler || function() {
};
this.rule = new PlayEngineRuleModel({name: "exception",delayTime: 1E3 * a.time,listener: {setUrl: function(a) {
a.startRecord = !0;
a.getTimer().reset()
},playStateChange: function(a, c) {
var d = c.newState, e = c.oldState, f = c.target.STATES;
a.startRecord && (d == f.READY ? (e == f.PLAY || e == f.PREBUFFER) && a.getTimer().start() : a.getTimer().reset())
}},handler: function(a) {
a.target.startRecord = !1
}});
this.rule.addHandler(a.handler)
},
{className: "PlayEngineRules.Exception"}).extend({getRule: function() {
return this.rule
}});
PlayEngineRules.Play60s = mbox.lang.createClass(function(a) {
a = a || {};
a.time = a.time || 60;
a.handler = a.handler || function() {
};
this.rule = new PlayEngineRuleModel({name: "savelink",delayTime: 1E3 * a.time,listener: {setUrl: function(a) {
a.startRecord = !0;
a.getTimer().reset()
},playStateChange: function(a, c) {
var d = c.newState, e = c.oldState, f = c.target.STATES;
a.startRecord && (d == f.PLAY ? a.getTimer().start() : d == f.PAUSE || d == f.BUFFERING ? e == f.PLAY && a.getTimer().pause() : a.getTimer().reset())
}},handler: function(a) {
a.target.startRecord =
!1
}});
this.rule.addHandler(a.handler)
}, {className: "PlayEngineRules.Play60s"}).extend({getRule: function() {
return this.rule
}});
PlayEngineRules.Play100ms = mbox.lang.createClass(function(a) {
a = a || {};
a.time = a.time || 0.1;
a.handler = a.handler || function() {
};
this.rule = new PlayEngineRuleModel({name: "play100ms",delayTime: 1E3 * a.time,listener: {setUrl: function(a) {
a.startRecord = !0;
a.getTimer().reset()
},playStateChange: function(a, c) {
var d = c.newState, e = c.target.STATES;
a.startRecord && (d == e.PLAY ? a.getTimer().start() : a.getTimer().reset())
}},handler: function(a) {
a.target.startRecord = !1
}});
this.rule.addHandler(a.handler)
}, {className: "PlayEngineRules.Play100ms"}).extend({getRule: function() {
return this.rule
}});
bradio.namespace("bradio.lang.array");
Array.prototype.getUniq = function() {
for (var a = {}, b = [], c = 0, d = this.length; c < d; ++c)
a.hasOwnProperty(this[c]) || (b.push(this[c]), a[this[c]] = 1);
return b
};
bradio.namespace("bradio.lang.string");
bradio.lang.string.ucFirst = function(a) {
return a.charAt(0).toUpperCase() + a.slice(1)
};
bradio.lang.string.ellipsis = function(a, b, c, d, e, f) {
b.text(a);
for (var g = a, i; b.outerWidth() > c; )
"center" === f ? (i = Math.floor(bradio.lang.string.getByteLength(g) / 2), g = g.substring(0, i) + g.substring(i + 1)) : g = bradio.lang.string.subByte(g, bradio.lang.string.getByteLength(g) - 1), b.text(g);
bradio.lang.string.getByteLength(g) < bradio.lang.string.getByteLength(a) && ("center" === f ? (a = Math.floor(bradio.lang.string.getByteLength(g) / 2), b.text(g.substring(0, a) + "..." + g.substring(a))) : b.text(b.text() + "..."));
d && b.text(d + b.text());
e && b.text(b.text() + e)
};
bradio.lang.string.encodeHTML = function(a) {
return String(a).replace(/&/g, "&amp;").replace(/"/g, "&quot;").replace(/'/g, "&#39;").replace(/</g, "&lt;").replace(/>/g, "&gt;")
};
bradio.lang.string.format = function(a, b) {
var a = String(a), c = Array.prototype.slice.call(arguments, 1), d = Object.prototype.toString;
return c.length ? (c = 1 == c.length ? null !== b && /\[object Array\]|\[object Object\]/.test(d.call(b)) ? b : c : c, a.replace(/#\{(.+?)\}/g, function(a, b) {
var g = c[b];
"[object Function]" == d.call(g) && (g = g(b));
return "undefined" == typeof g ? "" : g
})) : a
};
bradio.lang.string.getByteLength = function(a) {
return String(a).replace(/[^\x00-\xff]/g, "ci").length
};
bradio.lang.string.subByte = function(a, b, c) {
a = String(a);
c = c || "";
if (0 > b || bradio.lang.string.getByteLength(a) <= b)
return a + c;
a = a.substr(0, b).replace(/([^\x00-\xff])/g, "$1 ").substr(0, b).replace(/[^\x00-\xff]$/, "").replace(/([^\x00-\xff]) /g, "$1");
return a + c
};
bradio.lang.string.convertTime = function(a) {
var b, a = Math.round(a / 1E3);
b = Math.floor(a / 60);
a %= 60;
return T.number.pad(b, 2) + ":" + T.number.pad(a, 2)
};
bradio.namespace("bradio.lang");
bradio.lang.Class = function() {
var a = {extend: function(b) {
$.extend(a, b)
}};
return a
};
bradio.namespace("bradio.lang");
bradio.lang.Enumerable = function(a) {
var b = bradio.lang.Class(), c = bradio.lang.string.ucFirst, d = {raw: function() {
return a
},loadRaw: function(b, c) {
var d;
if (c) {
d = {};
for (var i in c)
d[c[i]] = a[c[i]]
}
a = $.extend(!0, a, b);
d && (a = $.extend(!0, a, d))
},clone: function() {
return $.extend(!0, {}, b)
}};
for (p in a)
d["set" + c(p)] = function(b) {
return function(c) {
"undefined" != a[b] && a[b] != c && (a[b] = c)
}
}(p), d["get" + c(p)] = function(b) {
return function() {
return a[b]
}
}(p);
b.extend(d);
return b
};
bradio.namespace("bradio.lang");
bradio.lang.Iterable = function() {
var a = bradio.lang.Class(), b = 0, c = [];
a.extend({getData: function() {
return c
},load: function(a) {
c = a
},getLength: function() {
return c.length
},getIndex: function() {
return b
},setIndex: function(a) {
b = a
},next: function() {
b = b + 1 > c.length - 1 ? c.length - 1 : b + 1;
return c[b]
},prev: function() {
b = 0 > b - 1 ? 0 : b + 1;
return c[b]
},get: function(a) {
return c[a]
},set: function(a, b) {
c[a] = b
},push: function(a) {
return c.push(a)
},unshift: function(a) {
return c.unshift(a)
},pop: function() {
return c.pop()
},shift: function() {
return c.shift()
},
slice: function(a, b) {
return c.slice(a, b)
},splice: function(a, b) {
return c.splice(a, b)
},page: function(a, b) {
return c.slice(a * b, Math.min(c.length, (a + 1) * b))
},clear: function() {
c.splice(0, c.length)
},sort: function(a) {
c.sort(a)
},remove: function(a) {
a = $.inArray(a, c);
-1 != a && c.splice(a, 1)
}});
return a
};
bradio.namespace("bradio.lang");
bradio.lang.Bindable = function() {
var a = bradio.lang.Class(), b = $(a);
a.extend({bind: function(a, d) {
b.bind(a, d)
},unbind: function(a, d) {
try {
b.unbind(a, d)
} catch (e) {
}
},trigger: function(a, d) {
b.trigger(a, d)
}});
return a
};
bradio.namespace("bradio.core");
bradio.core.Constant = {Path: {LS_PATH: "http://music.baidu.com/data/music/fmlink",LRC_PATH: "",ARTIST_PATH: "http://tingapi.ting.baidu.com/v1/restserver/ting?method=baidu.ting.artist.getInfo&format=json",SUGGEST_PATH: "http://openapi.baidu.com/public/2.0/mp3/info/suggestion?format=json",LOG_PATH: "http://static.mp3.baidu.com/wd/radiostat.gif",LOG_PATH_NS: "http://nsclick.baidu.com/v.gif",DATA_BASE: "/dev/api/"},PlayStatus: {INIT: "init",READY: "ready",STOP: "stop",PLAY: "play",PAUSE: "pause",END: "end",ERROR: "error",
BUFFERING: "buffering",PREBUFFER: "pre-buffer"},Behaviour: {SONG: {PREV: "1|3|1",SKIP: "1|4|1",LOVE: "1|1|1",DELOVE: "2|1|1",HATE: "1|2|1",DEHATE: "2|2|1",COMPLETE: "1|5|1"},ARTIST: {LOVE: "1|1|2",DELOVE: "2|1|2",HATE: "1|2|2",DEHATE: "2|2|2"}},FavStatus: {LIKE: "status_like",DISLIKE: "status_dislike",NORMAL: "status_normal",NONE: "status_none"},ChannelDescriptions: [{channel: "lovesongs",content: "红心歌曲越多,私人频道越懂你~"}, {channel: "private",content: "打开就有好音乐 遇见未知的精彩"}, {channel: "public_tuijian_suibiantingting",content: "去私人频道~ 推荐歌曲更符合口味~",
onclick: function() {
FM.loadChannel("private")
}}, {channel: "public_tuijian_rege",content: "近期最热门的歌就在这里了!"}, {channel: "public_tuijian_billboard",content: "Billboard金曲全收录 最Hot欧美大流行"}, {channel: "public_tuijian_ktv",content: "网罗百听不厌的K歌金曲"}, {channel: "public_tuijian_wangluo",content: "你不能错过的 最红网络流行曲!"}, {channel: "public_tuijian_chengmingqu",content: "还记得你与他们/她们相遇的第一首歌吗?"}, {channel: "public_tuijian_yingshi",content: "熟悉的旋律 唤醒散落在影视剧里的回忆"}, {channel: "public_tuijian_kaiche",content: "那些适合开车时听的歌 "}, {channel: "public_shiguang_jingdianlaoge",
content: "让我们聆听经典,回味青春。"}, {channel: "public_shiguang_70hou",content: "往日的流行 今日的经典 那是属于我们的美好年代"}, {channel: "public_shiguang_80hou",content: "一起听 那些陪伴80后成长的歌~"}, {channel: "public_shiguang_90hou",content: "“年轻”没有定义,心与音乐共鸣!"}, {channel: "public_shiguang_xinge",content: "第一时间收听潮流新曲 让耳朵新鲜每一天!"}, {channel: "public_shiguang_erge",content: "陪宝贝唱一首童真的歌"}, {channel: "public_shiguang_lvxing",content: "音乐是旅途里的回忆 也是梦想中的目的地"}, {channel: "public_shiguang_yedian",content: "跟着节奏一起舞动,点燃你的激情!"}, {channel: "public_fengge_minyao",content: "放慢脚步 任时光流淌成一首温暖的歌"},
{channel: "public_fengge_liuxing",content: "全球流行音乐全搜罗"}, {channel: "public_fengge_dj",content: "国内外嗨爆DJ舞曲大集结!"}, {channel: "public_fengge_qingyinyue",content: "抛开尘世的喧嚣 直抵心灵的避风港"}, {channel: "public_fengge_xiaoqingxin",content: "只属于你的清新小世界"}, {channel: "public_fengge_zhongguofeng",content: "在悠扬的旋律中感受流行音乐里的东方味道"}, {channel: "public_fengge_yaogun",content: "就是爱听摇滚乐!"}, {channel: "public_fengge_dianyingyuansheng",content: "经典的故事 流转的旋律"}, {channel: "public_xinqing_huankuai",content: "快乐的时候就要听快乐的歌"}, {channel: "public_xinqing_jimo",
content: "一个人的时光 我只想静静听一首歌"}, {channel: "public_xinqing_shanggan",content: "心情不好的时候 情感共鸣是最好的安慰"}, {channel: "public_xinqing_tianmi",content: "绽放在心里的小甜蜜 忍不住地嘴角上扬"}, {channel: "public_xinqing_qingge",content: "总有一首歌 陪你走过爱情旅程"}, {channel: "public_xinqing_shuhuan",content: "舒缓的节奏 安静地陪伴"}, {channel: "public_xinqing_yonglanwuhou",content: "用音乐 冲泡一杯清香惬意的下午茶"}, {channel: "public_xinqing_qingsongjiari",content: "抛开烦恼,尽享假日的轻松自在!"}, {channel: "public_yuzhong_huayu",content: "经典之外 让好音乐不再错过"}, {channel: "public_yuzhong_oumei",content: "那些你听过的、没听过的、最动听的英文歌"},
{channel: "public_yuzhong_riyu",content: "网罗最In流行曲 聆听最正日本范儿"}, {channel: "public_yuzhong_hanyu",content: "K-pop正流行!"}, {channel: "public_yuzhong_yueyu",content: "聆听粤语里的百转千回"}, {channel: "public_tuijian_winter",content: "这个冬天,你需要一首暖心的歌"}],Etc: {PRIVATE_CHANNEL_ID: "private",LOVE_CHANNEL_ID: "lovesongs",DEFAULT_CHANNEL_ID: "public_yuzhong_huayu"}};
bradio.namespace("bradio.core");
bradio.core.Event = {Base: {DATA_LOADED: "event_core_data_loaded",DATA_FAILED: "event_core_data_failed"},View: {PLAY: "event_view_play",PAUSE: "event_view_pause",SKIP: "event_view_skip",PREV: "event_view_prev",VOLUME: "event_view_volume",VOLUME_SHOW: "event_view_volume_show",MUTE: "event_view_mute",UNMUTE: "event_view_unmute",DOWNLOAD: "event_view_download",COVER_CLICK: "event_view_cover_click",ARTIST_LOVE: "event_view_ARTIST_love",ARTIST_DELOVE: "event_view_ARTIST_delove",ARTIST_HATE: "event_view_ARTIST_hate",ARTIST_DEHATE: "event_view_ARTIST_dehate",
SONG_PLAY: "event_view_song_play",SONG_LOVE: "event_view_song_love",SONG_DELOVE: "sevent_view_song_delove",SONG_HATE: "event_view_song_hate",SONG_DEHATE: "event_view_song_dehate",FAVLIST_SONG_DELOVE: "event_view_fav_list_song_delove",FAVLIST_SONG_PLAY: "event_view_fav_list_song_play",FAVLIST_ARTIST_DELOVE: "event_view_fav_list_artist_delove",CHANNEL_SWITCH: "event_view_channel_list_channel_switch",CHANNEL_SELECTOR: "event_view_channel_list_show",PROMOTIONBAR_SHOW: "event_view_pb_show",PROMOTIONBAR_HIDE: "event_view_pb_hide",
PROMOTIONBAR_CLICK: "event_view_pb_click",USER_NAME_CLICK: "event_view_user_bar_username_click",LISTEN_COUNT_CLICK: "event_view_user_bar_listen_count_click",LOVE_COUNT_CLICK: "event_view_user_bar_love_count_click",HATE_COUNT_CLICK: "event_view_user_bar_hate_count_click",USER_CENTER_CLICK: "event_view_user_bar_usercenter_click",LOGOUT_CLICK: "event_ui_userbar_logout_click",SHARE: "event_view_sharebar_share",CHANNELBAR_TIPS_CLICK: "event_view_channelbar_tips_click",CHANNELBAR_TIPS_SHOW: "event_view_channelbar_tips_show",
CHANNELBAR_TIPS_CLOSE: "event_view_channelbar_tips_close",ARTIST_CLICK: "event_view_player_artist_click",SONG_CLICK: "event_view_player_song_click",ALBUM_CLICK: "event_view_player_album_click"},Model: {DEFAULT_CHANNEL: "event_model_default_channel",CHANNEL_LOADED: "event_model_channel_loaded",CHANNEL_SWITCHED: "event_model_channel_switched",PLAY_STATUS: "event_model_play_status",TIME_INFO: "event_model_time_info",USER_INFO: "event_model_user_info",CHANNEL_LIST: "event_model_channel_list",PLAY_LIST: "event_model_play_list",
FAV_DATA_UPDATED: "event_model_fav_data_updated",SONG_INFO: "event_model_song_info",SONG_INFO_ITEM_ERROR: "event_model_song_info_item_error",SONG_LINK: "event_model_song_link",SONG_READY: "event_model_song_ready",SONG_INFO_LOADED: "event_model_song_info_loaded",SONG_INFO_FAILED: "event_model_song_info_failed",SONG_INFO_ALL_FAILED: "event_model_song_info_all_failed",LINK_ERROR: "event_model_link_error",LRC: "event_model_lrc",LOAD_PROGRESS: "event_model_load_progress",PLAY_COMPLETE: "event_model_play_complete",
PLAY_ERROR: "event_model_play_error",LOAD_ERROR: "event_model_load_error",PLAY_ERROR_RECOVERED: "event_model_play_error_recovered",PLAYLIST_INITED: "event_model_playlist_inited",FAV_COUNT_UPDATED: "event_model_fav_count_update",FAV_ARTIST_UPDATED: "event_model_fav_artists_update",FAV_SONG_UPDATED: "event_model_fav_song_updated",LISTEN_RECORD_UPDATED: "event_model_listen_record_updated",LOVE_RECORD_UPDATED: "event_model_love_record_updated",HATE_RECORD_UPDATED: "event_model_hate_record_updated",VOLUME: "event_model_volume",
ENV_UPDATED: "event_model_env_updated"},UI: {SceneMgr: {PAGE_SWITCH: "event_ui_scene_mgr_page_switch"},GuideScene: {CLICK: "event_ui_guideScene_click"},Player: {SONG_LOVE: "event_ui_player_song_love",SONG_DELOVE: "event_ui_player_song_delove",SONG_HATE: "event_ui_player_song_hate",SONG_DEHATE: "event_ui_player_song_dehate",DOWNLOAD: "event_ui_player_song_download",COVER_CLICK: "event_ui_player_cover_click",ARTISTCHANNELDOOR_CLICK: "event_ui_player_artistChannelDoor_click",ARTIST_CLICK: "event_ui_player_artist_click",
SONG_CLICK: "event_ui_player_song_click",ALBUM_CLICK: "event_ui_player_album_click",PLAY: "event_ui_player_song_play",PAUSE: "event_ui_player_song_pause",SKIP: "event_ui_player_song_skip",PREV: "event_ui_player_song_prev",VOLUME_SHOW: "event_ui_player_volume_show",VOLUME_CHANGE: "event_ui_player_volume_change",MUTE: "event_ui_player_mute",UNMUTE: "event_ui_player_unmute"},FavList: {BACK_PLAYER: "event_ui_song_list_back_player",SONG_PLAY: "event_ui_fav_list_song_play",SONG_LOVE: "event_ui_fav_list_song_love",SONG_DELOVE: "event_ui_fav_list_song_delove",
SONG_DEHATE: "event_ui_fav_list_song_dehate",BACK_PLAYER: "event_ui_fav_list_back_player",TAB_SWITCH: "event_ui_fav_list_tab_switch"},ChannelList: {SWITCH: "event_ui_channel_list_switch"},UserBar: {USER_NAME: "event_ui_userbar_username",USER_CENTER: "event_ui_userbar_username",LISTEN_COUNT: "event_ui_userbar_listen_count",LOVE_COUNT: "event_ui_userbar_love_count",HATE_COUNT: "event_ui_userbar_hate_count",LOGOUT: "event_ui_userbar_logout"},ShareBar: {SHARE: "event_ui_sharebar_share"},ChannelBar: {SWITCH_CHANNEL: "event_ui_channelbar_switch_channel",
BACK_PLAYER: "event_ui_channel_list_back_player",TIPS_CLICK: "event_ui_channelbar_tips_click",TIPS_SHOW: "event_ui_channelbar_tips_show",TIPS_CLOSE: "event_ui_channelbar_tips_close"},ChannelBtn: {CLICK: "event_ui_channelbtn_click"},PromotionBar: {SHOW: "event_ui_promotionbar_show",HIDE: "event_ui_promotionbar_hide",CLICK: "event_ui_promotionbar_click"},Tooltip: {CLOSE: "event_ui_tooltip_close"},Slider: {UPDATE: "event_ui_slider_update"},ScrollBar: {UPDATE: "event_ui_scrollbar_update"},ColdStart: {SINGERLIST_RENDER: "event_ui_coldStart_singerList_render",
SEARCHLIST_RENDER: "event_ui_coldStart_searchList_render",SKIP: "event_ui_coldStart_skip",POST_SINGERLIST: "event_ui_coldStart_singerList_post",COMPLETE_CHANGE: "event_ui_coldStart_autoComplete_change"}},Providable: {Behaviour: {FAV_COUNT_UPDATED: "event_behaviour_count_update",FAV_SONG_UPDATED: "event_behaviour_song_updated",FAV_DATA_UPDATED: "event_behaviour_data_updated",LISTEN_RECORD_UPDATED: "event_behaviour_listen_record_updated",LOVE_RECORD_UPDATED: "event_behaviour_love_record_updated",HATE_RECORD_UPDATED: "event_behaviour_hate_record_updated"},
Song: {SONG_INFO: "event_song_song_info",SONG_INFO_ERROR: "event_song_song_info_error",ALL_FAILED: "event_song_song_all_failed"},Artist: {ARTIST_INFO: "event_artist_artist_info"},Coldstart: {SINGER_LIST: "event_providable_coldstart_singer_list",SUBMITTED: "event_providable_coldstart_submitted"}},Playlist: {INITED: "event_playlist_init",SONG: "event_playlist_song"},PlayStrategy: {LOAD_CHANNEL: "event_play_strategy_load_channel"},AudioKernel: {INITED: "event_audiokernel_inited",INIT_FAILED: "event_audiokernel_init_failed",
PLAY_STATUS: "event_audiokernel_play_status",PLAY_PROGRESS: "event_audiokernel_play_progress",LOAD_PROGRESS: "event_audiokernel_load_progress",ERROR: "event_audiokernel_error"},Log: {FIRST_SONG: "event_log_firstsong",SONG_LOVE: "event_log_songlove",SONG_DELOVE: "event_log_songcancellove",SONG_HATE: "event_log_songhate",SONG_DEHATE: "event_log_songdehate",SONG_SKIP: "event_log_songpass",SONG_PREV: "event_log_btnPrevClick",SONG_INFO_ITEM_ERROR: "event_log_songinfoitemerror",SONG_INFO_LOADED: "event_log_songinfoloaded",
SONG_INFO_FAILED: "event_log_songinfofailed",SONG_INFO_ALL_FAILED: "event_log_songinfoallfailed",PLAY_TIMEOUT: "event_log_playtimeout",PLAY_SONG: "event_log_songplay",PLAY_END: "event_log_playend",PLAY_COMPLETE: "event_log_songcomplete",PLAY_RESULT: "event_log_playresult",PLAY_ERROR: "event_log_playerr",PLAY_NOLINK: "event_log_nolink",PLAY_60S: "event_log_playcomplete",PLAY_100MS: "event_log_playsong100ms",PLAY_LOAD_ERROR: "event_log_loadfileerr",BTN_LOVE: "event_log_btn_love",BTN_SOUND_ON: "event_log_btnSoundOnClick",
BTN_SOUND_OFF: "event_log_btnSoundOffClick",BTN_COPY_LYRICS: "event_log_btnCopyLyrics",BTN_SHOW_VOLUNE: "event_log_btnShowVolume",BTN_PLAY_PAUSE: "event_log_btnPlayPause",BTN_DOWNLOAD: "event_log_btnDownload",CHANNEL_SELECTOR: "event_log_channel_selector",CHANNEL_DEFAULT: "event_log_defaultchannel",CHANEL_CHANGE: "event_log_channelchange",CHANNEL_DURATION: "event_log_channelduration",COVER_CLICK: "event_log_coverclick",CHANGE_VOLUNE: "event_log_changeVolume",SHARE: "event_log_share",PROMOTIONBAR_SHOW: "event_log_promotionbar_show",
PROMOTIONBAR_HIDE: "event_log_promotionbar_hide",PROMOTIONBAR_CLICK: "event_log_promotionbar_click",CHANNELBAR_TIPS_CLICK: "event_log_channel_bar_tips_click",CHANNELBAR_TIPS_SHOW: "event_log_channel_bar_tips_show",CHANNELBAR_TIPS_CLOSE: "event_log_channel_bar_tips_close"},NSLog: {FIRST_SONG: "event_nslog_firstsong",SONG_LOVE: "event_nslog_click_singleFavor",SONG_DELOVE: "event_nslog_click_cancelFavor",SONG_HATE: "event_nslog_click_singleDel",SONG_DEHATE: "event_nslog_click_cancelDel",SONG_SKIP: "event_nslog_click_passsong",
SONG_PREV: "event_nslog_click_prevsong",SONG_INFO_LOADED: "event_nslog_load",SONG_INFO_FAILED: "event_nslog_linkfail",PLAY_START: "event_nslog_playstart",PLAY_END: "event_nslog_playend",PLAY_COMPLETE: "event_nslog_playcomplete",PLAY_100MS: "event_nslog_playsong100ms",PLAY_ERROR: "event_nslog_playerr",PLAY_60S: "event_nslog_60play",PLAY_LOAD_ERROR: "event_nslog_loadfileerr",CHANNEL_SELECTOR: "event_nslog_click_channel",CHANEL_CHANGE: "event_nslog_click_changechannel",BTN_PLAY_PAUSE: "event_nslog_click_playpausebtn",
BTN_DOWNLOAD: "event_nslog_click_download",COVER_CLICK: "event_nslog_click_cover",SHARE: "event_nslog_click_share",CLICK: "event_nslog_click"}};
bradio.namespace("bradio.core");
bradio.core.Model = function() {
var a = bradio.lang.Bindable(), b = bradio.core.Event, c = bradio.core.Event.Model, d = b.Providable, e = bradio.core.Constant, f = bradio.core.Constant.Behaviour, g = [], i = bradio.data.enumerable.User(), j = bradio.core.AudioKernel(), n = bradio.data.providable.Cookie(), l = bradio.data.providable.Behaviour(), m = bradio.data.providable.Channel(), k = bradio.data.providable.ChannelList(), q = bradio.data.providable.Song(), u = bradio.data.providable.Lyrics(), s = bradio.lang.Iterable(), o = bradio.data.iterable.Playlist();
bradio.data.enumerable.Song();
var r = bradio.data.enumerable.Channel(), v = "", x = {}, y = !1, z = !0, w = !1, A = {user: i,operation: "",currentChannel: null,kv: x}, E = "lovesongs public_fengge_qingyinyue public_tuijian_billboard public_yuzhong_oumei public_yuzhong_riyu public_yuzhong_hanyu public_yuzhong_yueyu public_shiguang_erge".split(" "), t = {}, D = function() {
return j.getVolume()
}, B = function() {
y = !1;
o.next()
}, C = function() {
return o.getCurrentSong() || bradio.data.enumerable.Song()
}, I = function(a) {
return o.getPrevSong(a)
}, F =
function(b, d) {
A[b] = d;
a.trigger(c.ENV_UPDATED, {field: b})
};
a.extend({getStatus: function() {
return j.getStatus()
},getSongBytesTotal: function() {
return j.getBytesTotal()
},setCurrentPosition: function(a) {
j.setCurrentPosition(a)
},getCurrentPosition: function() {
return j.getCurrentPosition()
},getCurrentPositionString: function() {
return "-" + bradio.lang.string.convertTime(C().getDuration() - j.getCurrentPosition())
},getTotalTime: function() {
return j.getTotalTime()
},getTotalTimeString: function() {
return j.getTotalTimeString()
},
getLoadedPercent: function() {
return j.getLoadedPercent()
},mute: function() {
return j.setMute(!0)
},unmute: function() {
return j.setMute(!1)
},getMute: function() {
return j.getMute()
},setVolume: function(b) {
if (b != D())
return a.trigger(c.VOLUME, {volume: b}), j.setVolume(b)
},getVolume: D,getDefaultViewPath: function() {
return n.getDefaultViewPath()
},getViewPath: function() {
return n.getViewPath()
},getUserInfo: function() {
return i
},setChannelList: function(a) {
s.load(a)
},getChannelList: function() {
return s
},getSongList: function() {
return l.favSongList()
},
play: function() {
j.play()
},pause: function() {
j.pause()
},stop: function() {
j.stop()
},setAudioUrl: function(a) {
j.setUrl(a)
},getAudioUrl: function() {
return j.getUrl()
},getBehaviourPrvdr: function() {
return l
},getChannelListPrvdr: function() {
return k
},getCurrentSong: C,getPrevSong: I,next: B,prev: function() {
F("operation", "prev");
y = !0;
l.log(f.SONG.PREV, C(), r);
o.prev()
},skip: function() {
F("operation", "skip");
y = !1;
l.log(f.SONG.SKIP, C(), r);
o.skip()
},queueSong: function(a) {
o.queue(a)
},loveSong: function(b) {
F("operation",
"love");
l.log(f.SONG.LOVE, b, r);
a.trigger(c.SONG_INFO, {status: "update",currentSong: C(),prevSong: y ? bradio.data.enumerable.Song() : I()})
},deloveSong: function(b) {
F("operation", "delove");
l.log(f.SONG.DELOVE, b, r);
a.trigger(c.SONG_INFO, {status: "update",currentSong: C(),prevSong: y ? bradio.data.enumerable.Song() : I()})
},hateSong: function(b) {
F("operation", "hate");
l.log(f.SONG.HATE, b, r);
a.trigger(c.SONG_INFO, {status: "update",currentSong: C(),prevSong: y ? bradio.data.enumerable.Song() : I()});
b.toKeyString() == C().toKeyString() &&
(o.hate(b), o.remove(b))
},dehateSong: function(b) {
F("operation", "dehate");
l.log(f.SONG.DEHATE, b, r);
a.trigger(c.SONG_INFO, {status: "update",currentSong: C(),prevSong: y ? bradio.data.enumerable.Song() : I()})
},complete: function() {
l.log(f.SONG.COMPLETE, C(), r);
o.complete()
},error: function() {
y = !1;
o.error()
},setCurrentChannel: function(b) {
if (r.getId() != b.getId() || r.getName() != b.getName())
"" != r.getName() && (z = !1), r = b, F("currentChannel", b), x.channelTimestamp = (new Date).getTime(), o.setAdable(-1 == $.inArray(r.getId(),
E) && !/artist|tag/.test(r.getId())), a.trigger(c.CHANNEL_SWITCHED)
},getCurrentChannel: function() {
return r
},getChannelList: function() {
return s
},loadChannel: function(a, b) {
x.firstChannelLoaded || (x.firstChannelLoaded = !0, x.user_source = n.getShareSource(), "" != n.getDefaultSongId() && (b = +n.getDefaultSongId()));
m.load(a, b)
},loadPlayList: function(a, b) {
o.load(a, b);
q.load(a.slice(0, 30))
},getKV: function() {
return x
},getEnvObj: function() {
return A
},getEnv: function(a) {
a = a ? a : C() ? C() : bradio.data.enumerable.Song();
t.song_id =
a.getId();
t.song_title = a.getName();
t.song_version = a.getVersion();
t.singer_id = a.getPlainArtistIds();
t.singer_name = a.getPlainArtists();
t.album_id = a.getAlbumId();
t.album_name = a.getAlbum();
t.copyType = a.getCopyType();
t.format = a.getFormat();
t.rate = a.getRate();
t.relateStatus = a.getRelateStatus();
t.resourceType = a.getResourceType();
t.songSize = j.getBytesTotal();
t.loadSize = j.getBytesLoaded();
t.title = a.toTitleString();
t.channel = r.getId();
t.link = j.getUrl() || "";
t.position = j.getCurrentPosition();
t.isAd = a.getIsAd() +
"";
t.songPlayedCount = o.getSongPlayedCount();
t.channelduration = ((new Date).getTime() - x.channelTimestamp) / 1E3;
t.bufferCount = j.getBufferCount();
t.bufferLength = j.getBufferLength();
t.playStatus = j.getStatus();
t.bytesTotal = j.getBytesTotal();
t.bytesLoaded = j.getBytesLoaded();
t.startTimestamp = j.getStartTimestamp();
t.connectTimestamp = j.getConnectTimestamp();
t.fromstart = j.getTimeFromStart();
t.start2play = j.getStart2Play();
t.user = i.getUserName() || "";
t.duration = j.getTotalTime();
t.durationRaw = a.getDuration();
t.playengine =
j.getCurEngine();
t.lrc = a.getLrcLink();
t.cover = a.getCover();
t.user_source = x.user_source || "";
t.referrer = document.referrer;
t.method_commend = a.getRecommendMethod();
t.result = 100 < j.getCurrentPosition() ? "success" : "fail";
t.source = "pcweb";
return t
},getNextAvailLink: function() {
var a = "";
g.length && (a = g.splice(0, 1)[0], a += (-1 != a.indexOf("?") ? "&" : "?") + "_=" + +new Date);
return a
},getPendingLink: function() {
return v
},setPendingLink: function(a) {
v = a
},getCurrentLink: function() {
return j.getUrl()
},loadSongLink: function(a) {
j.setUrl(a)
},
logChannelHistory: function(a) {
n.setDefaultChannelId(a.getId())
},setLoginInfo: function(b) {
var d = i.getLogined();
i.setUserId(+b.user_id);
i.setUserName(b.user_name);
i.setLogined("" != i.getUserName());
l.setUserInfo(i);
!d && i.getLogined && l.refresh(!0);
l.updateFavCount();
a.trigger(c.USER_INFO)
},isLogined: function() {
return i.getLogined()
}});
var G = b.Base, L = b.Providable.Behaviour, M = b.Playlist, b = b.AudioKernel;
l.bind(G.DATA_LOADED, function(b, d) {
var e = $.map(o.getAllHistory().slice(-10), function(a) {
return a.getId()
}),
f = $.grep(d.rawData, function(a) {
return -1 == $.inArray(a.id, e)
});
a.trigger(c.CHANNEL_LOADED, {id: d.id,name: d.name,rawData: f,force: !1})
});
l.bind(L.FAV_SONG_UPDATED, function() {
a.trigger(c.FAV_SONG_UPDATED)
});
l.bind(L.FAV_COUNT_UPDATED, function(b, d) {
i.setUserId(+d.user_id);
i.setUserName(d.user_name);
i.setLogined("" != i.getUserName());
F("userInfo", i);
a.trigger(c.USER_INFO);
a.trigger(c.FAV_COUNT_UPDATED);
l.setUserInfo(i);
if (!w) {
w = !0;
var e = n.getDefaultChannelId();
"public_tuijian_suibiantingting" == e && (e = s.get(Math.floor(Math.random() *
s.getLength() - 3) + 3).getId(), i.getLogined() && (e = "private"));
"" != n.getShareSource() && i.getLogined() && (e = "private");
a.trigger(c.DEFAULT_CHANNEL, {id: e})
}
});
l.bind(L.LISTEN_RECORD_UPDATED, function(b, d) {
a.trigger(c.LISTEN_RECORD_UPDATED, d)
});
l.bind(L.LOVE_RECORD_UPDATED, function(b, d) {
a.trigger(c.LOVE_RECORD_UPDATED, d)
});
l.bind(L.HATE_RECORD_UPDATED, function(b, d) {
a.trigger(c.HATE_RECORD_UPDATED, d)
});
m.bind(G.DATA_LOADED, function(b, d) {
a.trigger(c.CHANNEL_LOADED, {id: d.id,name: d.name,rawData: d.rawData,force: !0})
});
m.bind(G.DATA_FAILED, function() {
});
k.bind(G.DATA_LOADED, function(b, d) {
for (var e, f, g = 0, i = d.channel_list.length; g < i; g++)
f = d.channel_list[g], e = bradio.data.enumerable.Channel(), e.setName(f.channel_name), e.setId(f.channel_id), e.setCateName(f.cate), e.setCateId(f.cate_id), e.setPos(f.channel_order + 0), s.push(e);
e = bradio.data.enumerable.Channel();
e.setName("私人频道");
e.setId("private");
e.setCateName("private");
e.setCateId("private");
e.setPos(0);
s.push(e);
e = bradio.data.enumerable.Channel();
e.setName("红心频道");
e.setId("lovesongs");
e.setCateName("love");
e.setCateId("love");
e.setPos(1);
s.push(e);
s.sort(function(a, b) {
return a.getPos() == b.getPos() ? 0 : a.getPos() > b.getPos() ? 1 : -1
});
a.trigger(c.CHANNEL_LIST)
});
k.bind(G.DATA_FAILED, function() {
});
q.bind(G.DATA_LOADED, function(b, d) {
a.trigger(c.SONG_INFO_LOADED, d)
});
q.bind(G.DATA_FAILED, function(b, d) {
a.trigger(c.SONG_INFO_FAILED, d);
o.stage()
});
q.bind(d.Song.ALL_FAILED, function(b, d) {
a.trigger(c.SONG_INFO_ALL_FAILED, d)
});
q.bind(d.Song.SONG_INFO, function(a, b) {
2 < b.song.getResourceType() && r.getId() !=
e.Etc.LOVE_CHANNEL_ID || o.updateSong(b.song)
});
q.bind(d.Song.SONG_INFO_ERROR, function(b, d) {
a.trigger(c.SONG_INFO_ITEM_ERROR, d)
});
u.bind(G.DATA_LOADED, function(b, d) {
d.song.getId() == C().getId() && a.trigger(c.LRC, {data: d.data})
});
o.bind(M.SONG, function(b, d) {
g = [];
C().getHated() ? 1 < o.getLength() && B() : (a.trigger(c.SONG_INFO, {status: d.status,auto: d.auto,currentSong: C(),prevSong: y || !z ? bradio.data.enumerable.Song() : I()}), "update" == d.status && F("operation", "next"), u.load(C()), z = !0, g.push(C().getLink()), a.trigger(c.SONG_READY),
0 < o.getRawLength() - o.getLength() && 5 > o.getLength() - o.getIndex() && q.load(o.getRawData().slice(o.getLength(), Math.min(o.getRawLength(), o.getLength() + 10))))
});
o.bind(M.INITED, function() {
a.trigger(c.PLAYLIST_INITED)
});
j.bind(b.INITED, function() {
});
j.bind(b.INIT_FAILED, function() {
});
j.bind(b.PLAY_STATUS, function(b, d) {
a.trigger(c.PLAY_STATUS, d)
});
j.bind(b.PLAY_PROGRESS, function(b, d) {
a.trigger(c.TIME_INFO, d)
});
j.bind(b.LOAD_PROGRESS, function() {
});
j.bind(b.ERROR, function() {
a.trigger(c.PLAY_ERROR)
});
return a
};
bradio.namespace("bradio.core");
bradio.core.View = function(a) {
var b = bradio.lang.Bindable(), c = bradio.core.Event, d = c.Model, e = c.View, c = c.UI, f = c.FavList, g = c.Player, i = bradio.ui.SceneMgr(), j = bradio.ui.Background(), n = bradio.ui.UserBar(), l = bradio.ui.ShareBar(), m = bradio.ui.PromotionBar(), k = bradio.ui.PlayerPanel(), q = bradio.ui.Lyrics(), u = bradio.ui.ChannelList(), s = bradio.ui.ChannelBar(), o = bradio.ui.FavList(), r = $(".radio-logo a:first"), v = function(a, b) {
"undefined" == typeof b && (b = 0);
$("#jq-tooltip").remove();
_hmt.push(["_trackPageview", "/scene/" +
a + "/" + b]);
i.switchScene(a);
2 == a ? j.hide() : j.show();
2 == a && o.showTab(b);
1 == a && q.refresh();
1 != a ? $("#weibo-activity").addClass("hidden") : $("#weibo-activity").removeClass("hidden")
};
b.extend({switchScene: function(a, b) {
v(a, b)
},hideTooltip: function() {
$("#jq-tooltip").remove()
},showMobileInit: function() {
k.showMobileInit()
}});
a.bind(d.ENV_UPDATED, function(b, c) {
m.test(a.getEnvObj(), c.field)
});
a.bind(d.USER_INFO, function() {
n.setUserInfo(a.getUserInfo());
k.setUserInfo(a.getUserInfo());
u.setUserInfo(a.getUserInfo());
o.setUserInfo(a.getUserInfo());
a.getUserInfo().getLogined() ? $("#fm-main").addClass("logined") : $("#fm-main").removeClass("logined")
});
a.bind(d.CHANNEL_LIST, function() {
u.setChannelList(a.getChannelList())
});
a.bind(d.CHANNEL_SWITCHED, function() {
s.setCurrentChannel(a.getCurrentChannel());
u.setCurrentChannel(a.getCurrentChannel());
j.setCurrentChannel(a.getCurrentChannel());
k.setCurrentChannel(a.getCurrentChannel())
});
a.bind(d.FAV_COUNT_UPDATED, function() {
n.setListenCount(a.getBehaviourPrvdr().getListenCount());
n.setLoveSongCount(a.getBehaviourPrvdr().getLoveSongCount());
n.setHateSongCount(a.getBehaviourPrvdr().getHateSongCount());
o.setHistoryListenCount(a.getBehaviourPrvdr().getListenCount());
o.setLikeSongsCount(a.getBehaviourPrvdr().getLoveSongCount());
o.setDislikeSongsCount(a.getBehaviourPrvdr().getHateSongCount());
u.setLoveSongsAvail(0 < a.getBehaviourPrvdr().getLoveSongCount())
});
a.bind(d.LISTEN_RECORD_UPDATED, function(a, b) {
o.setSongsToRender(b.list, 0)
});
a.bind(d.LOVE_RECORD_UPDATED, function(a, b) {
o.setSongsToRender(b.list,
1)
});
a.bind(d.HATE_RECORD_UPDATED, function(a, b) {
o.setSongsToRender(b.list, 2)
});
a.bind(d.SONG_INFO, function(a, b) {
b.currentSong && (k.setCurrentSong(b.currentSong, b.status), k.setPrevSong(b.prevSong, b.status), q.setCurrentSong(b.currentSong), l.setCurrentSong(b.currentSong), "update" != b.status && q.load(""))
});
a.bind(d.SONG_LINK, function() {
});
a.bind(d.TIME_INFO, function() {
k.setTimeInfo(a.getCurrentPositionString());
q.setPosition(a.getCurrentPosition())
});
a.bind(d.LRC, function(a, b) {
q.load(b.data)
});
a.bind(d.VOLUME,
function(a, b) {
k.setVolume(b.volume)
});
a.bind(d.PLAY_STATUS, function(a, b) {
k.setPlayStatus(b);
s.setPlayStatus(b)
});
i.bind(c.SceneMgr.PAGE_SWITCH, function(a, b) {
r.attr("title", 1 != b.index ? "返回播放界面" : "").css("cursor", 1 != b.index ? "pointer" : "default");
s.setSceneIndex(b.index)
});
u.bind(c.ChannelList.SWITCH, function(a, c) {
b.trigger(e.CHANNEL_SWITCH, {id: c.id})
});
o.bind(f.SONG_PLAY, function(a, c) {
bradio.data.enumerable.Song().setId(c.id);
b.trigger(e.SONG_PLAY, {song: c.song,src: "favlist"})
});
o.bind(f.SONG_LOVE, function(a,
c) {
bradio.data.enumerable.Song().setId(c.id);
b.trigger(e.SONG_LOVE, {song: c.song,src: "favlist"})
});
o.bind(f.SONG_DELOVE, function(a, c) {
bradio.data.enumerable.Song().setId(c.id);
b.trigger(e.SONG_DELOVE, {song: c.song,src: "favlist"})
});
o.bind(f.SONG_DEHATE, function(a, c) {
bradio.data.enumerable.Song().setId(c.id);
b.trigger(e.SONG_DEHATE, {song: c.song,src: "favlist"})
});
o.bind(f.BACK_PLAYER, function() {
v(1)
});
o.bind(f.TAB_SWITCH, function(b, c) {
switch (c.index) {
case 0:
a.getBehaviourPrvdr().loadListenRecord(c.pageIndex,
c.pageSize);
break;
case 1:
a.getBehaviourPrvdr().loadLoveRecord(c.pageIndex, c.pageSize);
break;
case 2:
a.getBehaviourPrvdr().loadHateRecord(c.pageIndex, c.pageSize)
}
});
k.bind(g.PAUSE, function() {
b.trigger(e.PAUSE)
});
k.bind(g.PLAY, function() {
b.trigger(e.PLAY)
});
k.bind(g.SKIP, function() {
b.trigger(e.SKIP)
});
k.bind(g.PREV, function() {
b.trigger(e.PREV)
});
k.bind(g.DOWNLOAD, function() {
b.trigger(e.DOWNLOAD)
});
k.bind(g.MUTE, function() {
b.trigger(e.MUTE)
});
k.bind(g.UNMUTE, function() {
b.trigger(e.UNMUTE)
});
k.bind(g.VOLUME_CHANGE,
function(a, c) {
b.trigger(e.VOLUME, {volume: c.volume})
});
k.bind(g.COVER_CLICK, function() {
b.trigger(e.COVER_CLICK)
});
k.bind(g.SONG_LOVE, function() {
b.trigger(e.SONG_LOVE, {song: a.getCurrentSong(),src: "favlist"})
});
k.bind(g.SONG_DELOVE, function() {
b.trigger(e.SONG_DELOVE, {song: a.getCurrentSong(),src: "favlist"})
});
k.bind(g.SONG_HATE, function() {
b.trigger(e.SONG_HATE, {song: a.getCurrentSong(),src: "favlist"})
});
k.bind(g.ARTISTCHANNELDOOR_CLICK, function(a, c) {
b.trigger(e.CHANNEL_SWITCH, {id: c.id,original: "artistChannelDoor"})
});
k.bind(g.ARTIST_CLICK, function() {
b.trigger(e.ARTIST_CLICK)
});
k.bind(g.SONG_CLICK, function() {
b.trigger(e.SONG_CLICK)
});
k.bind(g.ALBUM_CLICK, function() {
b.trigger(e.ALBUM_CLICK)
});
n.bind(c.UserBar.USER_NAME, function() {
b.trigger(e.USER_NAME_CLICK)
});
n.bind(c.UserBar.USER_CENTER, function() {
b.trigger(e.USER_CENTER_CLICK)
});
n.bind(c.UserBar.LOGOUT, function() {
b.trigger(e.LOGOUT_CLICK)
});
n.bind(c.UserBar.LISTEN_COUNT, function() {
b.trigger(e.LISTEN_COUNT_CLICK)
});
n.bind(c.UserBar.LOVE_COUNT, function() {
b.trigger(e.LOVE_COUNT_CLICK)
});
n.bind(c.UserBar.HATE_COUNT, function() {
b.trigger(e.HATE_COUNT_CLICK)
});
l.bind(c.ShareBar.SHARE, function(a, c) {
b.trigger(e.SHARE, {target: c.target})
});
s.bind(c.ChannelBar.SWITCH_CHANNEL, function() {
b.trigger(e.CHANNEL_SELECTOR);
v(0)
});
s.bind(c.ChannelBar.BACK_PLAYER, function() {
v(1)
});
s.bind(c.ChannelBar.TIPS_CLICK, function() {
b.trigger(e.CHANNELBAR_TIPS_CLICK)
});
s.bind(c.ChannelBar.TIPS_SHOW, function() {
b.trigger(e.CHANNELBAR_TIPS_SHOW)
});
s.bind(c.ChannelBar.TIPS_CLOSE, function() {
b.trigger(e.CHANNELBAR_TIPS_CLOSE)
});
m.bind(c.PromotionBar.SHOW, function(a, c) {
b.trigger(e.PROMOTIONBAR_SHOW, c)
});
m.bind(c.PromotionBar.HIDE, function(a, c) {
b.trigger(e.PROMOTIONBAR_HIDE, c)
});
m.bind(c.PromotionBar.CLICK, function(a, c) {
b.trigger(e.PROMOTIONBAR_CLICK, c)
});
r.click("click", function() {
v(1)
});
return b
};
bradio.namespace("bradio.core");
bradio.core.Controller = function(a, b) {
var c = bradio.lang.Bindable(), d = bradio.core.Event, e = d.Log, f = d.NSLog, g = d.View, i = d.Model, j = bradio.core.Constant, n = bradio.utils.Logger(), l = bradio.utils.NSLogger(), m = bradio.utils.Share(), k = bradio.utils.UA(), q = "", u, s = 0, o, r = 0, v = [j.PlayStatus.END, j.PlayStatus.ERROR], x = function(b) {
var d = a.getKV();
a.getStatus() != j.PlayStatus.PAUSE && s == a.getCurrentPosition() ? a.getStatus() == j.PlayStatus.PREBUFFER || a.getStatus() == j.PlayStatus.BUFFERING ? r += 0.5 : r++ : (s = a.getCurrentPosition(),
r = 0);
b ? a.next() : 9 < r && 10 > d.playTimeoutRetry && (r = 0, b = a.getEnv(), d.playSong100msLogged || (d.playSong100msLogged = !0, b.result = "fail", c.trigger(e.PLAY_RESULT, b)), c.trigger(e.PLAY_TIMEOUT, b), d.playTimeoutRetry++, a.error())
}, y = function() {
var c;
k.isMobile() && !a.getKV().mobileInit ? (b.showMobileInit(), c = !1) : c = !0;
c && (u || (u = setInterval(function() {
x(false)
}, 500)), "" != a.getPendingLink() && a.getPendingLink() != a.getCurrentLink() && a.loadSongLink(a.getPendingLink()), a.play())
}, z = function() {
var b = a.getEnv();
c.trigger(e.SONG_SKIP,
b);
c.trigger(f.SONG_SKIP, b);
a.skip()
}, w = function(b) {
a.isLogined() || (o = b.clone());
var d = a.getEnv(b);
c.trigger(e.SONG_LOVE, d);
c.trigger(e.BTN_LOVE, d);
c.trigger(f.SONG_LOVE, d);
a.loveSong(b)
}, A = function(c, d) {
"undefined" == typeof d && (d = "");
var e = c = decodeURIComponent(c), f = a.getChannelList();
if (!(0 < $.grep(f.getData(), function(a) {
return a.getId() == e
}).length) && !/^public_artist_/i.test(c) && !/^public_tag_/i.test(c)) {
if ("" != a.getCurrentChannel().getId())
return;
c = j.Etc.DEFAULT_CHANNEL_ID
}
if (c == a.getCurrentChannel().getId() &&
"" == d)
return b.switchScene(1), !1;
if (!a.isLogined() && -1 !== $.inArray(c, [j.Etc.PRIVATE_CHANNEL_ID, j.Etc.LOVE_CHANNEL_ID]))
return q = c, M3.user.sign(), !1;
if (c == j.Etc.LOVE_CHANNEL_ID && 0 == a.getBehaviourPrvdr().getLoveSongCount())
return !1;
1 == a.getViewPath() && b.switchScene(1);
a.loadChannel(c, d);
return !0
}, E = function(b) {
$.cookie("fm_dv", b, {expires: 365});
a.setVolume(b)
}, t = function(a, b) {
E(b.volume)
}, D = function() {
var b = a.getEnv();
c.trigger(e.PLAY_COMPLETE, b);
c.trigger(f.PLAY_COMPLETE, b)
};
c.extend({setChannelList: function(b) {
a.getChannelListPrvdr().loadChannelListData(b)
},
setLoginInfo: function(b) {
a.setLoginInfo(b)
},setFavCount: function(b) {
a.getBehaviourPrvdr().loadFavCountData(b)
},loadSongList: function() {
a.loadSongList()
},loadChannel: A});
b.bind(g.PLAY, function() {
a.getKV().mobileInit = !0;
y();
var b = a.getEnv();
c.trigger(e.BTN_PLAY_PAUSE, b);
c.trigger(f.BTN_PLAY_PAUSE, b)
});
b.bind(g.PAUSE, function() {
a.pause();
var b = a.getEnv();
c.trigger(e.BTN_PLAY_PAUSE, b);
c.trigger(f.BTN_PLAY_PAUSE, b)
});
b.bind(g.SKIP, function() {
z()
});
b.bind(g.PREV, function() {
a.prev()
});
b.bind(g.SONG_PLAY,
function(b, c) {
var d = c.song;
A(a.getCurrentChannel().getId(), d.getId())
});
b.bind(g.SONG_LOVE, function(a, b) {
w(b.song)
});
b.bind(g.SONG_DELOVE, function(b, d) {
var g = d.song, i = a.getEnv(g);
c.trigger(e.SONG_DELOVE, i);
c.trigger(f.SONG_DELOVE, i);
a.deloveSong(g)
});
b.bind(g.SONG_HATE, function(b, d) {
var g = d.song;
if (a.isLogined(g)) {
var i = a.getEnv();
c.trigger(e.SONG_HATE, i);
c.trigger(f.SONG_HATE, i);
a.hateSong(g);
a.next()
}
});
b.bind(g.SONG_DEHATE, function(b, d) {
var g = d.song;
if (a.isLogined()) {
var i = a.getEnv(g);
c.trigger(e.SONG_DEHATE,
i);
c.trigger(f.SONG_DEHATE, i);
a.dehateSong(g)
}
});
b.bind(g.VOLUME, t);
b.bind(g.VOLUME_SHOW, function() {
c.trigger(e.BTN_SHOW_VOLUME, a.getEnv())
});
b.bind(g.DOWNLOAD, function() {
window.open("http://ting.baidu.com/song/" + a.getCurrentSong().getId() + "/download?from=fm");
var b = a.getEnv();
c.trigger(e.BTN_DOWNLOAD, b);
c.trigger(f.BTN_DOWNLOAD, b)
});
b.bind(g.COVER_CLICK, function() {
a.pause();
var b = a.getEnv();
c.trigger(e.COVER_CLICK, b);
c.trigger(f.COVER_CLICK, b)
});
b.bind(g.CHANNEL_SELECTOR, function() {
var b = a.getEnv();
c.trigger(e.CHANNEL_SELECTOR, b);
c.trigger(f.CHANNEL_SELECTOR, b)
});
b.bind(g.CHANNEL_SWITCH, function(b, d) {
var g = a.getEnv();
g.to_channel = d.id;
c.trigger(e.CHANEL_CHANGE, g);
c.trigger(f.CHANEL_CHANGE, g);
A(d.id)
});
b.bind(g.USER_NAME_CLICK, function() {
b.switchScene(2, 0)
});
b.bind(g.LISTEN_COUNT_CLICK, function() {
b.switchScene(2, 0)
});
b.bind(g.LOVE_COUNT_CLICK, function() {
b.switchScene(2, 1)
});
b.bind(g.HATE_COUNT_CLICK, function() {
b.switchScene(2, 2)
});
b.bind(g.USER_CENTER_CLICK, function() {
b.switchScene(2, 0)
});
b.bind(g.LOGOUT_CLICK,
function() {
M3.user.signOut()
});
b.bind(g.VOLUME, t);
b.bind(g.PROMOTIONBAR_SHOW, function(b, d) {
var f = a.getEnv();
f.promotion_id = d.id;
c.trigger(e.PROMOTIONBAR_SHOW, f)
});
b.bind(g.PROMOTIONBAR_HIDE, function(b, d) {
var f = a.getEnv();
f.promotion_id = d.id;
c.trigger(e.PROMOTIONBAR_HIDE, f)
});
b.bind(g.PROMOTIONBAR_CLICK, function(b, d) {
var f = a.getEnv();
f.promotion_id = d.id;
c.trigger(e.PROMOTIONBAR_CLICK, f)
});
b.bind(g.CHANNELBAR_TIPS_CLICK, function() {
c.trigger(e.CHANNELBAR_TIPS_CLICK, a.getEnv())
});
b.bind(g.CHANNELBAR_TIPS_SHOW,
function() {
c.trigger(e.CHANNELBAR_TIPS_SHOW, a.getEnv())
});
b.bind(g.CHANNELBAR_TIPS_CLOSE, function() {
c.trigger(e.CHANNELBAR_TIPS_CLOSE, a.getEnv())
});
b.bind(g.SHARE, function(b, d) {
var g = a.getEnv();
g.share_target = d.target;
c.trigger(e.SHARE, g);
c.trigger(f.SHARE, g);
m.share(d.target, a.getCurrentSong(), a.getCurrentChannel())
});
b.bind(g.ARTIST_CLICK, function() {
var b = a.getEnv();
b.pos = "artist";
c.trigger(f.CLICK, b)
});
b.bind(g.SONG_CLICK, function() {
var b = a.getEnv();
b.pos = "song";
c.trigger(f.CLICK, b)
});
b.bind(g.ALBUM_CLICK,
function() {
var b = a.getEnv();
b.pos = "album";
c.trigger(f.CLICK, b)
});
a.bind(i.DEFAULT_CHANNEL, function(a, b) {
A(b.id)
});
a.bind(i.CHANNEL_LOADED, function(b, e) {
var f = [], g, i;
g = a.getKV();
g.tsChannelLoaded || (g.tsChannelLoaded = (new Date).getTime());
if ("" == e.name || 0 == e.rawData.length) {
if ("" == a.getCurrentChannel().getId() && 3 > g.channelFallbackRetry)
return g.channelFallbackRetry++, A(j.Etc.DEFAULT_CHANNEL_ID)
} else {
for (var l = 0, k = e.rawData.length; l < k; l++)
i = e.rawData[l], g = bradio.data.enumerable.Song(), g.setId(i.id),
g.setChannel(e.id), g.setRecommendMethod(i.method || 0), 0 == i.type && g.setLoved(!0), f.push(g);
e.force && c.trigger(d.Log.CHANNEL_DURATION, a.getEnv());
a.getCurrentChannel();
g = bradio.data.enumerable.Channel();
g.setId(e.id);
g.setName(e.name);
a.setCurrentChannel(g);
a.loadPlayList(f, e.force);
a.logChannelHistory(g)
}
});
a.bind(i.PLAY_STATUS, function() {
a.getStatus() == j.PlayStatus.END && D();
-1 != $.inArray(a.getStatus(), v) && x(!0)
});
a.bind(i.FAV_COUNT_UPDATED, function() {
if (a.isLogined()) {
if ("" != q && (A(q), q = ""), o) {
var b =
o.clone();
o = null;
w(b)
}
} else
"" != q && (q = "", "" == a.getCurrentChannel().getId() && A(j.Etc.DEFAULT_CHANNEL_ID)), -1 != $.inArray(a.getCurrentChannel().getId(), [j.Etc.PRIVATE_CHANNEL_ID, j.Etc.LOVE_CHANNEL_ID]) && A(j.Etc.DEFAULT_CHANNEL_ID)
});
a.bind(i.USER_INFO, function() {
});
a.bind(i.SONG_INFO, function(b, d) {
var g = a.getKV();
if ("update" != d.status) {
g.playResultLogged = !1;
g.playCompleteLogged = !1;
g.playSongLogged = !1;
g.playSong100msLogged = !1;
var i = a.getEnv(a.getPrevSong(!0));
g.firstPlayEndLogged && "" != d.prevSong.getName() &&
(i.endStatus = 0 == d.auto ? "m" : "e", i.auto = d.auto, c.trigger(e.PLAY_END, i), c.trigger(f.PLAY_END, i));
g.firstPlayEndLogged = !0;
"prev" == d.status && (c.trigger(e.SONG_PREV, i), c.trigger(f.SONG_PREV, i));
if (0 != a.getCurrentSong().getId())
try {
document.location.hash = "/channel/" + encodeURIComponent(a.getCurrentChannel().getId())
} catch (j) {
}
"" != a.getCurrentSong().getName() && (document.title = a.getCurrentSong().getName() + " - " + a.getCurrentSong().getArtists()[0].getName() + " 百度随心听")
}
});
a.bind(i.SONG_INFO_ITEM_ERROR, function(b,
d) {
var f = a.getEnv();
f.code = d.code;
f.id = d.songId;
c.trigger(e.SONG_INFO_ITEM_ERROR, f)
});
a.bind(i.SONG_INFO_LOADED, function() {
var b = a.getEnv();
c.trigger(e.SONG_INFO_LOADED, b);
c.trigger(f.SONG_INFO_LOADED, b)
});
a.bind(i.SONG_INFO_FAILED, function(b, d) {
var g = a.getEnv();
g.code = d.code;
g.ids = d.ids;
g.linker = d.code;
c.trigger(e.SONG_INFO_FAILED, g);
c.trigger(f.SONG_INFO_FAILED, g)
});
a.bind(i.SONG_INFO_ALL_FAILED, function() {
c.trigger(e.SONG_INFO_ALL_FAILED, a.getEnv())
});
a.bind(i.TIME_INFO, function() {
var b = a.getKV();
if (!b.firstSongPlayed) {
b.firstSongPlayed = !0;
var d = a.getEnv();
d.php2js = tsJs - tsPhp;
d.js2channel = b.tsChannelLoaded - tsJs;
d.js2songready = b.tsSongReady - tsJs;
d.js2play = (new Date).getTime() - tsJs;
c.trigger(e.FIRST_SONG, d);
c.trigger(f.FIRST_SONG, d)
}
!b.playSong100msLogged && 100 < a.getCurrentPosition() && (b.playSong100msLogged = !0, b.playTimeoutRetry = 0, d = a.getEnv(), d.result = "success", c.trigger(e.PLAY_RESULT, d), c.trigger(f.PLAY_100MS, d));
!b.playCompleteLogged && 6E4 < a.getCurrentPosition() && (b.playCompleteLogged = !0, b =
a.getEnv(), c.trigger(e.PLAY_60S, b), c.trigger(f.PLAY_60S, b), a.complete())
});
a.bind(i.SONG_READY, function() {
r = 0;
var b = a.getKV();
b.tsSongReady || (b.tsSongReady = (new Date).getTime());
var d = a.getNextAvailLink();
b.playSongLogged || (b.playSongLogged = !0, c.trigger(e.PLAY_SONG, a.getEnv()), c.trigger(f.PLAY_START, a.getEnv()));
"" != d ? (a.setPendingLink(d), y()) : (c.trigger(e.PLAY_NOLINK, a.getEnv()), a.stop(), x(!1))
});
a.bind(i.PLAY_COMPLETE, D);
a.bind(i.PLAY_ERROR, function() {
var b = a.getEnv(), d = a.getKV();
d.playErrorCount++;
1E3 > a.getCurrentPosition() ? (d.playSong100msLogged || (d.playSong100msLogged = !0, b.result = "fail", c.trigger(e.PLAY_RESULT, b)), c.trigger(e.PLAY_LOAD_ERROR, b), c.trigger(f.PLAY_LOAD_ERROR, b)) : (c.trigger(e.PLAY_ERROR, b), c.trigger(f.PLAY_ERROR, b))
});
a.bind(i.PLAY_ERROR_RECOVERED, function() {
var b = a.getKV();
0 != b.playErrorCount && (b.playErrorCount = 0)
});
a.bind(i.PLAYLIST_INITED, function() {
r = 0;
x(!0)
});
n.setHost(c);
l.setHost(c);
$(document).bind("keydown", function(b) {
switch (b.keyCode) {
case 37:
a.prev();
break;
case 39:
z();
break;
case 32:
a.getStatus() == j.PlayStatus.PAUSE ? y() : a.pause()
}
});
g = a.getKV();
g.channelFallbackRetry = 0;
g.playTimeoutRetry = 0;
$.cookie("fm_1") || (a.getKV().newUser = !0);
$.cookie("fm_1", (new Date).getTime(), {expires: 365});
b.switchScene(a.getViewPath());
E($.cookie("fm_dv") || 50);
return c
};
bradio.namespace("bradio.core");
bradio.core.FM = function() {
var a = bradio.lang.Class(), b, c, d;
a.extend({setChannelList: function(a) {
d.setChannelList(a)
},setLoginInfo: function(a) {
d.setLoginInfo(a)
},setFavCount: function(a) {
d.setFavCount(a)
},loadSongList: function() {
d.loadSongList()
},loadChannel: function(a) {
d.loadChannel(a)
},showLogin: function() {
M3.user.sign()
},hideTooltip: function() {
c.hideTooltip()
},switchScene: function(a) {
c.switchScene(a)
}});
b = bradio.core.Model();
c = bradio.core.View(b);
d = bradio.core.Controller(b, c);
return a
};
bradio.namespace("bradio.core");
bradio.core.AudioKernel = function() {
var a = bradio.lang.Bindable(), b = bradio.core.Event.AudioKernel, c = bradio.core.Constant, d, e = 0, f = 0, g = 0, i = 0, j = 0, n = function() {
return d.getUrl()
}, l = function(a) {
f = e = 0;
j = +new Date;
g = +new Date;
i = +new Date;
return d.setUrl(a)
}, m = function() {
return d.getState()
};
a.extend({getUrl: n,setUrl: l,play: function() {
m() == c.PlayStatus.END && l(n());
return d.play(void 0, !0)
},pause: function() {
return d.pause()
},stop: function() {
return d.stop()
},setMute: function(a) {
return d.setMute(a)
},getMute: function() {
return d.getMute()
},
setVolume: function(a) {
return d.setVolume(a)
},getVolume: function() {
return d.getVolume()
},getCurrentPosition: function() {
return d.getCurrentPosition()
},getCurrentPositionString: function() {
return d.getCurrentPositionString()
},getTotalTime: function() {
return d.getTotalTime()
},getTotalTimeString: function() {
return d.getTotalTimeString()
},getBytesTotal: function() {
return d.getTotalBytes()
},getBytesLoaded: function() {
return d.getLoadedBytes()
},getCurEngine: function() {
return d.getCurEngine().getEngineType()
},
getStatus: m,getBufferCount: function() {
return e
},getBufferLength: function() {
return f
},getTimeFromStart: function() {
return (new Date).getTime() - g
},getStart2Play: function() {
return i - g
},getStartTimestamp: function() {
return g
},getConnectTimestamp: function() {
return i
}});
var k = [{constructorName: "PlayEngine_FMP_AAC",args: {swfPath: "/static/flash/fmp_aac.swf?" + (new Date).getTime(),instanceName: "player"}}, {constructorName: "PlayEngine_FMP_MP3",args: {swfPath: "/static/flash/fmp_mp3.swf?" + (new Date).getTime(),instanceName: "player"}},
{constructorName: "PlayEngine_Audio",args: {}}];
/Safari/.test(navigator.userAgent) && /Mac OS X/.test(navigator.userAgent) && (k = [{constructorName: "PlayEngine_Audio",args: {}}, {constructorName: "PlayEngine_FMP_AAC",args: {swfPath: "/static/flash/fmp_aac.swf?" + (new Date).getTime(),instanceName: "player"}}, {constructorName: "PlayEngine_FMP_MP3",args: {swfPath: "/static/flash/fmp_mp3.swf?" + (new Date).getTime(),instanceName: "player"}}]);
window.player = new PlayEngine({el: $("#audiokernel")[0],subEngines: k});
d = window.player;
d.setEventListener(d.EVENTS.INIT, function() {
a.trigger(b.INITED)
});
d.setEventListener(d.EVENTS.INITFAIL, function() {
a.trigger(b.INIT_FAILED)
});
d.setEventListener(d.EVENTS.POSITIONCHANGE, function() {
m() == d.STATES.PLAY && a.trigger(b.PLAY_PROGRESS)
});
d.setEventListener(d.EVENTS.STATECHANGE, function(c) {
switch (c.newState) {
case d.STATES.ERROR:
a.trigger(b.ERROR);
break;
case d.STATES.BUFFERING:
e++;
j = +new Date;
break;
case d.STATES.PLAY:
c.oldState == d.STATES.BUFFERING && (f += +new Date - j)
}
a.trigger(b.PLAY_STATUS, {status: c.newState,
lastStatus: c.oldState})
});
d.setEventListener(d.EVENTS.PROGRESS, function(c) {
a.trigger(b.LOAD_PROGRESS, {loadProgress: c.progress,duration: c.totalTime})
});
d.init();
k = new PlayEngineRulesController({playEngine: d});
k.addRule(new PlayEngineRules.Prebuffer({time: 8,handler: function() {
this.playEngine.curEngine.state = this.playEngine.STATES.ERROR;
this.playEngine.curEngine.dispatchEvent(this.playEngine.EVENTS.STATECHANGE, {newState: this.playEngine.STATES.ERROR,oldState: this.playEngine.STATES.PREBUFFER,engineType: this.playEngine.curEngine.getEngineType()})
}}));
k.addRule(new PlayEngineRules.FirstBuffer({time: 8,handler: function() {
this.playEngine.curEngine.state = this.playEngine.STATES.ERROR;
this.playEngine.curEngine.dispatchEvent(this.playEngine.EVENTS.STATECHANGE, {newState: this.playEngine.STATES.ERROR,oldState: this.playEngine.STATES.PREBUFFER,engineType: this.playEngine.curEngine.getEngineType()})
}}));
k.addRule(new PlayEngineRules.Exception({time: 1,handler: function() {
this.playEngine.curEngine.state = this.playEngine.STATES.ERROR;
this.playEngine.curEngine.dispatchEvent(this.playEngine.EVENTS.STATECHANGE,
{newState: this.playEngine.STATES.ERROR,oldState: this.playEngine.STATES.READY,engineType: this.playEngine.curEngine.getEngineType()})
}}));
k.addRule(new PlayEngineRules.Play100ms({handler: function() {
i = (new Date).getTime()
}}));
return a
};
bradio.namespace("bradio.data.enumerable");
bradio.data.enumerable.Song = function() {
var a = {id: 0,name: "",artists: [bradio.data.enumerable.Artist()],albumId: 0,album: "",cover: "",coverBig: "",coverSmall: "",format: "mp3",duration: 0,version: "",rate: 0,size: 0,link: "",showLink: "",lrcLink: "",copyType: "",channel: "",hated: !1,loved: !1,isAd: !1,adUrl: "",relateStatus: 0,resourceType: 0,recommendMethod: 0,completeCountNeed: 0}, b = bradio.lang.Enumerable(a);
b.extend({getPlainArtists: function() {
for (var b = "", d = 0, e = a.artists.length; d < e; d++)
b += a.artists[d].getName() + ",";
return b = b.slice(0, b.length - 1)
},getPlainArtistIds: function() {
for (var b = "", d = 0, e = a.artists.length; d < e; d++)
b += a.artists[d].getId() + ",";
return b = b.slice(0, b.length - 1)
},toKeyString: function() {
return a.name + "$$" + a.artists[0].getName() || ""
},toTitleString: function() {
return a.name + "$$" + a.artists[0].getName() || "$$"
},artistLinkEnable: function() {
if (!(0 === a.relateStatus || 1 === a.relateStatus))
if (2 === a.relateStatus || 3 === a.relateStatus)
return !1;
return !0
},albumLinkEnable: function() {
if (!(0 === a.relateStatus || 2 === a.relateStatus))
if (1 ===
a.relateStatus || 3 === a.relateStatus)
return !1;
return !0
}});
return b
};
bradio.namespace("bradio.data.enumerable");
bradio.data.enumerable.Channel = function() {
return bradio.lang.Enumerable({name: "",id: "",cateName: "",cateId: "",pos: 0})
};
bradio.namespace("bradio.data.enumerable");
bradio.data.enumerable.Artist = function() {
return bradio.lang.Enumerable({name: "",id: "",avatarBig: "",avatarMiddle: "",avatarSmall: "",avatarMini: ""})
};
bradio.namespace("bradio.data.enumerable");
bradio.data.enumerable.User = function() {
return bradio.lang.Enumerable({userId: 0,userName: "",logined: !1,refer: ""})
};
bradio.namespace("bradio.data.iterable.playstrategy");
bradio.data.iterable.PlayStrategy = function() {
var a = bradio.lang.Bindable(), b = bradio.data.providable.Ad(), c = $.cookie("fm_ad") ? $.cookie("fm_ad").split(",") : [], d = 0, e = !1, f, g = function() {
if (e) {
for (var a, g = !1, l = 0, m = b.getLength(); l < m; l++)
if (a = b.getOne(l), -1 == $.inArray(a.getId() + "", c)) {
g = !0;
break
}
if (g && d >= a.getCompleteCountNeed())
return d = 0, c.push(a.getId() + ""), $.cookie("fm_ad", c.join(","), {expires: 1}), a
}
f.getIndex() + 1 > f.getLength() - 1 && (f.setIndex(-1), f.getData().sort(i));
f.setIndex(f.getIndex() + 1);
if (1 < f.getLength())
for (; f.getCurrentSong() &&
f.getData()[f.getIndex()].getId() == f.getCurrentSong().getId(); )
f.setIndex(f.getIndex() + 1);
return f.getData()[f.getIndex()]
}, i = function() {
return 0.5 < Math.random() ? -1 : 1
};
a.extend({setPlaylist: function(a) {
f = a
},setAdable: function(a) {
e = a
},skip: function() {
return g()
},next: g,prev: function() {
},complete: function() {
++d
},clearCompleteCount: function() {
d = 0
}});
c = $.cookie("fm_ad") ? $.cookie("fm_ad").split(",") : [];
return a
};
bradio.namespace("bradio.data.iterable");
bradio.data.iterable.Playlist = function() {
var a = bradio.lang.Bindable(), b = !1, c = [], d = [], e = bradio.data.iterable.PlayHistory(), f = bradio.data.iterable.PlayStrategy(), g = -1, i, j = bradio.core.Event, n = !1, l = !1, m = function(a) {
var b = e.getHistory(0);
a && (!b || a.getId() != b.getId()) && e.push(a)
}, k = function() {
l ? n = !0 : (l = !0, setTimeout(function() {
n = !1;
var e = $.grep(d, function(a) {
return "" != a.getName()
});
e.length && (c = e);
!b && c.length && !b && (b = !0, g = -1, a.trigger(j.Playlist.INITED));
l = !1;
n && k()
}, 50))
};
a.extend({load: function(a, c) {
a.length &&
(d = a, c && (b = !1, f.clearCompleteCount()))
},getRawData: function() {
return d
},setData: function(a) {
c = a
},getData: function() {
return c
},getLength: function() {
return c.length
},getRawLength: function() {
return d.length
},getCurrentSong: function() {
return i
},getPrevSong: function(a) {
var b = -1, c = e.getHistory(b);
if (!a)
for (; c.getIsAd(); )
b--, c = e.getHistory(b);
return c
},getAllHistory: function() {
return e.getAllHistory()
},setIndex: function(a) {
g = a
},getIndex: function() {
return g
},next: function() {
i = f.next();
m(i);
a.trigger(j.Playlist.SONG,
{status: "next",auto: 1})
},skip: function() {
i = f.skip();
m(i);
a.trigger(j.Playlist.SONG, {status: "next",auto: 0})
},prev: function() {
var b = -1;
for (i = e.getHistory(b); i.getIsAd(); )
b--, i = e.getHistory(b);
f.prev();
m(i);
a.trigger(j.Playlist.SONG, {status: "prev",auto: 0})
},complete: function() {
f.complete()
},failed: function() {
e.pop()
},error: function() {
i = f.next();
m(i);
a.trigger(j.Playlist.SONG, {status: "next",auto: 2})
},remove: function(a) {
for (var b = 0, d = c.length; b < d && c[b].getId() + "" !== a.getId() + ""; b++)
;
a = b;
-1 != a && c.splice(a,
1)
},hate: function() {
e.pop()
},updateSong: function(a) {
for (var b = d, c = 0, e = d.length; c < e && d[c].getId() + "" !== a.getId() + ""; c++)
;
if (b = b[c])
b.loadRaw(a.raw(), ["loved", "hated", "channel", "recommendMethod"]), k()
},getReady: function() {
return b
},stage: k,getSongPlayedCount: function() {
return e.getSongPlayedCount()
},setAdable: function(a) {
f.setAdable(a)
}});
f.setPlaylist(a);
return a
};
bradio.namespace("bradio.data.iterable");
bradio.data.iterable.PlayHistory = function() {
var a = bradio.lang.Class(), b = [], c = 0, d = bradio.core.Event.Providable.Song;
a.extend({push: function(a) {
if (!(0 < b.length && a.getId() == b[b.length - 1].getId())) {
b.push(a);
100 < b.length && b.splice(0, b.length - 100);
for (var a = b.length, d = []; a-- && 3 > d.length; )
b[a].getIsAd() || d.unshift(b[a].getId());
++c;
$.cookie("fm_ph3", null);
$.cookie("fm_ph3", d.join(","), {expires: 365})
}
},pop: function() {
b.pop()
},getHistory: function(a) {
a = Math.min(b.length - 1 + a, b.length - 1);
return -1 < a && b[a] ? b[a] :
bradio.data.enumerable.Song()
},getAllHistory: function() {
return b
},getHistoryByPage: function(a, c) {
return b.slice(a * c, Math.min(b.length, (a + 1) * c))
},rebase: function() {
},length: function() {
return b.length
},getSongPlayedCount: function() {
return c
}});
$.cookie("fm_ph", null);
$.cookie("fm_ph2", null);
if ($.cookie("fm_ph3")) {
var e = $.cookie("fm_ph3").split(","), f = bradio.data.providable.Song(), g;
if (e) {
for (var i = 0, j = e.length; i < j; i++)
g = bradio.data.enumerable.Song(), g.setId(e[i]), b.push(g);
f.bind(d.SONG_INFO, function(a,
c) {
var d = $.grep(b, function(a) {
return a.getId() + "" === c.song.getId() + ""
});
d && 0 < d.length && d[0].loadRaw(c.song.raw())
});
f.load(b)
}
}
return a
};
bradio.namespace("bradio.data.providable");
bradio.data.providable.Ad = function() {
var a = bradio.lang.Class(), b = [{id: 31930782,name: "新歌首发——梁晓雪《城市》",artists: [{id: 5322,name: "梁晓雪"}],albumId: 31741103,album: "最好还是不说",cover: staticPath + "/ad/images/31930782.jpg?" + Math.random(),link: "http://zhangmenshiting.baidu.com/data2/music/32277408/32277408.mp3?xcode=5850107cc24d7eee145034a7b217121b",lrcLink: "/static/ad/lyrics/31930782.txt?" + Math.random(),isAd: !0,duration: 3E4,completeCountNeed: 4}, {id: 32326660,name: "彭青 新歌首发",artists: [{id: 6254013,name: "彭青"}],albumId: 32326674,
album: "世界大不同",cover: staticPath + "/ad/images/32326660.jpg?" + Math.random(),link: "http://zhangmenshiting.baidu.com/data2/music/32616303/32616303.mp3?xcode=5850107cc24d7eee145034a7b217121b",lrcLink: "/static/ad/lyrics/32326660.txt?" + Math.random(),isAd: !0,duration: 3E4,completeCountNeed: 5}, {id: 31626802,name: "乔任梁《与我无关》",artists: [{id: 2512,name: "乔任梁"}],albumId: 28232233,album: "Pin.K 拼",cover: staticPath + "/ad/images/31626802.jpg?" + Math.random(),link: "http://zhangmenshiting.baidu.com/data2/music/32277418/32277418.mp3?xcode=5850107cc24d7eee145034a7b217121b",
lrcLink: "/static/ad/lyrics/31626802.txt?" + Math.random(),isAd: !0,duration: 3E4,completeCountNeed: 5}], c = [];
a.extend({getConfig: function() {
return c
},getOne: function(a) {
return c[a]
},getRandom: function() {
return c[Math.floor(Math.random() * c.length)]
},getLength: function() {
return c.length
}});
for (var d, e, f = 0, g = b.length; f < g; f++)
d = bradio.data.enumerable.Song(), d.loadRaw(b[f]), "" == d.getAdUrl() && d.setAdUrl("http://music.baidu.com/song/" + d.getId()), e = bradio.data.enumerable.Artist(), e.loadRaw(b[f].artists[0]), d.setArtists([e]),
c.push(d);
return a
};
bradio.namespace("bradio.data.providable");
bradio.data.providable.Song = function() {
var a = bradio.lang.Bindable(), b = bradio.core.Event.Base, c = bradio.core.Event.Providable.Song, d = {}, e = 0, f = 0, g = 0, i = 0, j = !1, n = function(l) {
if (0 == l.length)
return !1;
if (!g) {
var m = l.getUniq().length;
g = m;
m != l.length && (j = !0, g = l.length)
}
var k = "jsonplink" + (new Date).getTime(), q = l.splice(0, 10);
window[k] = function(e) {
clearTimeout(d[k]);
var f, m, r, v, x, y, z, w, A, E, t = 0, D = 0;
if (22E3 != e.errorCode)
a.trigger(b.DATA_FAILED, {ids: q.join(","),code: "CODE_" + e.errorCode});
else if (0 == e.data.songList.length)
a.trigger(b.DATA_FAILED,
{ids: q.join(","),code: "EMPTY"});
else {
y = e.data.xcode;
t = e.data.songList.length;
z = 0;
for (A = e.data.songList.length; z < A; z++)
if (f = e.data.songList[z], 4 == +f.resourceType)
--t, --g;
else if (22E3 != f.linkCode && a.trigger(c.SONG_INFO_ERROR, {songId: f.songId,code: "CODE_" + f.linkCode}), "" != f.songName) {
f.artistId ? (m = f.artistId.split(","), r = f.artistName.split(",")) : (m = [], r = []);
v = [];
w = 0;
for (E = m.length; w < E; w++)
x = bradio.data.enumerable.Artist(), x.setId(m[w]), x.setName(r[w]), v.push(x);
r = bradio.data.enumerable.Song();
r.setId(+f.songId);
r.setName(f.songName);
0 < v.length && r.setArtists(v);
w = +f.albumId;
v = 0;
v = m.length && m[0] ? w ? 0 : 1 : w ? 2 : 3;
m = -1 == f.songLink.lastIndexOf("xcode");
m = "" != f.songLink ? f.songLink + (m ? (/\?/.test(f.songLink) ? "&" : "?") + "xcode=" + y : "") : "";
r.setAlbumId(+f.albumId);
r.setAlbum(f.albumName || "");
r.setCopyType(f.copy_type || "");
r.setFormat(f.format || "");
r.setLrcLink(f.lrcLink ? f.lrcLink : "");
r.setRate(f.rate || "");
r.setSize(f.size || "");
r.setLink(m);
r.setShowLink(f.showLink || "");
r.setCover(f.songPicRadio || "");
r.setCoverBig(f.songPicBig ||
"");
r.setCoverSmall(f.songPicSmall || "");
r.setDuration(1E3 * f.time);
r.setVersion(f.version || "");
r.setResourceType(+f.resourceType);
r.setRelateStatus(+f.relateStatus || v);
if (j)
for (w = q.length; w--; )
q[w] + "" == f.songId + "" && (D++, i++, a.trigger(c.SONG_INFO, {song: r,loaded: i,total: g}));
else
D++, i++, a.trigger(c.SONG_INFO, {song: r,loaded: i,total: g})
}
a.trigger(b.DATA_LOADED);
0 < l.length ? n(l) : i = g = 0
}
};
d[k] = setTimeout(function() {
clearTimeout(d[k]);
window[k] = function() {
};
a.trigger(b.DATA_FAILED, {ids: q.join(","),code: "TIMEOUT"});
n(l);
0 == l.length && e == f && a.trigger(c.ALL_FAILED)
}, 5E3);
setTimeout(function() {
$.ajax({url: bradio.core.Constant.Path.LS_PATH + "?songIds=" + q.join(",") + "&type=mp3",dataType: "jsonp",jsonpCallback: k})
}, 20)
};
a.extend({load: function(a) {
if (!a || 0 == a.length)
return !1;
var b = [];
e = 0;
f = Math.ceil(a.length / 10);
for (var c = 0, d = a.length; c < d; c++)
b.push(a[c].getId());
n(b)
}});
return a
};
bradio.namespace("bradio.data.providable");
bradio.data.providable.Lyrics = function() {
var a = bradio.lang.Bindable(), b = bradio.core.Event.Base, c = function(c) {
a.trigger(b.DATA_FAILED, c)
};
a.extend({load: function(d) {
d.getLrcLink() && "" != d.getLrcLink() && $.ajax({url: d.getLrcLink()}).done(function(c) {
a.trigger(b.DATA_LOADED, {data: c,song: d})
}).fail(c)
}});
return a
};
bradio.namespace("bradio.data.providable");
bradio.data.providable.Channel = function() {
var a = bradio.lang.Bindable(), b = bradio.core.Event.Base, c = function(c) {
a.trigger(b.DATA_LOADED, {id: c.channel_id,name: c.channel_name,rawData: c.list,force: !0})
}, d = function(c) {
a.trigger(b.DATA_FAILED, c)
};
a.extend({load: function(a, b) {
$.ajax({url: bradio.core.Constant.Path.DATA_BASE + "?tn=playlist&id=" + encodeURIComponent(a) + "&special=flash&prepend=" + b + "&format=json",dataType: "json",cache: !1}).done(c).fail(d)
}});
return a
};
bradio.namespace("bradio.data.providable");
bradio.data.providable.ChannelList = function() {
var a = bradio.lang.Bindable(), b = bradio.core.Event.Base, c = function(a) {
e(a)
}, d = function(c) {
a.trigger(b.DATA_FAILED, c)
}, e = function(c) {
a.trigger(b.DATA_LOADED, c)
};
a.extend({load: function() {
$.ajax({url: bradio.core.Constant.Path.DATA_BASE + "?tn=channellist&format=channellist&r=" + (new Date).getTime(),dataType: "json"}).done(c).fail(d)
},loadChannelListData: e});
return a
};
bradio.namespace("bradio.data.providable");
bradio.data.providable.Behaviour = function() {
var a = bradio.lang.Bindable(), b = [], c = [], d = bradio.lang.Iterable(), e = bradio.lang.Iterable(), f = bradio.lang.Iterable(), g = bradio.data.enumerable.User(), i = 0, j = 0, n = 0, l = !1, m = "", k = 0, q = bradio.core.Event, u = q.Providable.Behaviour, s = q.Providable, o = bradio.core.Constant, r = bradio.core.Constant.Behaviour, v = function() {
$.ajax({url: o.Path.DATA_BASE + "?tn=usercounts&format=json",dataType: "json",cache: !1}).done(function(a) {
z(a)
}).fail(function() {
})
}, x = function(b, c, d, e) {
v();
var f =
0, g = "listenrecord";
switch (e) {
case "loved":
f = 0;
g = "songlist";
break;
case "hated":
f = 1, g = "songlist"
}
$.ajax({url: o.Path.DATA_BASE + "?tn=" + g + "&songtype=" + f + "&format=json&pagelen=" + c + "&pageno=" + (b + 1),dataType: "json",cache: !1}).done(function(b) {
if (b) {
var c = [], e, f, g = function(b, e) {
for (var f = c.length; f-- && !(c[f].getId() == e.song.getId() && "" == c[f].getName()); )
;
-1 != f && (c[f].loadRaw(e.song.raw(), ["loved", "hated"]), e.loaded == e.total && (a.trigger(d, {list: c}), l.unbind(s.Song.SONG_INFO, g)))
};
0 == b.length && a.trigger(d, {list: c});
for (var i = 0, j = b.list.length; i < j; i++)
if (f = b.list[i], 0 != f.id) {
e = bradio.data.enumerable.Song();
e.setId(f.id);
e.setRecommendMethod(f.method || 0);
switch (f.type) {
case 0:
e.setLoved(!0);
break;
case 1:
e.setHated(!0)
}
c.push(e)
}
var l = bradio.data.providable.Song(!0);
l.bind(s.Song.SONG_INFO, g);
l.load(c)
}
}).fail(function() {
})
}, y = function(d) {
k++;
var e = bradio.core.Constant.Path.DATA_BASE + "?action=userop&tn=userop&_=" + +new Date;
200 < b.length && b.splice(0, b.length - 200);
var f = [], i;
i = "";
var j = function(b) {
b && (b.list && 0 <
b.list.length) && a.trigger(q.Base.DATA_LOADED, {id: b.channel_id,name: b.channel_name,rawData: b.list,force: !1});
g.getLogined() && v()
}, l = function() {
g.getLogined() && v()
};
if (b.length) {
for (var m = 0, n = b.length; m < n; m++)
i = b[m], f.push(i.act + "|" + encodeURIComponent(i.subject.getId()) + "|" + encodeURIComponent(i.channel.getId()));
b.splice(0, b.length);
i = f.join("$$");
$.ajax({url: e,data: "data=" + i,type: "POST",dataType: "json"}).done(j).fail(l);
d && c.splice(0, c.length)
}
}, z = function(b) {
if (!l || b && b.counts && !(-1 == b.counts.total_listen ||
-1 == b.counts.like_songs || -1 == b.counts.dislike_songs))
l = !0, n = b.counts.total_listen || 0, i = b.counts.like_songs || 0, j = b.counts.dislike_songs || 0, a.trigger(u.FAV_COUNT_UPDATED, b)
};
a.extend({log: function(l, k, m) {
switch (l) {
case r.SONG.COMPLETE:
g.getLogined() && (n++, f.unshift(k));
break;
case r.SONG.LOVE:
k.getLoved() || (k.setHated(!1), k.setLoved(!0), d.unshift(k), g.getLogined() && i++);
break;
case r.SONG.DELOVE:
k.getLoved() && (k.setLoved(!1), d.remove(k), g.getLogined() && (i = Math.max(0, i - 1)));
break;
case r.SONG.HATE:
k.setLoved(!1);
k.setHated(!0);
d.remove(k);
e.unshift(k);
g.getLogined() && (k.getLoved() && (i = Math.max(0, i - 1)), j++);
break;
case r.SONG.DEHATE:
k.setHated(!1), e.remove(k), g.getLogined() && (j = Math.max(0, j - 1))
}
b.push({act: l,subject: k,channel: m});
g.getLogined() || c.push({act: l,subject: k,channel: m});
a.trigger(u.FAV_COUNT_UPDATED, {user_id: g.getUserId(),user_name: g.getUserName()});
y(void 0)
},setUserInfo: function(a) {
g.loadRaw(a.raw())
},loadFavCountData: z,loadListenRecord: function(a, b) {
x(a, b, u.LISTEN_RECORD_UPDATED, "normal", f)
},
loadLoveRecord: function(a, b) {
x(a, b, u.LOVE_RECORD_UPDATED, "loved", d)
},loadHateRecord: function(a, b) {
x(a, b, u.HATE_RECORD_UPDATED, "hated", e)
},getCheckCount: function() {
return k
},setChannel: function(a) {
a != m && (m = a)
},getNeedData: function() {
return !1
},getUserName: function() {
return g.getUserName()
},getListenCount: function() {
return n
},getLoveSongCount: function() {
return i
},getHateSongCount: function() {
return j
},refresh: function(a) {
y(a)
},updateFavData: function() {
v()
},updateFavCount: v});
return a
};
bradio.namespace("bradio.data.providable");
bradio.data.providable.Cookie = function() {
var a = bradio.lang.Bindable(), b = /\/play\/([^\/]+?\/)?(\d+)/i, c = /(\?|\&)s\=(\d+)/i, d = /\/share\/([^\/]+)/i, e = /\/(play|channel)\/(p[^\/]+)/i, f = /\/view\/([^\/]+)/i, g = ["channels", "player", "favlist"], i = 1, j = function() {
try {
if ("" == document.location.hash)
return 1;
var a = f.exec(document.location.hash);
if (a && -1 != $.inArray(a[1], g))
return $.inArray(a[1], g)
} catch (b) {
}
return 1
};
a.extend({setDefaultChannelId: function(a) {
$.cookie("fm_dc", null, {domain: "baidu.com"});
$.cookie("fm_dc",
a, {expires: 365})
},getDefaultChannelId: function() {
try {
if ("" != document.location.hash) {
var a = e.exec(document.location.hash);
if (a && a[2] && "" != a[2])
return a[2]
}
return $.cookie("fm_dc") || bradio.core.Constant.Etc.DEFAULT_CHANNEL_ID
} catch (b) {
return $.cookie("fm_dc") || bradio.core.Constant.Etc.DEFAULT_CHANNEL_ID
}
},getDefaultSongId: function() {
try {
var a;
if ("" != document.location.hash && (a = b.exec(document.location.hash)) || (a = c.exec(document.location.href)))
return a[2]
} catch (d) {
}
return ""
},getDefaultViewPath: function() {
return i
},
getShareSource: function() {
try {
if ("" == document.location.hash)
return "";
var a = d.exec(document.location.hash);
if (a)
return a[1]
} catch (b) {
}
return ""
},getViewPath: j});
i = j();
return a
};
bradio.namespace("bradio.ui.pstrategies");
bradio.ui.pstrategies.BtnHate = function() {
var a = bradio.lang.Class(), b = {id: "bh",content: "",onclick: function() {
}};
a.extend({test: function(a, d) {
if ("operation" != d || "hate" != a.operation)
return null;
b.content = a.user.getLogined() ? "我们通过垃圾桶理解你的喜好,帮你推荐其他你可能喜欢的歌曲。" : "登陆后,我们能记住你不喜欢这首歌,帮你推荐更好听的歌曲。";
return b
}});
return a
};
bradio.namespace("bradio.ui.pstrategies");
bradio.ui.pstrategies.BtnLove = function() {
var a = bradio.lang.Class(), b = {id: "bl",content: "",onclick: function() {
}};
a.extend({test: function(a, d) {
if ("operation" != d || "love" != a.operation)
return null;
b.content = a.user.getLogined() ? "红心是你对该歌曲的表态,红心越多,我们越能帮你推荐你可能喜欢的歌曲。" : "登陆后,我们能记住你的喜好,帮你推荐更好听的歌曲。";
return b
}});
return a
};
bradio.namespace("bradio.ui.pstrategies");
bradio.ui.pstrategies.BtnPrev = function() {
var a = bradio.lang.Class(), b = {id: "bp",content: "再听一遍,不对好歌留遗憾。",onclick: function() {
}};
a.extend({test: function(a, d) {
return "operation" != d ? null : "prev" != a.operation ? null : b
}});
return a
};
bradio.namespace("bradio.ui.pstrategies");
bradio.ui.pstrategies.BtnSkip = function() {
var a = bradio.lang.Class(), b = {id: "bs",content: "多点击<span id='promotionbar-love'></span>和<span id='promotionbar-hate'></span>按钮,好音乐会主动来找你~",onclick: function() {
}};
a.extend({test: function(a, d) {
return "operation" != d ? null : "skip" != a.operation ? null : b
}});
return a
};
bradio.namespace("bradio.ui.pstrategies");
bradio.ui.pstrategies.ChannelDescription = function() {
var a = bradio.lang.Class(), b = -1, c = bradio.core.Constant.ChannelDescriptions, d = {id: "cd",content: "",onclick: function() {
}};
a.extend({test: function(a, f) {
if ("currentChannel" != f)
return null;
++b;
if (1 > b)
return null;
for (var g = c.length; g-- && c[g].channel != a.currentChannel.getId(); )
;
return -1 != g ? (d.content = c[g].content, d.onclick = c[g].onclick ? c[g].onclick : function() {
}, d) : null
}});
return a
};
bradio.namespace("bradio.ui.pstrategies");
bradio.ui.pstrategies.RedirectToPrivate = function() {
var a = bradio.lang.Class(), b = -1, c = {id: "rd",content: "",onclick: function() {
FM.loadChannel("private")
}};
a.extend({test: function(a, e) {
if ("userInfo" == e) {
if (-1 < b || a.currentChannel && !/public/.test(a.currentChannel.getId()))
return null;
a.kv.newUser ? c.content = a.user.getLogined() ? "私人频道,帮你发现更多好音乐" : "登陆后去私人频道,可以推荐更多符合口味的歌曲" : a.user.getLogined() && (c.content = "私人频道,帮你发现更多你可能喜欢的好音乐");
if ("" == c.content)
return null;
b++;
return c
}
}});
return a
};
bradio.namespace("bradio.ui.pstrategies");
bradio.ui.pstrategies.Init = function() {
var a = bradio.lang.Class(), b = -1, c = [{id: "w",test: function() {
return !0
},content: "关注官方微博,了解百度随心听更多动态",onclick: function() {
window.open("http://weibo.com/baidufm")
}}, {id: "m",test: function() {
return !0
},content: "打开手机浏览器直接访问 fm.baidu.com,手机也能随心听 (iPhone或安卓)",onclick: function() {
}}, {id: "f",test: function() {
return /Firefox|MSIE/.test(navigator.userAgent)
},content: "添加百度随心听到收藏夹,直接访问更快捷",onclick: function() {
$.add2fav("http://fm.baidu.com/", "百度随心听")
}}, {id: "f",test: function() {
return /Chrome/.test(navigator.userAgent)
},
content: "按Ctrl+D,收藏百度随心听,让好音乐发现你。",onclick: function() {
}}, {id: "s",test: function() {
return /Windows/.test(navigator.userAgent) && !/from=sk/.test(document.location.href)
},content: "点击添加百度随心听快捷方式至桌面,直接访问更快捷",onclick: function() {
window.open("/static/etc/BaiduFM.exe")
}}, {id: "cp",test: function() {
return /Chrome/.test(navigator.userAgent)
},content: "点击这里,去Chrome应用商店安装百度随心听插件,打开浏览器就能听",onclick: function() {
window.open("https://chrome.google.com/webstore/detail/%E7%99%BE%E5%BA%A6%E9%9A%8F%E5%BF%83%E5%90%AC/kpbmmodojkohjcmflidhblekanbgjmcl")
}},
{id: "w8",test: function() {
return /Windows NT 6\.2/.test(navigator.userAgent)
},content: "安装百度随心听win 8版本,歌曲播放更流畅",onclick: function() {
/MSIE/.test(navigator.userAgent) ? window.open("ms-windows-store:PDP?PFN=BaiduMusic.BaiduFM_mnx5vnspd98s0") : window.open("http://apps.microsoft.com/webpdp/app/baidu-fm/76004d7d-3a25-4211-8ecf-8abb44cbf61a")
}}, {id: "ie6",test: function() {
return !1
},content: "安装百度浏览器,歌曲播放更流畅",onclick: function() {
window.open("http://liulanqi.baidu.com/")
}}];
a.extend({test: function(a, e, f, g) {
if (0 < g)
return null;
b++;
if (0 < b)
return null;
for (a = c.length; a-- && !(c[a].test() && -1 == $.inArray(c[a].id, f)); )
;
return -1 != a ? c[a] : null
}});
return a
};
bradio.namespace("bradio.ui.pstrategies");
bradio.ui.pstrategies.SkipInRow = function() {
var a = bradio.lang.Class(), b = 0, c = {id: "sir",content: "",onclick: function() {
FM.loadChannel("private")
}};
a.extend({test: function(a, e) {
if ("operation" != e)
return null;
"skip" != a.operation ? b = 0 : b++;
return 10 > b ? null : /public/.test(a.currentChannel.getId()) ? (c.content = a.user.getLogined() ? "试试私人频道,发现更多好音乐" : "登陆后,去私人频道,推荐歌曲更符合喜好", c) : null
}});
return a
};
bradio.namespace("bradio.ui");
bradio.ui.FX = function() {
var a = bradio.lang.Class(), b = !($.browser.msie && 9 > $.browser.version);
a.extend({fadeIn: function(a, d) {
d = d || {};
if (b)
a.fadeIn(d.duration || 400, d.onafterfinish);
else if (a.show(), "undefined" != typeof d.onafterfinish)
d.onafterfinish()
},fadeOut: function(a, d) {
d = d || {};
if (b)
a.fadeOut(d.duration || 400, d.onafterfinish);
else if (a.hide(), "undefined" != typeof d.onafterfinish)
d.onafterfinish()
},scrollTo: function(a, b) {
$.browser.safari ? (a.scrollTop(b[0]), a.scrollLeft(b[1])) : a.animate({scrollTop: b[0],
scrollLeft: b[1]}, 400)
},opacity: function(a, d) {
if (b)
d.onafterfinish = function() {
0 == d.to && a.hide()
}, a.fadeTo(400, d.to, d.onafterfinish);
else if (d.to > d.from ? a.show() : a.hide(), "undefined" != typeof d.onafterfinish)
d.onafterfinish()
},digitRoll: function(a, d) {
d.from = d.from || 0;
d.to = d.to || 0;
a.html(d.from);
if (0 != d.from - d.to)
if (!b || $.browser.msie)
a.text(d.to);
else {
var e = d.from + "", f = d.to - d.from, g = d.from, i = a.clone(), j = g + f + "", n = g = "", l = "", l = -1;
if (j.length != e.length)
n = e, l = j;
else {
for (; ++l < e.length && e.substr(l, 1) == j.substr(l,
1); )
g += e.substr(l, 1);
n = e.substr(l);
l = j.substr(l)
}
var e = a.outerHeight(), m = a.outerWidth();
a.html(j);
i.attr("id", "").css("height", e + "px").css("width", (0 < f ? a.outerWidth() : m) + "px").css("position", "absolute").css("left", 0).css("top", 0).css("padding", "0 0 0 25px").css("border", "none").css("overflow-y", "hidden");
a.parent().css("position", "relative");
j = "digitRoll" + +new Date;
0 < f ? (m = n, n = l) : m = l;
i.html(bradio.lang.string.format('#{same}<span style="position:relative;vertical-align: top;top:0;padding:0;margin:0;border:none"><i id="#{id}" style="font-style:normal;position:absolute; line-height:#{height}px;top:0;padding:0;margin:0;border:none;">#{num1}<br>#{num2}</i></span>',
{same: g,num1: m,num2: n,id: j,height: e}));
a.css("visibility", "hidden");
a.parent().append(i);
0 > f && $("#" + j).css({top: -1 * e + "px"});
$("#" + j).animate({top: 0 < f ? -1 * e : 0}, 400, function() {
a.css("visibility", "visible");
i.remove()
})
}
}});
return a
};
bradio.namespace("bradio.ui");
bradio.ui.Lyrics = function() {
var a = bradio.lang.Class();
bradio.ui.FX();
var b, c = [], d = $("#playerpanel-lyrics"), e = $("#playerpanel-lyrics-wrapper");
$("#playerpanel-lyrics-outter");
var f = 0, g = !1, i = /\[(.*?)\](.*?)(?=(\[|$))/igm, j = 0, n = !1, l = !1, m = null, k = function() {
m && (clearTimeout(m), m = null)
}, q = function() {
d.html("");
var a = "", b, e, f;
e = 0;
for (f = c.length; e < f; e++)
a += "<li id='lyrics-li-" + e + "'>" + c[e].content + "</li>";
d.append(a);
e = 0;
for (f = c.length; e < f; e++)
b = $("#lyrics-li-" + e), b.attr("data-top", b.position().top);
g = g ||
"" != a
}, u = function() {
if (!n) {
var a;
for (a = c.length; a-- && c[a].time > f; )
;
a = Math.min(Math.max(a, 0), c.length - 1);
var b = -1;
if (a != j || l) {
k();
l = !1;
var b = j, d = j = a;
$("#lyrics-li-" + b).removeClass("current");
$("#lyrics-li-" + d).addClass("current");
a -= 3;
0 > a ? e.animate({scrollTop: 0,scrollLeft: 0}, 100) : (a = $("#lyrics-li-" + a).attr("data-top"), e.animate({scrollTop: a,scrollLeft: 0}, 400))
}
}
}, s = function(a, b) {
return a.time == b.time ? 0 : a.time > b.time ? 1 : -1
};
a.extend({load: function(a) {
var d = a.replace(/\n|\r/gmi, " "), a = {}, e = [], f = 0, e = 0,
j = "", k = 0, a = 0;
g = !1;
c = [];
i.lastIndex = 0;
if (i.test(d)) {
for (; a = i.exec(d); ) {
e = a[1].split(":");
j = a[2];
switch (e[0]) {
case "offset":
f = parseInt(e[1])
}
if (/^\d+$/i.test(e[0]))
if (e = 1E3 * (60 * parseInt(a[1].substr(0, 2)) + parseFloat(a[1].substring(3))) - f, " " == j && (j = " "), c.push({time: e,content: j}), "" == j)
k = c.length - 1;
else {
for (a = c.length - 1; a-- > k; )
if ("" == c[a].content && (c[a].content = j), c[a].time > e && " " == c[a].content)
c[a].content = j;
k = c.length
}
}
c = c.sort(s)
} else {
d = d.split(" ");
f = (b.getDuration() - 1E3) / d.length;
a = 0;
for (j = d.length; a <
j; a++)
c.push({time: a * f + 1E3,content: d[a]})
}
q()
},reset: function() {
},refresh: function() {
g || q();
u()
},setPosition: function(a) {
0 != c.length && !(1E3 > Math.abs(a - f)) && (f = a, u())
},setCurrentSong: function(a) {
b = a
}});
var o = $(e), r = o.get(0), v = $(document);
e.css({cursor: "pointer"});
o.on("mousedown", function(a) {
var b = o.scrollTop(), c = a.clientY, d = c;
r.setCapture ? r.setCapture() : window.captureEvents && window.captureEvents(Event.MOUSEMOVE | Event.MOUSEUP);
v.on("mousemove", function(a) {
k();
n = !0;
d = c;
c = a.clientY;
b -= c - d;
o.scrollTop(b)
});
v.on("mouseup", function() {
v.off("mousemove");
v.off("mouseup");
r.releaseCapture ? r.releaseCapture() : window.captureEvents && window.captureEvents(Event.MOUSEMOVE | Event.MOUSEUP);
n = !1;
k();
m = setTimeout(function() {
l = !0;
u()
}, 400)
})
});
return a
};
bradio.namespace("bradio.ui");
bradio.ui.PlayerPanel = function() {
var a = bradio.lang.Bindable(), b = bradio.core.Event.UI.Player, c = bradio.ui.FX(), d = bradio.data.enumerable.Song(), e = bradio.data.enumerable.Song(), f = bradio.data.enumerable.Channel(), g = bradio.data.enumerable.User(), i = $("#playerpanel"), j = $("#playerpanel-btnplay"), n = $("#playerpanel-btnlove"), l = $("#playerpanel-btnhate"), m = $("#playerpanel-btnskip"), k = $("#playerpanel-prev-song"), q = $("#playerpanel-btnmute"), u = $("#playerpanel-btndownload"), s = $("#playerpanel-coverimg"), o = $("#playerpanel-cover-overlay"),
r = $("#playerpanel-prev-song-img"), v = $("#playerpanel-prev-song-overlay"), x = $("#playerpanel-timeinfo"), y = $("#playerpanel-songname"), z = $("#playerpanel-linkname"), w = $("#playerpanel-artistname-wrapper"), A = $("#playerpanel-albumname"), E = bradio.ui.Slider($("#playerpanel-volume")), t = $("#playerpanel-lyrics-outter"), D = "", B, C = function(a) {
D = a.status;
a = "";
switch (D) {
case "play":
F();
j.removeClass("play").addClass("pause");
a = "暂停[空格键]";
break;
case "pause":
j.removeClass("pause").addClass("play");
a = "播放[空格键]";
I();
break;
default:
j.removeClass("play").addClass("pause"), a = "暂停[空格键]"
}
j.attr("title", d.getIsAd() ? "" : a);
n.attr("title", d.getIsAd() ? "" : "喜欢这首歌");
l.attr("title", d.getIsAd() ? "" : "不喜欢这首歌");
m.attr("title", d.getIsAd() ? "" : "切歌[→]");
$("#playerpanel-coverimg a").attr("title", d.getIsAd() ? "" : a)
}, I = function(a) {
a = a || "点击继续播放";
$("#playerpanel-cover-overlay-text").text() != a && $("#playerpanel-cover-overlay-text").text(a);
o.hide().removeClass("hidden");
c.opacity(o, {from: 0,to: 1})
}, F = function() {
"block" == o.css("display") && c.opacity(o,
{from: 1,to: 0})
}, G = function(a) {
return function() {
d.getIsAd() || a()
}
};
a.extend({setTimeInfo: function(a) {
a != x.text() && x.text(a)
},setPlayStatus: C,setCurrentSong: function(e, f) {
if (e && (d = e, d.getRelateStatus(), d.getChannel(), d.getLoved() != n.hasClass("loved") && (d.getLoved() && g.getLogined() ? n.addClass("loved") : n.removeClass("loved")), n.attr("title", d.getLoved() ? "不再喜欢这首歌" : "喜欢这首歌"), "update" != f)) {
C("play");
x.text("-" + bradio.lang.string.convertTime(d.getDuration()));
bradio.lang.string.ellipsis(d.getName(), y, 250);
var j = "", j = d.getIsAd() ? d.getAdUrl() + "?from=fm" : "http://music.baidu.com/song/" + d.getId() + "?from=fm";
y.attr("title", bradio.lang.string.encodeHTML(d.getName())).attr("href", j);
y.attr("target", "_blank");
"" != d.getAlbum() ? bradio.lang.string.ellipsis(d.getAlbum(), A, 250, "《", "》") : A.text("");
A.attr("title", bradio.lang.string.encodeHTML(d.getAlbum()));
d.albumLinkEnable() ? (j = "", j = d.getIsAd() ? d.getAdUrl() + "?from=fm" : "http://music.baidu.com/album/" + d.getAlbumId() + "?from=fm", A.attr("href", j).removeClass("disable").attr("target",
"_blank")) : A.attr("href", "javascript:void(0);").addClass("disable").attr("target", "");
1 < d.getResourceType() ? (z.attr("title", bradio.lang.string.encodeHTML(d.getShowLink())).attr("href", "javascript:void(0);").attr("onclick", "return false;").click(function() {
a.trigger(b.DOWNLOAD)
}), bradio.lang.string.ellipsis(d.getShowLink(), z, 250, "", "", "center"), t.addClass("minHeight"), z.show()) : (z.hide(), t.removeClass("minHeight"));
w.html("");
$.each(d.getArtists(), function(a, b) {
var c = $('<a href="javascript:void(0);" hideFocus="true" title="" class="playerpanel-artistname" target="_blank"></a>').attr("title",
bradio.lang.string.encodeHTML(b.getName())).text(b.getName());
if (d.artistLinkEnable() && b.getId() != 0) {
var e = "", e = d.getIsAd() ? d.getAdUrl() + "?from=fm" : "http://music.baidu.com/artist/" + b.getId() + "?from=fm";
c.attr("href", e).removeClass("disable").attr("target", "_blank")
} else
c.attr("href", "javascript:void(0);").addClass("disable").attr("target", "");
w.append(c);
a < d.getArtists().length - 1 && w.append($("<span class='seperator'>/</span>"))
});
!$.cookie("fm_1p") && ("prev" == f && !d.getLoved()) && (g.getLogined() ? bradio.ui.Tooltip("喜欢这首歌?把它标上<img class='png tooltip-love' src='" +
staticPath + "/images/love.png' />吧~", n, {offsetX: 7}) : bradio.ui.Tooltip("喜欢这首歌?把它标上<img class='png tooltip-love' src='" + staticPath + "/images/love.png' />吧~ <a href='javascript:void(0)' onclick='FM.hideTooltip();FM.showLogin();'>登录</a>", n, {offsetX: 7}), $.cookie("fm_1p", null), $.cookie("fm_1p", 1, {expires: 365}));
var j = function() {
s.html("");
if (d.getCover() != "") {
var a = $("<img/>").attr("width", 240).attr("height", 240).attr("alt", d.getName()).on("load", function() {
c.fadeIn(a, {duration: 400})
});
a.hide();
var b = $("<a />");
b.append(a);
s.append(b);
a.attr("src", d.getCover())
}
}, k = $("#playerpanel-coverimg a img")[0];
k ? $(k).fadeOut(200, j) : j();
d.getIsAd() ? i.addClass("ad") : i.removeClass("ad")
}
},setCurrentChannel: function(a) {
f = a
},setPrevSong: function(a, b) {
if (a && "update" != b) {
var d = !1;
"next" == b && (d = !0);
if ("" == a.getName())
k.hide();
else if (d && "0" != k.css("left") && (k.show(), k.animate({left: 0}, 800, function() {
})), !(e && e.getId() == a.getId()))
if (e = a, k.removeClass("hidden").show(), r.html(""), "" != e.getCover()) {
var f = $("<img />").width(100).height(100).hide(),
d = $("<a />").attr("href", "javascript:void(0);").attr("onclick", "return false;").append(f);
r.append(d);
f.load(function() {
c.fadeIn(f)
}).attr("src", e.getCoverBig())
}
}
},setUserInfo: function(a) {
g.loadRaw(a.raw())
},setVolume: function(a) {
a ? q.removeClass("muted") : q.addClass("muted");
q.attr("title", a ? "静音" : "取消静音");
E.setValue(a)
},showMobileInit: function() {
I("点击开始播放")
}});
o.hide();
k.hide();
v.hide();
j.click(function() {
j.hasClass("pause") ? (a.trigger(b.PAUSE), j.removeClass("pause").addClass("play")) : (a.trigger(b.PLAY),
j.removeClass("play").addClass("pause"))
});
n.click(G(function() {
f.getId() == bradio.core.Constant.Etc.PRIVATE_CHANNEL_ID && ($.cookie("fm_1pl") || bradio.ui.Tooltip("好滴,我们会为您推荐更多这类歌曲", n, {hideDelay: 2E3,offsetX: 7}), $.cookie("fm_1pl"), $.cookie("fm_1pl", 1, {expires: 365}));
g.getLogined() || bradio.ui.Tooltip("马上<a href='javascript:void(0)' onclick='FM.hideTooltip();FM.showLogin();'>登录</a>,收藏到红心频道", n, {offsetX: 7});
n.hasClass("loved") ? a.trigger(b.SONG_DELOVE) : a.trigger(b.SONG_LOVE)
}));
l.click(G(function() {
g.getLogined() ?
($.cookie("fm_1h") || bradio.ui.Tooltip("好的,这首歌不会再出现了", l, {hideDelay: 2E3,offsetX: 7}), $.cookie("fm_1h", null), $.cookie("fm_1h", 1, {expires: 365}), a.trigger(b.SONG_HATE)) : bradio.ui.Tooltip("<a href='javascript:void(0)' onclick='FM.hideTooltip();FM.showLogin();'>登录</a>后可用", l, {offsetX: 7})
}));
m.click(function() {
a.trigger(b.SKIP)
});
k.click(function() {
B && (B.hide(), B = null);
k.animate({left: 145}, 800, function() {
a.trigger(b.PREV);
c.fadeOut(v, {duration: 300})
})
});
if (!bradio.utils.UA().isMobile())
k.on("mouseenter", function() {
c.fadeIn(v,
{duration: 300});
B || (B = bradio.ui.Tooltip(e.getName() + " - " + e.getArtists()[0].getName(), k, {noCloseButton: !0,offsetX: -1}))
}).on("mouseleave", function() {
c.fadeOut(v, {duration: 300});
B && (B.hide(), B = null)
});
o.click(function() {
a.trigger(b.PLAY);
F()
});
q.click(function(a) {
bradio.utils.UA().isMobile() ? a.preventDefault() : q.hasClass("muted") ? E.unmute() : E.mute()
});
u.click(function() {
a.trigger(b.DOWNLOAD)
});
s.click(function() {
a.trigger(b.COVER_CLICK)
});
E.bind(bradio.core.Event.UI.Slider.UPDATE, function(c, d) {
q.hasClass("muted") &&
a.trigger(b.UNMUTE);
a.trigger(b.VOLUME_CHANGE, {volume: d.value})
});
y.click(function() {
a.trigger(b.SONG_CLICK)
});
w.click(function() {
a.trigger(b.ARTIST_CLICK)
});
A.click(function() {
a.trigger(b.ALBUM_CLICK)
});
return a
};
bradio.namespace("bradio.ui");
bradio.ui.Button = function() {
return bradio.lang.Bindable()
};
bradio.namespace("bradio.ui");
bradio.ui.ChannelList = function() {
var a = bradio.lang.Bindable(), b = bradio.core.Event.UI, c = bradio.core.Constant.ChannelDescriptions, d = $("#channellist-top"), e = $("#channellist-bottom"), f = {}, g, i = !1, j = bradio.data.enumerable.User(), n = [{id: bradio.core.Constant.Etc.PRIVATE_CHANNEL_ID,notLoginedTitle: "让好音乐主动找到你,登录可用",loginedTitle: "让好音乐主动找到你"}, {id: bradio.core.Constant.Etc.LOVE_CHANNEL_ID,notLoginedTitle: "收听我喜欢的歌曲,登录可用",loginedTitle: "收听我喜欢的歌曲"}];
a.extend({setChannelList: function(g) {
for (var g = g.getData(), m, k, n =
0, u = g.length; n < u; n++)
m = g[n], f[m.getCateId()] || (f[m.getCateId()] = []), f[m.getCateId()].push(m);
for (var s in f) {
g = f[s];
m = bradio.ui.ChannelCate();
m.setChannelCate({cateName: g[0].getCateName(),cateId: g[0].getCateId()});
n = 0;
for (u = g.length; n < u; n++) {
k = g[n];
var o = bradio.ui.ChannelBtn();
o.setChannelData(k);
k = o;
m.add(k);
k.bind(b.ChannelBtn.CLICK, function(c) {
return function() {
c.getChannelData().getId() == bradio.core.Constant.Etc.LOVE_CHANNEL_ID && (!i && j.getLogined()) && bradio.ui.Tooltip("您还没收藏过歌曲呢,去其他频道把您喜爱的音乐标上红心吧",
$("#channel-btn-lovesongs"));
a.trigger(b.ChannelList.SWITCH, {id: c.getChannelData().getId()})
}
}(k))
}
switch (s) {
case "private":
case "love":
d.append(m.getHTMLElm());
break;
default:
e.append(m.getHTMLElm())
}
}
for (s in c)
$("#channel-btn-" + c[s].channel + " a").attr("title", c[s].content)
},setCurrentChannel: function(a) {
g && !/(artist|tag)/.test(g.getId()) && $("#channel-btn-" + g.getId()).removeClass("channel-btn-current");
g = a;
/(artist|tag)/.test(g.getId()) || (a = $("#channel-btn-" + g.getId())) && a.addClass("channel-btn-current")
},
setLoveSongsAvail: function(a) {
i = a
},setUserInfo: function(a) {
j.loadRaw(a.raw());
for (var b in n)
$("#channel-btn-" + n[b].id + " a").attr("title", j.getLogined() ? n[b].loginedTitle : n[b].notLoginedTitle)
}});
return a
};
bradio.namespace("bradio.ui");
bradio.ui.ChannelBtn = function() {
var a = bradio.lang.Bindable(), b = bradio.core.Event.UI.ChannelBtn, c, d, e = ["private", "lovesongs", "public_tuijian_winter"], f = function(a) {
return "channel-btn-hover" + (-1 < $.inArray(a, e) ? "-" + a : "")
};
a.extend({setChannelData: function(e) {
c = e;
d = $("<li class='channel-btn channel-btn-" + c.getId() + "' id='channel-btn-" + c.getId() + "'><div class='channel-btn-bg' /><div class='channel-btn-border' /><div class='channel-btn-inner'><a href='javascript:void(0);' onclick='return false;'>" + c.getName() +
"</a><div class='channel-btn-icon' /></div></li>");
d.on("mouseover", function() {
d.addClass(f(c.getId()))
}).on("mouseout", function() {
d.removeClass(f(c.getId()))
}).on("click", function() {
a.trigger(b.CLICK, {id: c.getId()})
})
},getChannelData: function() {
return c
},getHTMLElm: function() {
return d
}});
return a
};
bradio.namespace("bradio.ui");
bradio.ui.ChannelCate = function() {
var a = bradio.lang.Class(), b, c;
a.extend({add: function(a) {
c.append(a.getHTMLElm())
},setChannelCate: function(a) {
"private" == a.cateId || "love" == a.cateId || elmName.html(a.cateName)
},getHTMLElm: function() {
return b
}});
b = $("<div class='channel-cate'><div class='channel-cate-name'></div><ul class='channel-cate-list'></ul></div>");
elmName = b.find(".channel-cate-name");
c = b.find(".channel-cate-list");
return a
};
bradio.namespace("bradio.ui");
bradio.ui.ChannelBar = function() {
var a = bradio.lang.Bindable(), b = $("#channelbar-wrap"), c = $("#currentchannel"), d = $("#currentchannel-text"), e = $("#switchchannel"), f = $("#btn-switchchannel"), g = $("#currentchannel-icon"), i = bradio.core.Event.UI.ChannelBar, j = bradio.ui.FX(), n = 1, l = !$.cookie("fm_1"), m = !1;
a.extend({setCurrentChannel: function(c) {
d.text() != c.getName() && ("" == d.text() && (j.fadeIn(b), j.fadeIn($("#channelbar-xmas-deco")), l && (bradio.ui.Tooltip("更多好频道等你来发现~", e, {offsetX: 0,offsetY: 5}).bind(bradio.core.Event.UI.Tooltip.CLOSE,
function() {
a.trigger(i.TIPS_CLOSE)
}), a.trigger(i.TIPS_SHOW), m = !0), l = !1), bradio.lang.string.ellipsis("当前频道:" + c.getName(), d, 150), bradio.core.Constant.Etc.LOVE_CHANNEL_ID == c.getId() && $.cookie("fm_loveSongCollectionUsed", 1, {expires: 365}))
},setSceneIndex: function(a) {
n != a && (n = a, f.html(1 != n ? "返回" : "换台"), c.css("cursor", 1 != n ? "pointer" : "default"))
},setPlayStatus: function(a) {
"pause" == a.status ? g.addClass("paused") : g.removeClass("paused")
}});
e.click(function() {
1 != n ? a.trigger(i.BACK_PLAYER) : (m && a.trigger(i.TIPS_CLICK),
a.trigger(i.SWITCH_CHANNEL))
}).on("mouseenter", function() {
b.addClass("hover")
}).on("mouseleave", function() {
b.removeClass("hover")
});
c.click("click", function() {
1 != n && a.trigger(i.BACK_PLAYER)
});
b.hide().removeClass("hidden");
$("#channelbar-xmas-deco").hide().removeClass("hidden");
return a
};
bradio.namespace("bradio.ui");
bradio.ui.SceneMgr = function() {
var a = bradio.lang.Bindable(), b = $("#main-tab-list"), c = $("#main-tab-list").find(".tab-page"), d = $("body"), e = bradio.core.Event.UI.SceneMgr, f = bradio.ui.FX(), g = 1;
a.extend({switchScene: function(b) {
if (b != g) {
f.scrollTo(d, [0, 0]);
for (var j = 0; j < c.length; j++)
j == b ? f.fadeIn($(c[j])) : $(c[j]).hide();
g = b;
a.trigger(e.PAGE_SWITCH, {index: b})
}
},getCurrentIndex: function() {
return g
}});
$.each(c, function(a, b) {
$(b).hide()
});
b.css("display", "block");
$(c[g]).show();
return a
};
bradio.namespace("bradio.ui");
bradio.ui.ShareBar = function() {
var a = bradio.lang.Bindable(), b = bradio.core.Event.UI.ShareBar;
bradio.data.enumerable.Song();
var c = "tsina tqq qzone renren tieba douban".split(" ");
a.extend({setCurrentSong: function() {
}});
for (var d = c.length - 1; 0 <= d; d--)
$("#playerpanel-share-" + c[d]).click(function(c) {
return function() {
a.trigger(b.SHARE, {target: c})
}
}(c[d]));
return a
};
bradio.namespace("bradio.ui");
bradio.ui.PromotionBar = function() {
var a = bradio.lang.Bindable(), b = bradio.ui.FX(), c = bradio.core.Event.UI.PromotionBar, d = $("#promotionbar"), e = $("#promotionbar-text"), f = $("#promotionbar-close"), g, i = [], j = !1, n = $.cookie("fm_pb") ? $.cookie("fm_pb").split(",") : [], l = 0, m = [bradio.ui.pstrategies.RedirectToPrivate(), bradio.ui.pstrategies.Init(), bradio.ui.pstrategies.ChannelDescription(), bradio.ui.pstrategies.SkipInRow(), bradio.ui.pstrategies.BtnHate(), bradio.ui.pstrategies.BtnLove(), bradio.ui.pstrategies.BtnPrev(),
bradio.ui.pstrategies.BtnSkip()], k = 0, q = function() {
i.length ? j || (j = !0, g = i.pop(), b.fadeOut(d, {onafterfinish: function() {
l++;
lastTimestamp = +new Date;
e.html(g.content);
b.fadeIn(d);
a.trigger(c.SHOW, {id: g.id})
}}), clearTimeout(k), k = setTimeout(function() {
b.fadeOut(d);
j = !1;
q()
}, 3E4)) : j = !1
};
a.extend({test: function(a, b) {
for (var c, d = 0, e = m.length; d < e; d++)
(c = m[d].test(a, b, n, l)) && -1 == $.inArray(c.id, n) && i.push(c);
q()
}});
d.bind("mouseenter", function() {
d.addClass("hover")
}).bind("mouseleave", function() {
d.removeClass("hover")
});
f.click(function(e) {
e.stopPropagation();
n.push(g.id);
b.fadeOut(d);
a.trigger(c.HIDE, {id: g.id})
});
d.click(function() {
a.trigger(c.CLICK, {id: g.id});
g.onclick();
b.fadeOut(d)
});
return a
};
bradio.namespace("bradio.ui");
bradio.ui.FavList = function() {
var a = bradio.lang.Bindable(), b = bradio.data.enumerable.User(), c = bradio.core.Event.UI.FavList, d = bradio.ui.FX(), e = 0, f = 0, g = 0, i = $("#btn-backplayer-userlist"), j = $("#user-list-tabs li.tab a"), n = $("#song-container .song-list-wrapper"), l = -1, m = [], k = [{container: $("#total-listen"),wrapper: $("#total-listen-wrapper")}, {container: $("#like-songs"),wrapper: $("#like-songs-wrapper")}, {container: $("#dislike-songs"),wrapper: $("#dislike-songs-wrapper")}], q = {li: {"data-id": function() {
return this.id
},
"class": function() {
return "" == this.name ? "black" : "white"
}},picWrp: {href: function() {
return "http://music.baidu.com/song/" + this.id
},title: function() {
return "" == this.album ? "" : "查看《" + this.album + "》"
}},pic: {src: function() {
return this.picUrl
},"class": function() {
return "" == this.picUrl ? "hidden" : ""
}},title: {title: function() {
return this.name
},href: function() {
return "http://music.baidu.com/song/" + this.id
},text: function() {
return this.name
}},artists: {artist: {title: function() {
return this.name
},href: function() {
return this.artistLinkEnable ?
"http://music.baidu.com/artist/" + this.id : "javascript:void(0);"
},target: function() {
return this.artistLinkEnable ? "_blank" : ""
},"class": function() {
return this.artistLinkEnable ? "song-artist " : "song-artist linkUnable"
},text: function() {
return this.name
}}},album: {title: function() {
return "" == this.album ? "" : "《" + this.album + "》"
},href: function() {
return this.albumLinkEnable ? "http://music.baidu.com/album/" + this.albumId : "javascript:void(0);"
},target: function() {
return this.albumLinkEnable ? "_blank" : ""
},"class": function() {
return this.albumLinkEnable ?
"song-album clear " : "song-album clear linkUnable"
},text: function() {
return "" == this.album ? "" : "《" + this.album + "》"
}},"song-op1": {style: function() {
return "display: " + (this.showBtnPlay ? "inline-block" : "none")
}},"song-op2": {title: function() {
return this.opt
},"class": function() {
return "icon " + this.status
}}}, u = function(a, b) {
k[a].wrapper.find(".pager").pageNavigator("setParam", b);
void 0 != b.total && k[a].wrapper.find(".pager").css("display", 1 < b.total ? "block" : "none")
}, s = function(a) {
g = a;
v();
$("#user-list-tabs .music-history a").text("我听过的 (" +
a + ")");
u(0, {total: Math.ceil(a)})
}, o = function(a) {
e = a;
v();
$("#user-list-tabs .music-like a").text("我喜欢的 (" + a + ")");
u(1, {total: Math.ceil(a)})
}, r = function(a) {
f = a;
v();
$("#user-list-tabs .music-hate a").text("不喜欢的 (" + a + ")");
u(2, {total: Math.ceil(a)})
}, v = function() {
0 < g ? $("#total-listen-wrapper .song-list-empty").addClass("hidden") : $("#total-listen-wrapper .song-list-empty").removeClass("hidden");
0 < e ? $("#like-songs-wrapper .song-list-empty").addClass("hidden") : $("#like-songs-wrapper .song-list-empty").removeClass("hidden");
0 < f ? $("#dislike-songs-wrapper .song-list-empty").addClass("hidden") : $("#dislike-songs-wrapper .song-list-empty").removeClass("hidden")
}, x = function(b) {
-1 != b && (-1 == l && ($("#total-listen-wrapper .song-list-empty").css("background", ' transparent url("' + staticPath + '/images/uc-history-bg.jpg") no-repeat center center'), $("#like-songs-wrapper .song-list-empty").css("background", 'transparent url("' + staticPath + '/images/uc-love-bg.jpg") no-repeat center center'), $("#dislike-songs-wrapper .song-list-empty").css("background",
'transparent url("' + staticPath + '/images/uc-hate-bg.jpg") no-repeat center center')), -1 != l && k[l].container.html(""), l = b, k[l].container.html(""), $.each(j, function(a, b) {
$(b).removeClass("currentList")
}), $(j[b]).addClass("currentList"), $.each(n, function(a, c) {
a == b ? $(n[a]).removeClass("hidden") : $(c).addClass("hidden")
}), u(l, {page: 1}), a.trigger(c.TAB_SWITCH, {index: l,pageIndex: 0,pageSize: 10}))
}, y = function(a) {
for (var b = m.length; b-- && m[b].getId() != a; )
;
return -1 == b ? bradio.data.enumerable.Song() : m[b]
};
a.extend({setSongsToRender: function(b,
d) {
if (d == l) {
var e = k[l].wrapper, f = "song-normal", g = "收藏", i = e.find(".song-list-inner"), f = e.find(".song-list-empty"), j = [];
m = b;
0 < b.length ? f.addClass("hidden") : f.removeClass("hidden");
i.html("");
for (var n = 0, o = b.length; n < o; n++)
f = "song-normal", g = "收藏", b[n].getLoved() && (f = "song-like", g = "取消收藏"), b[n].getHated() && "dislike-songs-wrapper" == e.attr("id") && (f = "song-hate", g = "移除出垃圾桶"), !b[n].getLoved() && !b[n].getHated() && (f = "song-normal", g = "收藏"), j.push({id: b[n].getId(),name: b[n].getName(),album: b[n].getAlbum(),albumId: b[n].getAlbumId(),
artists: function() {
var a = [], c;
$(b[n].getArtists()).each(function(d, e) {
c = e.raw();
c.artistLinkEnable = b[n].artistLinkEnable();
a.push(c)
});
return a
}(),picUrl: b[n].getCoverSmall(),status: f,opt: g,showBtnPlay: "dislike-songs" != i.attr("id"),artistLinkEnable: b[n].artistLinkEnable(),albumLinkEnable: b[n].albumLinkEnable(),relationStatus: b[n].getRelateStatus()});
$("<ul class='song-list'><li data-bind='li'><div class='album-face'><a data-bind='picWrp' target='_blank'><img data-bind='pic' width=80 height=80 /></a></div><div class='song-summary'><a data-bind='title' target='_blank' class='song-title' hidefocus='true'></a><span data-bind='artists' class='song-artists'><a class='song-artist' data-bind='artist' target='' hidefocus='true'></a></span><a class='song-album clear' data-bind='album' target='' hidefocus='true'></a></div><div class='song-operation'><a href='javascript:void(0)' title='播放' data-bind='song-op1' hidefocus='true' onfocus='this.blur()' class='icon song-play'></a><a href='javascript:void(0)' data-bind='song-op2' hidefocus='true' onfocus='this.blur()'></a></div></li></ul>").render(j,
q).appendTo(i);
$("#song-container").find(".song-list .song-operation .song-normal");
$("#song-container").find(".song-list .song-operation .song-like");
e = $("#song-container").find(".song-list .song-operation .song-hate");
i = $("#song-container").find(".song-list .song-operation .song-play");
$.each($(".song-list .song-operation a"), function(a, b) {
$(b).off("click")
});
$.each(i, function(b, d) {
$(d).click(function() {
var b = $(d).parent().parent().attr("data-id");
a.trigger(c.SONG_PLAY, {song: y(b)})
})
});
$.each($(".song-list .song-operation .song-normal, .song-list .song-operation .song-like"),
function(b, d) {
$(d).click(function() {
var b = $(d).parent().parent().attr("data-id");
$(d).hasClass("song-normal") ? ($(d).attr("class", $(d).attr("class").replace("song-normal", "song-like")), a.trigger(c.SONG_LOVE, {song: y(b)}), $(d).attr("title", "取消收藏")) : $(d).hasClass("song-like") && ($(d).attr("class", $(d).attr("class").replace("song-like", "song-normal")), a.trigger(c.SONG_DELOVE, {song: y(b)}), $(d).attr("title", "收藏"))
})
});
$.each(e, function(b, d) {
$(d).click(function() {
var b = $(d).parent().parent().attr("data-id");
$.each($("#dislike-songs-wrapper .song-list li"), function(d, e) {
var f = $(e).attr("data-id");
b == f && ($(e).remove(), a.trigger(c.SONG_DEHATE, {song: y(b)}))
})
})
})
}
},setHistoryListenCount: s,setLikeSongsCount: o,setDislikeSongsCount: r,showTab: x,setUserInfo: function(a) {
a.getLogined() != b.getLogined() && x(l);
b.loadRaw(a.raw());
if (!b.getLogined())
for (var a = 0, c = k.length; a < c; a++)
k[a].wrapper.find(".song-list-inner").html("")
}});
i.click("click", function() {
a.trigger(c.BACK_PLAYER)
}).on("mouseenter", function() {
i.addClass("hover")
}).on("mouseleave",
function() {
i.removeClass("hover")
});
$.each(j, function(a, b) {
$(b).click(function(a) {
return function() {
x(a)
}
}(a))
});
for (var z = 0, w = k.length; z < w; z++)
k[z].wrapper.find(".pager").pageNavigator({hash: "#",size: 10,pageChange: function(b, e) {
return function(f, g) {
d.scrollTo($("body"), [0, 0]);
a.trigger(c.TAB_SWITCH, {index: b,pageIndex: parseInt(g.page) - 1,pageSize: g.size});
0 == b && g.page == e.pageNavigator("getTotal") + "" ? $("#history-notice").hasClass("hidden") && $("#history-notice").removeClass("hidden") : $("#history-notice").hasClass("hidden") ||
$("#history-notice").addClass("hidden")
}
}(z, k[z].wrapper.find(".pager"))});
s(0);
o(0);
r(0);
return a
};
bradio.namespace("bradio.ui");
bradio.ui.UserBar = function() {
var a = bradio.lang.Bindable(), b = bradio.core.Event.UI.UserBar, c = bradio.ui.FX(), d = 0, e = 0, f = 0, g = bradio.data.enumerable.User(), i = $("#user-bar"), j = $("#userinfo-username"), n = $("#userinfo-listencount"), l = $("#userinfo-lovecount"), m = $("#userinfo-hatecount"), k = $("#userinfo-listencount-fake"), q = $("#userinfo-lovecount-fake"), u = $("#userinfo-hatecount-fake");
$("#userinfo-username-bg");
var s = $("#userinfo-menu-bg"), o = $("#userinfo-menu"), r = $("#userinfo-btn-usercenter"), v = $("#userinfo-btn-logout"),
x = $("#userinfo-menutrigger");
$("#userinfo-menutrigger-debugie6");
var y = null, z = function() {
s.removeClass("hidden");
x.addClass("mHover");
o.show()
}, w = function() {
x.removeClass("mHover");
s.addClass("hidden");
o.hide()
};
a.extend({setUserInfo: function(a) {
g.loadRaw(a.raw());
g.getLogined() ? i.removeClass("notlogined").addClass("logined") : i.removeClass("logined").addClass("notlogined");
$.browser.msie && 7 == $.browser.version && ($("#userinfo-username-out").css("display", "block"), $("#userinfo-username").css("display",
"block"));
bradio.lang.string.ellipsis(g.getUserName(), j, 160)
},setListenCount: function(a) {
g.getLogined() && c.digitRoll(n, {from: d,to: a});
d = a
},setLoveSongCount: function(a) {
g.getLogined() && c.digitRoll(l, {from: e,to: a});
e = a;
!g.getLogined() && !$.cookie("fm_1u") && ($.cookie("fm_1u", 1, {expires: 365}), bradio.ui.Tooltip("看看登录后能做什么?", q, {offsetX: -18,offsetY: 5}));
g.getLogined() && (($.cookie("fm_firstGetLoveInfo") ? ($.cookie("fm_firstGetLoveInfo", 1, {expires: 365}), a && (!$.cookie("fm_loveSongCollection") && $.cookie("fm_loveSongCollectionUsed",
1, {expires: 365}) && $.cookie("fm_loveSongCollection", 1, {expires: 365}) || $.cookie("fm_loveSongCollection", 1, {expires: 365}))) : ($.cookie("fm_firstGetLoveInfo", 1, {expires: 365}), a && $.cookie("fm_loveSongCollection", 1, {expires: 365})), $.cookie("fm_loveSongCollection")) ? $.cookie("fm_loveSongCollectionUsed") || ($.cookie("fm_loveSongCollectionUsed", 1, {expires: 365}), bradio.ui.Tooltip("收藏歌曲可以在红心频道一键播放哦~", l, {offsetX: -18,offsetY: 5})) : ($.cookie("fm_loveSongCollectionUsed", 1, {expires: 365}), $.cookie("fm_loveSongCollection",
1, {expires: 365}), bradio.ui.Tooltip("收藏歌曲可以在红心频道一键播放哦,快试试标红心吧~", l, {offsetX: -18,offsetY: 5})))
},setHateSongCount: function(a) {
g.getLogined() && c.digitRoll(m, {from: f,to: a});
f = a
}});
d = $.trim(n.text()) || 0;
e = $.trim(l.text()) || 0;
f = $.trim(m.text()) || 0;
j.click(function() {
a.trigger(b.USER_CENTER)
});
r.click(function() {
a.trigger(b.USER_CENTER);
w()
});
v.click(function() {
a.trigger(b.LOGOUT);
w()
});
if (bradio.utils.UA().isMobile())
x.click(function() {
s.hasClass("hidden") ? z() : w()
});
else
x.on("mouseenter", function() {
z()
});
if ($.browser.msie && 7 >= $.browser.version)
$("#userinfo-username-wrapper").on("mouseleave", function() {
y = setTimeout(function() {
w()
}, 400)
}), $("#userinfo-menu").on("mouseenter", function() {
y && (clearTimeout(y), y = null)
}), $("#userinfo-menu").on("mouseleave", function() {
w()
});
else
$("#userinfo-username-wrapper").on("mouseleave", function() {
w()
});
n.click(function() {
a.trigger(b.LISTEN_COUNT)
});
l.click(function() {
a.trigger(b.LOVE_COUNT)
});
m.click(function() {
a.trigger(b.HATE_COUNT)
});
k.click(function() {
a.trigger(b.LISTEN_COUNT)
});
q.click(function() {
a.trigger(b.LOVE_COUNT)
});
u.click(function() {
a.trigger(b.HATE_COUNT)
});
return a
};
bradio.namespace("bradio.ui");
bradio.ui.Background = function() {
var a = bradio.lang.Class(), b = $("#body-bg"), c, d = "", e = bradio.ui.FX(), f = [{ids: [bradio.core.Constant.Etc.PRIVATE_CHANNEL_ID],img: "private-bg3.jpg"}, {ids: ["public_xinqing_yonglanwuhou"],img: "public-bg4.jpg"}, {ids: ["public_shiguang_erge"],img: "erge-bg2.jpg"}, {ids: ["public_xinqing_qingsongjiari"],img: "qingsongjiari-bg2.jpg"}, {ids: ["public_xinqing_tianmi"],img: "tianmi-bg.jpg"}];
a.extend({setCurrentChannel: function(a) {
for (var i = f.length; i-- && -1 == $.inArray(a.getId(), f[i].ids); )
;
a = staticPath + "/themes/public-xmas.jpg";
if (a != d) {
d = a;
var j = $("<img />");
$(j).load(function() {
c && (e.fadeOut(c, {duration: 400}), c.remove());
e.fadeIn(j, {onafterfinish: function() {
c = j
}})
});
j.hide();
b.append(j);
j.attr("src", d)
}
},show: function() {
b.show()
},hide: function() {
b.hide()
}});
return a
};
bradio.namespace("bradio.ui");
bradio.ui.Tooltip = function(a, b, c) {
var d = bradio.lang.Bindable(), e = bradio.core.Event.UI.Tooltip, c = c || {}, f = function() {
b.tooltip("destroy")
};
d.extend({show: function() {
c.hideDelay && setTimeout(function() {
f()
}, c.hideDelay)
},hide: f});
b.tooltip({innerHtml: a,autoCloseEnable: !1,closeEnable: !c.noCloseButton,offset: {top: c.offsetY || 0,left: c.offsetX || 0},autoCloseEnable: c.otherClickHide,destroyed: function() {
d.trigger(e.CLOSE)
}});
return d
};
bradio.namespace("bradio.ui");
bradio.ui.Slider = function(a) {
var b = bradio.lang.Bindable(), c = bradio.core.Event.UI.Slider, d = 50, e = !1, f, g = function() {
e && (e = !1);
f.css({width: i() + "%"});
b.trigger(c.UPDATE, {value: i()})
}, i = function() {
return a.slider("option", "value")
};
b.extend({show: function() {
a.removeClass("hidden")
},hide: function() {
a.addClass("hidden")
},setValue: function(b) {
b != i() && a.slider("option", "value", b)
},getValue: i,mute: function() {
d = i();
a.slider("option", "value", 0);
e = !0
},unmute: function() {
a.slider("option", "value", d);
e = !1
}});
a.slider({animate: !1,
range: !1,value: 50,slide: g,change: g});
f = $('<div class="ui-slider-range ui-widget-header" style="left: 0%; width: 50%; "></div>');
f.insertBefore($(".ui-slider-handle"));
return b
};
bradio.namespace("bradio.ui");
bradio.ui.Lightbox = function(a, b) {
var c = bradio.lang.Bindable(), d = bradio.core.Event.UI.Lightbox, e = $("<div />"), f = $("<div />"), g;
c.extend({});
e.addClass("pop-wrapper");
f.addClass("pop").addClass("lightbox");
e.append(f);
f.append($("<div />").addClass("pop-header"));
var i = $("<div />").addClass("pop-cont");
$("<a />").attr("href", "javascript:void(0);").attr("onclick", "return false;").click(function() {
M3.mask.hide(g);
M3.popup.hide(e[0]);
e.remove();
setTimeout(function() {
c.trigger(d.CLICK)
}, 400)
});
g = M3.mask.create(999);
M3.mask.show(g);
M3.popup.show(e[0]);
e.insertBefore($("#overlay"));
i.append(a);
f.append(i);
b();
return c
};
bradio.namespace("bradio.utils");
bradio.utils.Logger = function() {
var a = bradio.lang.Class(), b, c = bradio.core.Event.Log, d = function(a, b) {
_hmt.push(["_trackEvent", "log", a, ""]);
b || (b = {});
var c = {name: a}, d = +new Date, e = [], l = "";
$.extend(c, b);
$.each(c, function(a, b) {
e.push(a + "=" + encodeURIComponent(b))
});
l = e.join("&");
setTimeout(function() {
var a = bradio.core.Constant.Path.LOG_PATH + "?" + l + "&r=" + d, b = new Image, c = "bradio_sio_log_" + Math.floor(2147483648 * Math.random()).toString(36);
window[c] = b;
b.onload = b.onerror = b.onabort = function() {
b.onload = b.onerror =
b.onabort = null;
b = window[c] = null
};
b.src = a
}, 20)
}, e = function(a, b) {
var c = a.type.substring(10);
d(c, b)
};
a.extend({setHost: function(a) {
b = a;
b.bind(c.FIRST_SONG, e);
b.bind(c.SONG_LOVE, e);
b.bind(c.SONG_DELOVE, e);
b.bind(c.SONG_HATE, e);
b.bind(c.SONG_DEHATE, e);
b.bind(c.SONG_SKIP, e);
b.bind(c.SONG_PREV, e);
b.bind(c.SONG_LINK, e);
b.bind(c.SONG_LINL_FAIL, e);
b.bind(c.SONG_INFO_LOADED, e);
b.bind(c.SONG_INFO_ITEM_ERROR, e);
b.bind(c.SONG_INFO_FAILED, e);
b.bind(c.SONG_INFO_ALL_FAILED, e);
b.bind(c.PLAY_TIMEOUT, e);
b.bind(c.PLAY_START,
e);
b.bind(c.PLAY_SONG, e);
b.bind(c.PLAY_COMPLETE, e);
b.bind(c.PLAY_RESULT, e);
b.bind(c.PLAY_END, e);
b.bind(c.PLAY_ERROR, e);
b.bind(c.PLAY_NOLINK, e);
b.bind(c.PLAY_60S, e);
b.bind(c.PLAY_100MS, e);
b.bind(c.PLAY_LOAD_ERROR, e);
b.bind(c.BTN_LOVE, e);
b.bind(c.BTN_PLAY_PAUSE, e);
b.bind(c.BTN_SOUND_ON, e);
b.bind(c.BTN_SOUND_OFF, e);
b.bind(c.BTN_DOWNLOAD, e);
b.bind(c.CHANNEL_SELECTOR, e);
b.bind(c.CHANNEL_DEFAULT, e);
b.bind(c.CHANEL_CHANGE, e);
b.bind(c.CHANNEL_DURATION, e);
b.bind(c.COVER_CLICK, e);
b.bind(c.SHARE, e);
b.bind(c.CHANGE_CHANNEL_BY_ARTIST,
e);
b.bind(c.PROMOTIONBAR_SHOW, e);
b.bind(c.PROMOTIONBAR_HIDE, e);
b.bind(c.PROMOTIONBAR_CLICK, e);
b.bind(c.CHANNELBAR_TIPS_CLICK, e);
b.bind(c.CHANNELBAR_TIPS_SHOW, e);
b.bind(c.CHANNELBAR_TIPS_CLOSE, e)
},log: function(a, b) {
d(a, b)
}});
return a
};
bradio.namespace("bradio.utils");
bradio.utils.NSLogger = function() {
var a = bradio.lang.Class(), b, c = bradio.core.Event.NSLog, d = function(a, b) {
var b = b || {}, c = {type: a,ref: "radio",pid: 304,url: "",username: b.user || ""}, d = +new Date, e = [], l = "";
$.extend(c, b);
$.each(c, function(a, b) {
e.push(a + "=" + encodeURIComponent(b))
});
l = e.join("&");
setTimeout(function() {
var a = bradio.core.Constant.Path.LOG_PATH_NS + "?" + l + "&r=" + d, b = new Image, c = "bradio_ns_sio_log_" + Math.floor(2147483648 * Math.random()).toString(36);
window[c] = b;
b.onload = b.onerror = b.onabort = function() {
b.onload =
b.onerror = b.onabort = null;
b = window[c] = null
};
b.src = a
}, 20)
}, e = function(a, b) {
var c = a.type.substring(12);
d(c, b)
};
a.extend({setHost: function(a) {
b = a;
b.bind(c.FIRST_SONG, e);
b.bind(c.SONG_LOVE, e);
b.bind(c.SONG_DELOVE, e);
b.bind(c.SONG_HATE, e);
b.bind(c.SONG_DEHATE, e);
b.bind(c.SONG_SKIP, e);
b.bind(c.SONG_PREV, e);
b.bind(c.SONG_INFO_LOADED, e);
b.bind(c.SONG_INFO_FAILED, e);
b.bind(c.PLAY_START, e);
b.bind(c.PLAY_COMPLETE, e);
b.bind(c.PLAY_END, e);
b.bind(c.PLAY_ERROR, e);
b.bind(c.PLAY_60S, e);
b.bind(c.PLAY_100MS, e);
b.bind(c.PLAY_LOAD_ERROR,
e);
b.bind(c.BTN_PLAY_PAUSE, e);
b.bind(c.BTN_DOWNLOAD, e);
b.bind(c.CHANNEL_SELECTOR, e);
b.bind(c.CHANEL_CHANGE, e);
b.bind(c.COVER_CLICK, e);
b.bind(c.SHARE, e);
b.bind(c.CLICK, e)
},log: function(a, b) {
d(a, b)
}});
return a
};
bradio.namespace("bradio.utils");
bradio.utils.Share = function() {
var a = bradio.lang.Class(), b = function(a, b, c) {
return encodeURIComponent("http://fm.baidu.com/#/play/" + (-1 != $.inArray(c.getId(), ["lovesongs", "private"]) ? "" : c.getId() + "/") + b.getId() + "/share/" + a)
}, c = function(a, b, c) {
c = /频道/.test(c.getName()) ? c.getName() : c.getName() + "电台";
return encodeURIComponent("推荐 " + ("tieba" == a ? "" : "♪") + b.getArtists()[0].getName() + " 的《" + b.getName() + "》(来自 " + c + ("tsina" == a ? " @百度随心听" : "") + ")")
};
a.extend({share: function(a, e, f) {
if (3 <= e.getResourceType())
bradio.ui.Tooltip("您不能分享该歌曲",
$("#playerpanel-share-" + a));
else {
var g = "http://share.baidu.com/s?", i = ["url=" + b(a, e, f), "uid=41163", "to=" + a, "type=text", "pic=" + encodeURIComponent(e.getCover()), "title=" + c(a, e, f), "desc=", "sign=off", "searchPic=0", "key=2239739986"], g = g + i.join("&"), a = "http://s.share.baidu.com/commit?url=" + b("", e, f) + "&title=" + c("", e, f) + "&uid=41163&to=" + a, j = new Image, n = "bradio_share_" + Math.floor(2147483648 * Math.random()).toString(36);
window[n] = j;
j.onload = j.onerror = j.onabort = function() {
j.onload = j.onerror = j.onabort = null;
j =
window[n] = null
};
j.src = a;
window.open(g)
}
}});
window.testJsonp = function() {
};
return a
};
bradio.namespace("bradio.utils");
bradio.utils.UA = function() {
var a = bradio.lang.Class();
a.extend({isMobile: function() {
return /(iPad|iPhone|Android)/.test(navigator.userAgent)
}});
return a
};
fmSetup = function() {
var a = bradio.core.FM();
a.setChannelList(rawChannelList);
a.setLoginInfo(rawLoginInfo);
window.FM = a
};
$(document).ready(function() {
bradio.data.providable.Cookie();
fmSetup()
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment