").css({position:"absolute",width:b.outerWidth(),height:b.outerHeight()}).appendTo(b.parent()).offset(b.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(b){return a(b.target).closest(".ui-dialog").length?!0:!!a(b.target).closest(".ui-datepicker").length},_createOverlay:function(){if(this.options.modal){var b=this,c=this.widgetFullName;a.ui.dialog.overlayInstances||this._delay(function(){a.ui.dialog.overlayInstances&&this.document.bind("focusin.dialog",function(d){b._allowInteraction(d)||(d.preventDefault(),a(".ui-dialog:visible:last .ui-dialog-content").data(c)._focusTabbable())})}),this.overlay=a("
").addClass("ui-widget-overlay ui-front").appendTo(this._appendTo()),this._on(this.overlay,{mousedown:"_keepFocus"}),a.ui.dialog.overlayInstances++}},_destroyOverlay:function(){this.options.modal&&this.overlay&&(a.ui.dialog.overlayInstances--,a.ui.dialog.overlayInstances||this.document.unbind("focusin.dialog"),this.overlay.remove(),this.overlay=null)}}),a.ui.dialog.overlayInstances=0,a.uiBackCompat!==!1&&a.widget("ui.dialog",a.ui.dialog,{_position:function(){var b,c=this.options.position,d=[],e=[0,0];c?(("string"==typeof c||"object"==typeof c&&"0"in c)&&(d=c.split?c.split(" "):[c[0],c[1]],1===d.length&&(d[1]=d[0]),a.each(["left","top"],function(a,b){+d[a]===d[a]&&(e[a]=d[a],d[a]=b)}),c={my:d[0]+(0>e[0]?e[0]:"+"+e[0])+" "+d[1]+(0>e[1]?e[1]:"+"+e[1]),at:d.join(" ")}),c=a.extend({},a.ui.dialog.prototype.options.position,c)):c=a.ui.dialog.prototype.options.position,b=this.uiDialog.is(":visible"),b||this.uiDialog.show(),this.uiDialog.position(c),b||this.uiDialog.hide()}})}(jQuery),function(a,b){a.widget("ui.progressbar",{version:"1.10.3",options:{max:100,value:0,change:null,complete:null},min:0,_create:function(){this.oldValue=this.options.value=this._constrainedValue(),this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min}),this.valueDiv=a("").appendTo(this.element),this._refreshValue()},_destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.valueDiv.remove()},value:function(a){return a===b?this.options.value:(this.options.value=this._constrainedValue(a),this._refreshValue(),b)},_constrainedValue:function(a){return a===b&&(a=this.options.value),this.indeterminate=a===!1,"number"!=typeof a&&(a=0),this.indeterminate?!1:Math.min(this.options.max,Math.max(this.min,a))},_setOptions:function(a){var b=a.value;delete a.value,this._super(a),this.options.value=this._constrainedValue(b),this._refreshValue()},_setOption:function(a,b){"max"===a&&(b=Math.max(this.min,b)),this._super(a,b)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var b=this.options.value,c=this._percentage();this.valueDiv.toggle(this.indeterminate||b>this.min).toggleClass("ui-corner-right",b===this.options.max).width(c.toFixed(0)+"%"),this.element.toggleClass("ui-progressbar-indeterminate",this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=a("
").appendTo(this.valueDiv))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":b}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==b&&(this.oldValue=b,this._trigger("change")),b===this.options.max&&this._trigger("complete")}})}(jQuery),function(a){var b=5;a.widget("ui.slider",a.ui.mouse,{version:"1.10.3",widgetEventPrefix:"slide",options:{animate:!1,distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},_create:function(){this._keySliding=!1,this._mouseSliding=!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"),this._refresh(),this._setOption("disabled",this.options.disabled),this._animateOff=!1},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var b,c,d=this.options,e=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),f="
",g=[];for(c=d.values&&d.values.length||1,e.length>c&&(e.slice(c).remove(),e=e.slice(0,c)),b=e.length;c>b;b++)g.push(f);this.handles=e.add(a(g.join("")).appendTo(this.element)),this.handle=this.handles.eq(0),this.handles.each(function(b){a(this).data("ui-slider-handle-index",b)})},_createRange:function(){var b=this.options,c="";b.range?(b.range===!0&&(b.values?b.values.length&&2!==b.values.length?b.values=[b.values[0],b.values[0]]:a.isArray(b.values)&&(b.values=b.values.slice(0)):b.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?this.range.removeClass("ui-slider-range-min ui-slider-range-max").css({left:"",bottom:""}):(this.range=a("
").appendTo(this.element),c="ui-slider-range ui-widget-header ui-corner-all"),this.range.addClass(c+("min"===b.range||"max"===b.range?" ui-slider-range-"+b.range:""))):this.range=a([])},_setupEvents:function(){var a=this.handles.add(this.range).filter("a");this._off(a),this._on(a,this._handleEvents),this._hoverable(a),this._focusable(a)},_destroy:function(){this.handles.remove(),this.range.remove(),this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-widget ui-widget-content ui-corner-all"),this._mouseDestroy()},_mouseCapture:function(b){var c,d,e,f,g,h,i,j,k=this,l=this.options;return l.disabled?!1:(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),c={x:b.pageX,y:b.pageY},d=this._normValueFromMouse(c),e=this._valueMax()-this._valueMin()+1,this.handles.each(function(b){var c=Math.abs(d-k.values(b));(e>c||e===c&&(b===k._lastChangedValue||k.values(b)===l.min))&&(e=c,f=a(this),g=b)}),h=this._start(b,g),h===!1?!1:(this._mouseSliding=!0,this._handleIndex=g,f.addClass("ui-state-active").focus(),i=f.offset(),j=!a(b.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=j?{left:0,top:0}:{left:b.pageX-i.left-f.width()/2,top:b.pageY-i.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,g,d),this._animateOff=!0,!0))},_mouseStart:function(){return!0},_mouseDrag:function(a){var b={x:a.pageX,y:a.pageY},c=this._normValueFromMouse(b);return this._slide(a,this._handleIndex,c),!1},_mouseStop:function(a){return this.handles.removeClass("ui-state-active"),this._mouseSliding=!1,this._stop(a,this._handleIndex),this._change(a,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(a){var b,c,d,e,f;return"horizontal"===this.orientation?(b=this.elementSize.width,c=a.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(b=this.elementSize.height,c=a.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),d=c/b,d>1&&(d=1),0>d&&(d=0),"vertical"===this.orientation&&(d=1-d),e=this._valueMax()-this._valueMin(),f=this._valueMin()+d*e,this._trimAlignValue(f)},_start:function(a,b){var c={handle:this.handles[b],value:this.value()};return this.options.values&&this.options.values.length&&(c.value=this.values(b),c.values=this.values()),this._trigger("start",a,c)},_slide:function(a,b,c){var d,e,f;this.options.values&&this.options.values.length?(d=this.values(b?0:1),2===this.options.values.length&&this.options.range===!0&&(0===b&&c>d||1===b&&d>c)&&(c=d),c!==this.values(b)&&(e=this.values(),e[b]=c,f=this._trigger("slide",a,{handle:this.handles[b],value:c,values:e}),d=this.values(b?0:1),f!==!1&&this.values(b,c,!0))):c!==this.value()&&(f=this._trigger("slide",a,{handle:this.handles[b],value:c}),f!==!1&&this.value(c))},_stop:function(a,b){var c={handle:this.handles[b],value:this.value()};this.options.values&&this.options.values.length&&(c.value=this.values(b),c.values=this.values()),this._trigger("stop",a,c)},_change:function(a,b){if(!this._keySliding&&!this._mouseSliding){var c={handle:this.handles[b],value:this.value()};this.options.values&&this.options.values.length&&(c.value=this.values(b),c.values=this.values()),this._lastChangedValue=b,this._trigger("change",a,c)}},value:function(a){return arguments.length?(this.options.value=this._trimAlignValue(a),this._refreshValue(),void this._change(null,0)):this._value()},values:function(b,c){var d,e,f;if(arguments.length>1)return this.options.values[b]=this._trimAlignValue(c),this._refreshValue(),void this._change(null,b);if(!arguments.length)return this._values();if(!a.isArray(arguments[0]))return this.options.values&&this.options.values.length?this._values(b):this.value();for(d=this.options.values,e=arguments[0],f=0;d.length>f;f+=1)d[f]=this._trimAlignValue(e[f]),this._change(null,f);this._refreshValue()},_setOption:function(b,c){var d,e=0;switch("range"===b&&this.options.range===!0&&("min"===c?(this.options.value=this._values(0),this.options.values=null):"max"===c&&(this.options.value=this._values(this.options.values.length-1),this.options.values=null)),a.isArray(this.options.values)&&(e=this.options.values.length),a.Widget.prototype._setOption.apply(this,arguments),b){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":for(this._animateOff=!0,this._refreshValue(),d=0;e>d;d+=1)this._change(null,d);this._animateOff=!1;break;case"min":case"max":this._animateOff=!0,this._refreshValue(),this._animateOff=!1;break;case"range":this._animateOff=!0,this._refresh(),this._animateOff=!1}},_value:function(){var a=this.options.value;return a=this._trimAlignValue(a)},_values:function(a){var b,c,d;if(arguments.length)return b=this.options.values[a],b=this._trimAlignValue(b);if(this.options.values&&this.options.values.length){for(c=this.options.values.slice(),d=0;c.length>d;d+=1)c[d]=this._trimAlignValue(c[d]);return c}return[]},_trimAlignValue:function(a){if(this._valueMin()>=a)return this._valueMin();if(a>=this._valueMax())return this._valueMax();var b=this.options.step>0?this.options.step:1,c=(a-this._valueMin())%b,d=a-c;return 2*Math.abs(c)>=b&&(d+=c>0?b:-b),parseFloat(d.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var b,c,d,e,f,g=this.options.range,h=this.options,i=this,j=this._animateOff?!1:h.animate,k={};this.options.values&&this.options.values.length?this.handles.each(function(d){c=100*((i.values(d)-i._valueMin())/(i._valueMax()-i._valueMin())),k["horizontal"===i.orientation?"left":"bottom"]=c+"%",a(this).stop(1,1)[j?"animate":"css"](k,h.animate),i.options.range===!0&&("horizontal"===i.orientation?(0===d&&i.range.stop(1,1)[j?"animate":"css"]({left:c+"%"},h.animate),1===d&&i.range[j?"animate":"css"]({width:c-b+"%"},{queue:!1,duration:h.animate})):(0===d&&i.range.stop(1,1)[j?"animate":"css"]({bottom:c+"%"},h.animate),1===d&&i.range[j?"animate":"css"]({height:c-b+"%"},{queue:!1,duration:h.animate}))),b=c}):(d=this.value(),e=this._valueMin(),f=this._valueMax(),c=f!==e?100*((d-e)/(f-e)):0,k["horizontal"===this.orientation?"left":"bottom"]=c+"%",this.handle.stop(1,1)[j?"animate":"css"](k,h.animate),"min"===g&&"horizontal"===this.orientation&&this.range.stop(1,1)[j?"animate":"css"]({width:c+"%"},h.animate),"max"===g&&"horizontal"===this.orientation&&this.range[j?"animate":"css"]({width:100-c+"%"},{queue:!1,duration:h.animate}),"min"===g&&"vertical"===this.orientation&&this.range.stop(1,1)[j?"animate":"css"]({height:c+"%"},h.animate),"max"===g&&"vertical"===this.orientation&&this.range[j?"animate":"css"]({height:100-c+"%"},{queue:!1,duration:h.animate}))},_handleEvents:{keydown:function(c){var d,e,f,g,h=a(c.target).data("ui-slider-handle-index");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(),!this._keySliding&&(this._keySliding=!0,a(c.target).addClass("ui-state-active"),d=this._start(c,h),d===!1))return}switch(g=this.options.step,e=f=this.options.values&&this.options.values.length?this.values(h):this.value(),c.keyCode){case a.ui.keyCode.HOME:f=this._valueMin();break;case a.ui.keyCode.END:f=this._valueMax();break;case a.ui.keyCode.PAGE_UP:f=this._trimAlignValue(e+(this._valueMax()-this._valueMin())/b);break;case a.ui.keyCode.PAGE_DOWN:f=this._trimAlignValue(e-(this._valueMax()-this._valueMin())/b);break;case a.ui.keyCode.UP:case a.ui.keyCode.RIGHT:if(e===this._valueMax())return;f=this._trimAlignValue(e+g);break;case a.ui.keyCode.DOWN:case a.ui.keyCode.LEFT:if(e===this._valueMin())return;f=this._trimAlignValue(e-g)}this._slide(c,h,f)},click:function(a){a.preventDefault()},keyup:function(b){var c=a(b.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(b,c),this._change(b,c),a(b.target).removeClass("ui-state-active"))}}})}(jQuery),function(a,b){function c(){return++e}function d(a){return a.hash.length>1&&decodeURIComponent(a.href.replace(f,""))===decodeURIComponent(location.href.replace(f,""))}var e=0,f=/#.*$/;a.widget("ui.tabs",{version:"1.10.3",delay:300,options:{active:null,collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_create:function(){var b=this,c=this.options;this.running=!1,this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all").toggleClass("ui-tabs-collapsible",c.collapsible).delegate(".ui-tabs-nav > li","mousedown"+this.eventNamespace,function(b){a(this).is(".ui-state-disabled")&&b.preventDefault()}).delegate(".ui-tabs-anchor","focus"+this.eventNamespace,function(){a(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this._processTabs(),c.active=this._initialActive(),a.isArray(c.disabled)&&(c.disabled=a.unique(c.disabled.concat(a.map(this.tabs.filter(".ui-state-disabled"),function(a){return b.tabs.index(a)}))).sort()),this.active=this.options.active!==!1&&this.anchors.length?this._findActive(c.active):a(),this._refresh(),this.active.length&&this.load(c.active)},_initialActive:function(){var c=this.options.active,d=this.options.collapsible,e=location.hash.substring(1);return null===c&&(e&&this.tabs.each(function(d,f){return a(f).attr("aria-controls")===e?(c=d,!1):b}),null===c&&(c=this.tabs.index(this.tabs.filter(".ui-tabs-active"))),(null===c||-1===c)&&(c=this.tabs.length?0:!1)),c!==!1&&(c=this.tabs.index(this.tabs.eq(c)),-1===c&&(c=d?!1:0)),!d&&c===!1&&this.anchors.length&&(c=0),c},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):a()}},_tabKeydown:function(c){var d=a(this.document[0].activeElement).closest("li"),e=this.tabs.index(d),f=!0;if(!this._handlePageNav(c)){switch(c.keyCode){case a.ui.keyCode.RIGHT:case a.ui.keyCode.DOWN:e++;break;case a.ui.keyCode.UP:case a.ui.keyCode.LEFT:f=!1,e--;break;case a.ui.keyCode.END:e=this.anchors.length-1;break;case a.ui.keyCode.HOME:e=0;break;case a.ui.keyCode.SPACE:return c.preventDefault(),clearTimeout(this.activating),this._activate(e),b;case a.ui.keyCode.ENTER:return c.preventDefault(),clearTimeout(this.activating),this._activate(e===this.options.active?!1:e),b;default:return}c.preventDefault(),clearTimeout(this.activating),e=this._focusNextTab(e,f),c.ctrlKey||(d.attr("aria-selected","false"),this.tabs.eq(e).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",e)},this.delay))}},_panelKeydown:function(b){this._handlePageNav(b)||b.ctrlKey&&b.keyCode===a.ui.keyCode.UP&&(b.preventDefault(),this.active.focus())},_handlePageNav:function(c){return c.altKey&&c.keyCode===a.ui.keyCode.PAGE_UP?(this._activate(this._focusNextTab(this.options.active-1,!1)),!0):c.altKey&&c.keyCode===a.ui.keyCode.PAGE_DOWN?(this._activate(this._focusNextTab(this.options.active+1,!0)),!0):b},_findNextTab:function(b,c){function d(){return b>e&&(b=0),0>b&&(b=e),b}for(var e=this.tabs.length-1;-1!==a.inArray(d(),this.options.disabled);)b=c?b+1:b-1;return b},_focusNextTab:function(a,b){return a=this._findNextTab(a,b),this.tabs.eq(a).focus(),a},_setOption:function(a,c){return"active"===a?(this._activate(c),b):"disabled"===a?(this._setupDisabled(c),b):(this._super(a,c),"collapsible"===a&&(this.element.toggleClass("ui-tabs-collapsible",c),c||this.options.active!==!1||this._activate(0)),"event"===a&&this._setupEvents(c),"heightStyle"===a&&this._setupHeightStyle(c),b)},_tabId:function(a){return a.attr("aria-controls")||"ui-tabs-"+c()},_sanitizeSelector:function(a){return a?a.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var b=this.options,c=this.tablist.children(":has(a[href])");b.disabled=a.map(c.filter(".ui-state-disabled"),function(a){return c.index(a)}),this._processTabs(),b.active!==!1&&this.anchors.length?this.active.length&&!a.contains(this.tablist[0],this.active[0])?this.tabs.length===b.disabled.length?(b.active=!1,this.active=a()):this._activate(this._findNextTab(Math.max(0,b.active-1),!1)):b.active=this.tabs.index(this.active):(b.active=!1,this.active=a()),this._refresh()},_refresh:function(){this._setupDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-expanded":"false","aria-hidden":"true"}),this.active.length?(this.active.addClass("ui-tabs-active ui-state-active").attr({"aria-selected":"true",tabIndex:0}),this._getPanelForTab(this.active).show().attr({"aria-expanded":"true","aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)
},_processTabs:function(){var b=this;this.tablist=this._getList().addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").attr("role","tablist"),this.tabs=this.tablist.find("> li:has(a[href])").addClass("ui-state-default ui-corner-top").attr({role:"tab",tabIndex:-1}),this.anchors=this.tabs.map(function(){return a("a",this)[0]}).addClass("ui-tabs-anchor").attr({role:"presentation",tabIndex:-1}),this.panels=a(),this.anchors.each(function(c,e){var f,g,h,i=a(e).uniqueId().attr("id"),j=a(e).closest("li"),k=j.attr("aria-controls");d(e)?(f=e.hash,g=b.element.find(b._sanitizeSelector(f))):(h=b._tabId(j),f="#"+h,g=b.element.find(f),g.length||(g=b._createPanel(h),g.insertAfter(b.panels[c-1]||b.tablist)),g.attr("aria-live","polite")),g.length&&(b.panels=b.panels.add(g)),k&&j.data("ui-tabs-aria-controls",k),j.attr({"aria-controls":f.substring(1),"aria-labelledby":i}),g.attr("aria-labelledby",i)}),this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").attr("role","tabpanel")},_getList:function(){return this.element.find("ol,ul").eq(0)},_createPanel:function(b){return a("
").attr("id",b).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").data("ui-tabs-destroy",!0)},_setupDisabled:function(b){a.isArray(b)&&(b.length?b.length===this.anchors.length&&(b=!0):b=!1);for(var c,d=0;c=this.tabs[d];d++)b===!0||-1!==a.inArray(d,b)?a(c).addClass("ui-state-disabled").attr("aria-disabled","true"):a(c).removeClass("ui-state-disabled").removeAttr("aria-disabled");this.options.disabled=b},_setupEvents:function(b){var c={click:function(a){a.preventDefault()}};b&&a.each(b.split(" "),function(a,b){c[b]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(this.anchors,c),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(b){var c,d=this.element.parent();"fill"===b?(c=d.height(),c-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var b=a(this),d=b.css("position");"absolute"!==d&&"fixed"!==d&&(c-=b.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){c-=a(this).outerHeight(!0)}),this.panels.each(function(){a(this).height(Math.max(0,c-a(this).innerHeight()+a(this).height()))}).css("overflow","auto")):"auto"===b&&(c=0,this.panels.each(function(){c=Math.max(c,a(this).height("").height())}).height(c))},_eventHandler:function(b){var c=this.options,d=this.active,e=a(b.currentTarget),f=e.closest("li"),g=f[0]===d[0],h=g&&c.collapsible,i=h?a():this._getPanelForTab(f),j=d.length?this._getPanelForTab(d):a(),k={oldTab:d,oldPanel:j,newTab:h?a():f,newPanel:i};b.preventDefault(),f.hasClass("ui-state-disabled")||f.hasClass("ui-tabs-loading")||this.running||g&&!c.collapsible||this._trigger("beforeActivate",b,k)===!1||(c.active=h?!1:this.tabs.index(f),this.active=g?a():f,this.xhr&&this.xhr.abort(),j.length||i.length||a.error("jQuery UI Tabs: Mismatching fragment identifier."),i.length&&this.load(this.tabs.index(f),b),this._toggle(b,k))},_toggle:function(b,c){function d(){f.running=!1,f._trigger("activate",b,c)}function e(){c.newTab.closest("li").addClass("ui-tabs-active ui-state-active"),g.length&&f.options.show?f._show(g,f.options.show,d):(g.show(),d())}var f=this,g=c.newPanel,h=c.oldPanel;this.running=!0,h.length&&this.options.hide?this._hide(h,this.options.hide,function(){c.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),e()}):(c.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),h.hide(),e()),h.attr({"aria-expanded":"false","aria-hidden":"true"}),c.oldTab.attr("aria-selected","false"),g.length&&h.length?c.oldTab.attr("tabIndex",-1):g.length&&this.tabs.filter(function(){return 0===a(this).attr("tabIndex")}).attr("tabIndex",-1),g.attr({"aria-expanded":"true","aria-hidden":"false"}),c.newTab.attr({"aria-selected":"true",tabIndex:0})},_activate:function(b){var c,d=this._findActive(b);d[0]!==this.active[0]&&(d.length||(d=this.active),c=d.find(".ui-tabs-anchor")[0],this._eventHandler({target:c,currentTarget:c,preventDefault:a.noop}))},_findActive:function(b){return b===!1?a():this.tabs.eq(b)},_getIndex:function(a){return"string"==typeof a&&(a=this.anchors.index(this.anchors.filter("[href$='"+a+"']"))),a},_destroy:function(){this.xhr&&this.xhr.abort(),this.element.removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible"),this.tablist.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").removeAttr("role"),this.anchors.removeClass("ui-tabs-anchor").removeAttr("role").removeAttr("tabIndex").removeUniqueId(),this.tabs.add(this.panels).each(function(){a.data(this,"ui-tabs-destroy")?a(this).remove():a(this).removeClass("ui-state-default ui-state-active ui-state-disabled ui-corner-top ui-corner-bottom ui-widget-content ui-tabs-active ui-tabs-panel").removeAttr("tabIndex").removeAttr("aria-live").removeAttr("aria-busy").removeAttr("aria-selected").removeAttr("aria-labelledby").removeAttr("aria-hidden").removeAttr("aria-expanded").removeAttr("role")}),this.tabs.each(function(){var b=a(this),c=b.data("ui-tabs-aria-controls");c?b.attr("aria-controls",c).removeData("ui-tabs-aria-controls"):b.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(c){var d=this.options.disabled;d!==!1&&(c===b?d=!1:(c=this._getIndex(c),d=a.isArray(d)?a.map(d,function(a){return a!==c?a:null}):a.map(this.tabs,function(a,b){return b!==c?b:null})),this._setupDisabled(d))},disable:function(c){var d=this.options.disabled;if(d!==!0){if(c===b)d=!0;else{if(c=this._getIndex(c),-1!==a.inArray(c,d))return;d=a.isArray(d)?a.merge([c],d).sort():[c]}this._setupDisabled(d)}},load:function(b,c){b=this._getIndex(b);var e=this,f=this.tabs.eq(b),g=f.find(".ui-tabs-anchor"),h=this._getPanelForTab(f),i={tab:f,panel:h};d(g[0])||(this.xhr=a.ajax(this._ajaxSettings(g,c,i)),this.xhr&&"canceled"!==this.xhr.statusText&&(f.addClass("ui-tabs-loading"),h.attr("aria-busy","true"),this.xhr.success(function(a){setTimeout(function(){h.html(a),e._trigger("load",c,i)},1)}).complete(function(a,b){setTimeout(function(){"abort"===b&&e.panels.stop(!1,!0),f.removeClass("ui-tabs-loading"),h.removeAttr("aria-busy"),a===e.xhr&&delete e.xhr},1)})))},_ajaxSettings:function(b,c,d){var e=this;return{url:b.attr("href"),beforeSend:function(b,f){return e._trigger("beforeLoad",c,a.extend({jqXHR:b,ajaxSettings:f},d))}}},_getPanelForTab:function(b){var c=a(b).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+c))}})}(jQuery),function(a,b,c){"use strict";a.fn.backstretch=function(d,f){return(d===c||0===d.length)&&a.error("No images were supplied for Backstretch"),0===a(b).scrollTop()&&b.scrollTo(0,0),this.each(function(){var b=a(this),c=b.data("backstretch");if(c){if("string"==typeof d&&"function"==typeof c[d])return void c[d](f);f=a.extend(c.options,f),c.destroy(!0)}c=new e(this,d,f),b.data("backstretch",c)})},a.backstretch=function(b,c){return a("body").backstretch(b,c).data("backstretch")},a.expr[":"].backstretch=function(b){return a(b).data("backstretch")!==c},a.fn.backstretch.defaults={centeredX:!0,centeredY:!0,duration:5e3,fade:0};var d={wrap:{left:0,top:0,overflow:"hidden",margin:0,padding:0,height:"100%",width:"100%",zIndex:-999999},img:{position:"absolute",display:"none",margin:0,padding:0,border:"none",width:"auto",height:"auto",maxHeight:"none",maxWidth:"none",zIndex:-999999}},e=function(c,e,g){this.options=a.extend({},a.fn.backstretch.defaults,g||{}),this.images=a.isArray(e)?e:[e],a.each(this.images,function(){a("
")[0].src=this}),this.isBody=c===document.body,this.$container=a(c),this.$root=this.isBody?a(f?b:document):this.$container;var h=this.$container.children(".backstretch").first();if(this.$wrap=h.length?h:a('
').css(d.wrap).appendTo(this.$container),!this.isBody){var i=this.$container.css("position"),j=this.$container.css("zIndex");this.$container.css({position:"static"===i?"relative":i,zIndex:"auto"===j?0:j,background:"none"}),this.$wrap.css({zIndex:-999998})}this.$wrap.css({position:this.isBody&&f?"fixed":"absolute"}),this.index=0,this.show(this.index),a(b).on("resize.backstretch",a.proxy(this.resize,this)).on("orientationchange.backstretch",a.proxy(function(){this.isBody&&0===b.pageYOffset&&(b.scrollTo(0,1),this.resize())},this))};e.prototype={resize:function(){try{var a,c={left:0,top:0},d=this.isBody?this.$root.width():this.$root.innerWidth(),e=d,f=this.isBody?b.innerHeight?b.innerHeight:this.$root.height():this.$root.innerHeight(),g=e/this.$img.data("ratio");g>=f?(a=(g-f)/2,this.options.centeredY&&(c.top="-"+a+"px")):(g=f,e=g*this.$img.data("ratio"),a=(e-d)/2,this.options.centeredX&&(c.left="-"+a+"px")),this.$wrap.css({width:d,height:f}).find("img:not(.deleteable)").css({width:e,height:g}).css(c)}catch(h){}return this},show:function(b){if(!(Math.abs(b)>this.images.length-1)){var c=this,e=c.$wrap.find("img").addClass("deleteable"),f={relatedTarget:c.$container[0]};return c.$container.trigger(a.Event("backstretch.before",f),[c,b]),this.index=b,clearInterval(c.interval),c.$img=a("
").css(d.img).bind("load",function(d){var g=this.width||a(d.target).width(),h=this.height||a(d.target).height();a(this).data("ratio",g/h),a(this).fadeIn(c.options.speed||c.options.fade,function(){e.remove(),c.paused||c.cycle(),a(["after","show"]).each(function(){c.$container.trigger(a.Event("backstretch."+this,f),[c,b])})}),c.resize()}).appendTo(c.$wrap),c.$img.attr("src",c.images[b]),c}},next:function(){return this.show(this.index
1&&(clearInterval(this.interval),this.interval=setInterval(a.proxy(function(){this.paused||this.next()},this),this.options.duration)),this},destroy:function(c){a(b).off("resize.backstretch orientationchange.backstretch"),clearInterval(this.interval),c||this.$wrap.remove(),this.$container.removeData("backstretch")}};var f=function(){var a=navigator.userAgent,c=navigator.platform,d=a.match(/AppleWebKit\/([0-9]+)/),e=!!d&&d[1],f=a.match(/Fennec\/([0-9]+)/),g=!!f&&f[1],h=a.match(/Opera Mobi\/([0-9]+)/),i=!!h&&h[1],j=a.match(/MSIE ([0-9]+)/),k=!!j&&j[1];return!((c.indexOf("iPhone")>-1||c.indexOf("iPad")>-1||c.indexOf("iPod")>-1)&&e&&534>e||b.operamini&&"[object OperaMini]"==={}.toString.call(b.operamini)||h&&7458>i||a.indexOf("Android")>-1&&e&&533>e||g&&6>g||"palmGetResource"in b&&e&&534>e||a.indexOf("MeeGo")>-1&&a.indexOf("NokiaBrowser/8.5.0")>-1||k&&6>=k)}()}(jQuery,window),!function(a){"use strict";a.fn.smack=function(b){b=a.extend({},{edge:"bottom"},b),b=a.extend({},{threshold:"top"===b.edge?0:1,deferred:new a.Deferred},b);var c=a(this),d=c.data("bum-smack")||{};return d[b.edge]=b,d.scrollTop=c.scrollTop(),c.data("bum-smack",d),c.off("scroll.smack").on("scroll.smack",function(){var b,e,f,g,h=c.scrollTop(),i=c[0]===window?c.height():c.innerHeight(),j=c[0]===window?a(document).height():c[0].scrollHeight,k=h>d.scrollTop?"down":h=g&&(d.bottom.deferred.resolve(),d.bottom=!1,c.data("bum-smack",d))),"up"===k&&d.top&&(e=-1!==d.top.threshold.toString().toLowerCase().indexOf("px"),f=e?parseInt(d.top.threshold,10):Math.floor(j*d.top.threshold),f>=h&&(d.top.deferred.resolve(),d.top=!1,c.data("bum-smack",d))),d.top||d.bottom||c.off("scroll.smack")}),b.deferred.promise()}}(window.jQuery),function($,undefined){$.extend({jsonRPC:{version:"2.0",endPoint:null,namespace:null,setup:function(a){return this._validateConfigParams(a),this.endPoint=a.endPoint,this.namespace=a.namespace,this.cache=a.cache!==undefined?cache:!0,this},withOptions:function(a,b){if(this._validateConfigParams(a),b===undefined)throw"No callback specified";origParams={endPoint:this.endPoint,namespace:this.namespace},this.setup(a),b.call(this),this.setup(origParams)},request:function(a,b){return b===undefined&&(b={id:1}),b.id===undefined&&(b.id=1),b.cache===undefined&&(b.cache=this.cache),this._validateRequestMethod(a),this._validateRequestParams(b.params),this._validateRequestCallbacks(b.success,b.error),this._doRequest(JSON.stringify(this._requestDataObj(a,b.params,b.id)),b),!0},batchRequest:function(a,b){if(b===undefined&&(b={}),!$.isArray(a)||0===a.length)throw"Invalid requests supplied for jsonRPC batchRequest. Must be an array object that contain at least a method attribute";var c=this;$.each(a,function(a,b){c._validateRequestMethod(b.method),c._validateRequestParams(b.params),b.id===undefined&&(b.id=a+1)}),this._validateRequestCallbacks(b.success,b.error);for(var d,e=[],f=0;f0&&"2.0"!==json[0].jsonrpc||!$.isArray(json)&&"2.0"!==json.jsonrpc)throw"Version error";return json}catch(e){return{error:"Internal server error: "+e,version:"2.0"}}}}})}(jQuery),function(a,b,c,d){var e=a(b);a.fn.lazyload=function(c){function f(){var b=0;h.each(function(){var c=a(this);if(!(i.skip_invisible&&!c.is(":visible")||a.abovethetop(this,i)||a.leftofbegin(this,i)))if(a.belowthefold(this,i)||a.rightoffold(this,i)){if(++b>i.failure_limit)return!1}else c.trigger("appear"),b=0})}var g,h=this,i={threshold:0,failure_limit:0,event:"scroll",effect:"show",container:b,data_attribute:"original",skip_invisible:!0,appear:null,load:null};return c&&(d!==c.failurelimit&&(c.failure_limit=c.failurelimit,delete c.failurelimit),d!==c.effectspeed&&(c.effect_speed=c.effectspeed,delete c.effectspeed),a.extend(i,c)),g=i.container===d||i.container===b?e:a(i.container),0===i.event.indexOf("scroll")&&g.bind(i.event,function(){return f()}),this.each(function(){var b=this,c=a(b);b.loaded=!1,c.one("appear",function(){if(!this.loaded){if(i.appear){var d=h.length;i.appear.call(b,d,i)}a(" ").bind("load",function(){c.hide().attr("src",c.data(i.data_attribute))[i.effect](i.effect_speed),b.loaded=!0;var d=a.grep(h,function(a){return!a.loaded});if(h=a(d),i.load){var e=h.length;i.load.call(b,e,i)}}).attr("src",c.data(i.data_attribute))}}),0!==i.event.indexOf("scroll")&&c.bind(i.event,function(){b.loaded||c.trigger("appear")})}),e.bind("resize",function(){f()}),/iphone|ipod|ipad.*os 5/gi.test(navigator.appVersion)&&e.bind("pageshow",function(b){b.originalEvent.persisted&&h.each(function(){a(this).trigger("appear")})}),a(b).load(function(){f()}),this},a.belowthefold=function(c,f){var g;return g=f.container===d||f.container===b?e.height()+e.scrollTop():a(f.container).offset().top+a(f.container).height(),g<=a(c).offset().top-f.threshold},a.rightoffold=function(c,f){var g;return g=f.container===d||f.container===b?e.width()+e.scrollLeft():a(f.container).offset().left+a(f.container).width(),g<=a(c).offset().left-f.threshold},a.abovethetop=function(c,f){var g;return g=f.container===d||f.container===b?e.scrollTop():a(f.container).offset().top,g>=a(c).offset().top+f.threshold+a(c).height()},a.leftofbegin=function(c,f){var g;return g=f.container===d||f.container===b?e.scrollLeft():a(f.container).offset().left,g>=a(c).offset().left+f.threshold+a(c).width()},a.inviewport=function(b,c){return!(a.rightoffold(b,c)||a.leftofbegin(b,c)||a.belowthefold(b,c)||a.abovethetop(b,c))},a.extend(a.expr[":"],{"below-the-fold":function(b){return a.belowthefold(b,{threshold:0})},"above-the-top":function(b){return!a.belowthefold(b,{threshold:0})},"right-of-screen":function(b){return a.rightoffold(b,{threshold:0})},"left-of-screen":function(b){return!a.rightoffold(b,{threshold:0})},"in-viewport":function(b){return a.inviewport(b,{threshold:0})},"above-the-fold":function(b){return!a.belowthefold(b,{threshold:0})},"right-of-fold":function(b){return a.rightoffold(b,{threshold:0})},"left-of-fold":function(b){return!a.rightoffold(b,{threshold:0})}})}(jQuery,window,document),function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof exports?module.exports=a:a(jQuery)}(function(a){function b(b){var e,f=b||window.event,g=[].slice.call(arguments,1),h=0,i=0,j=0,k=0,l=0;return b=a.event.fix(f),b.type="mousewheel",f.wheelDelta&&(h=f.wheelDelta),f.detail&&(h=-1*f.detail),f.deltaY&&(j=-1*f.deltaY,h=j),f.deltaX&&(i=f.deltaX,h=-1*i),void 0!==f.wheelDeltaY&&(j=f.wheelDeltaY),void 0!==f.wheelDeltaX&&(i=-1*f.wheelDeltaX),k=Math.abs(h),(!c||c>k)&&(c=k),l=Math.max(Math.abs(j),Math.abs(i)),(!d||d>l)&&(d=l),e=h>0?"floor":"ceil",h=Math[e](h/c),i=Math[e](i/d),j=Math[e](j/d),g.unshift(b,h,i,j),(a.event.dispatch||a.event.handle).apply(this,g)}var c,d,e=["wheel","mousewheel","DOMMouseScroll","MozMousePixelScroll"],f="onwheel"in document||document.documentMode>=9?["wheel"]:["mousewheel","DomMouseScroll","MozMousePixelScroll"];if(a.event.fixHooks)for(var g=e.length;g;)a.event.fixHooks[e[--g]]=a.event.mouseHooks;a.event.special.mousewheel={setup:function(){if(this.addEventListener)for(var a=f.length;a;)this.addEventListener(f[--a],b,!1);else this.onmousewheel=b},teardown:function(){if(this.removeEventListener)for(var a=f.length;a;)this.removeEventListener(f[--a],b,!1);else this.onmousewheel=null}},a.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})}),function(a){"use strict";"object"==typeof exports?a(require("jquery")):"function"==typeof define&&define.amd?define(["jquery"],a):a(jQuery)}(function(a){"use strict";var b={},c=0;a.fn.once=function(d,e){"string"!=typeof d&&(d in b||(b[d]=++c),e||(e=d),d="jquery-once-"+b[d]);var f=d+"-processed",g=this.not("."+f).addClass(f);return a.isFunction(e)?g.each(e):g},a.fn.removeOnce=function(b,c){var d=b+"-processed",e=this.filter("."+d).removeClass(d);return a.isFunction(c)?e.each(c):e}}),function(a){function b(a){return"object"==typeof a?a:{top:a,left:a}}var c=a.scrollTo=function(b,c,d){a(window).scrollTo(b,c,d)};c.defaults={axis:"xy",duration:parseFloat(a.fn.jquery)>=1.3?0:1,limit:!0},c.window=function(){return a(window)._scrollable()},a.fn._scrollable=function(){return this.map(function(){var b=this,c=!b.nodeName||-1!=a.inArray(b.nodeName.toLowerCase(),["iframe","#document","html","body"]);if(!c)return b;var d=(b.contentWindow||b).document||b.ownerDocument||b;return/webkit/i.test(navigator.userAgent)||"BackCompat"==d.compatMode?d.body:d.documentElement})},a.fn.scrollTo=function(d,e,f){return"object"==typeof e&&(f=e,e=0),"function"==typeof f&&(f={onAfter:f}),"max"==d&&(d=9e9),f=a.extend({},c.defaults,f),e=e||f.duration,f.queue=f.queue&&f.axis.length>1,f.queue&&(e/=2),f.offset=b(f.offset),f.over=b(f.over),this._scrollable().each(function(){function g(a){j.animate(l,e,f.easing,a&&function(){a.call(this,k,f)})}if(null!=d){var h,i=this,j=a(i),k=d,l={},m=j.is("html,body");switch(typeof k){case"number":case"string":if(/^([+-]=?)?\d+(\.\d+)?(px|%)?$/.test(k)){k=b(k);break}if(k=a(k,this),!k.length)return;case"object":(k.is||k.style)&&(h=(k=a(k)).offset())}a.each(f.axis.split(""),function(a,b){var d="x"==b?"Left":"Top",e=d.toLowerCase(),n="scroll"+d,o=i[n],p=c.max(i,b);if(h)l[n]=h[e]+(m?0:o-j.offset()[e]),f.margin&&(l[n]-=parseInt(k.css("margin"+d))||0,l[n]-=parseInt(k.css("border"+d+"Width"))||0),l[n]+=f.offset[e]||0,f.over[e]&&(l[n]+=k["x"==b?"width":"height"]()*f.over[e]);else{var q=k[e];l[n]=q.slice&&"%"==q.slice(-1)?parseFloat(q)/100*p:q}f.limit&&/^\d+$/.test(l[n])&&(l[n]=l[n]<=0?0:Math.min(l[n],p)),!a&&f.queue&&(o!=l[n]&&g(f.onAfterFirst),delete l[n])}),g(f.onAfter)}}).end()},c.max=function(b,c){var d="x"==c?"Width":"Height",e="scroll"+d;if(!a(b).is("html,body"))return b[e]-a(b)[d.toLowerCase()]();var f="client"+d,g=b.ownerDocument.documentElement,h=b.ownerDocument.body;return Math.max(g[e],h[e])-Math.min(g[f],h[f])}}(jQuery),function(a,b){var c,d;if("localStorage"in window)try{d="undefined"==typeof window.localStorage?b:window.localStorage,c="undefined"==typeof d||"undefined"==typeof window.JSON?!1:!0}catch(e){c=!1}a.totalStorage=function(b,c){return a.totalStorage.impl.init(b,c)},a.totalStorage.setItem=function(b,c){return a.totalStorage.impl.setItem(b,c)},a.totalStorage.getItem=function(b){return a.totalStorage.impl.getItem(b)},a.totalStorage.getAll=function(){return a.totalStorage.impl.getAll()},a.totalStorage.deleteItem=function(b){return a.totalStorage.impl.deleteItem(b)},a.totalStorage.impl={init:function(a,b){return"undefined"!=typeof b?this.setItem(a,b):this.getItem(a)},setItem:function(b,e){if(!c)try{return a.cookie(b,e),e}catch(f){console.log("Local Storage not supported by this browser. Install the cookie plugin on your site to take advantage of the same functionality. You can get it at https://github.com/carhartl/jquery-cookie")}var g=JSON.stringify(e);return d.setItem(b,g),this.parseResult(g)},getItem:function(b){if(!c)try{return this.parseResult(a.cookie(b))}catch(e){return null}return b=d.getItem(b),this.parseResult(b)},deleteItem:function(b){if(!c)try{return a.cookie(b,null),!0}catch(e){return!1}return d.removeItem(b),!0},getAll:function(){var b=[];if(c)for(var e in d)e.length&&b.push({key:e,value:this.parseResult(d.getItem(e))});else try{var f=document.cookie.split(";");for(e=0;ee;e++)z[e]()}}function b(a){E?a():z[z.length]=a}function c(a){if(typeof w.addEventListener!=q)w.addEventListener("load",a,!1);else if(typeof x.addEventListener!=q)x.addEventListener("load",a,!1);else if(typeof w.attachEvent!=q)w.attachEvent("onload",a);else if("function"==typeof w.onload){var b=w.onload;w.onload=function(){b(),a()}}else w.onload=a}function d(){for(var a=A.length,b=0;a>b;b++){var c=A[b].id;if(G.pv[0]>0){var d=l(c);d&&(A[b].width=d.getAttribute("width")?d.getAttribute("width"):"0",A[b].height=d.getAttribute("height")?d.getAttribute("height"):"0",n(A[b].swfVersion)?(G.webkit&&G.webkit<312&&e(d),p(c,!0)):A[b].expressInstall&&!F&&n("6.0.65")&&(G.win||G.mac)?g(A[b]):h(d))}else p(c,!0)}}function e(a){var b=a.getElementsByTagName(r)[0];if(b){var c=m("embed"),d=b.attributes;if(d)for(var e=d.length,f=0;e>f;f++)"data"==d[f].nodeName.toLowerCase()?c.setAttribute("src",d[f].nodeValue):c.setAttribute(d[f].nodeName,d[f].nodeValue);var g=b.childNodes;if(g)for(var h=g.length,i=0;h>i;i++)1==g[i].nodeType&&"param"==g[i].nodeName.toLowerCase()&&c.setAttribute(g[i].getAttribute("name"),g[i].getAttribute("value"));a.parentNode.replaceChild(c,a)}}function f(a){G.ie&&G.win&&n("8.0.0")&&w.attachEvent("onunload",function(){var b=l(a);if(b){for(var c in b)"function"==typeof b[c]&&(b[c]=function(){});b.parentNode.removeChild(b)}})}function g(a){F=!0;var b=l(a.id);if(b){if(a.altContentId){var c=l(a.altContentId);c&&(C=c,D=a.altContentId)}else C=i(b);!/%$/.test(a.width)&&parseInt(a.width,10)<310&&(a.width="310"),!/%$/.test(a.height)&&parseInt(a.height,10)<137&&(a.height="137"),x.title=x.title.slice(0,47)+" - Flash Player Installation";var d=G.ie&&G.win?"ActiveX":"PlugIn",e=x.title,f="MMredirectURL="+w.location+"&MMplayerType="+d+"&MMdoctitle="+e,g=a.id;if(G.ie&&G.win&&4!=b.readyState){var h=m("div");g+="SWFObjectNew",h.setAttribute("id",g),b.parentNode.insertBefore(h,b),b.style.display="none",w.attachEvent("onload",function(){b.parentNode.removeChild(b)})}j({data:a.expressInstall,id:v,width:a.width,height:a.height},{flashvars:f},g)}}function h(a){if(G.ie&&G.win&&4!=a.readyState){var b=m("div");a.parentNode.insertBefore(b,a),b.parentNode.replaceChild(i(a),b),a.style.display="none",w.attachEvent("onload",function(){a.parentNode.removeChild(a)})}else a.parentNode.replaceChild(i(a),a)}function i(a){var b=m("div");if(G.win&&G.ie)b.innerHTML=a.innerHTML;else{var c=a.getElementsByTagName(r)[0];if(c){var d=c.childNodes;if(d)for(var e=d.length,f=0;e>f;f++)1==d[f].nodeType&&"param"==d[f].nodeName.toLowerCase()||8==d[f].nodeType||b.appendChild(d[f].cloneNode(!0))}}return b}function j(a,b,c){var d,e=l(c);if(typeof a.id==q&&(a.id=c),G.ie&&G.win){var g="";for(var h in a)a[h]!=Object.prototype[h]&&("data"==h?b.movie=a[h]:"styleclass"==h.toLowerCase()?g+=' class="'+a[h]+'"':"classid"!=h&&(g+=" "+h+'="'+a[h]+'"'));var i="";for(var j in b)b[j]!=Object.prototype[j]&&(i+=' ');e.outerHTML='"+i+" ",f(a.id),d=l(a.id)}else if(G.webkit&&G.webkit<312){var n=m("embed");n.setAttribute("type",u);for(var o in a)a[o]!=Object.prototype[o]&&("data"==o?n.setAttribute("src",a[o]):"styleclass"==o.toLowerCase()?n.setAttribute("class",a[o]):"classid"!=o&&n.setAttribute(o,a[o]));for(var p in b)b[p]!=Object.prototype[p]&&"movie"!=p&&n.setAttribute(p,b[p]);e.parentNode.replaceChild(n,e),d=n}else{var s=m(r);s.setAttribute("type",u);for(var t in a)a[t]!=Object.prototype[t]&&("styleclass"==t.toLowerCase()?s.setAttribute("class",a[t]):"classid"!=t&&s.setAttribute(t,a[t]));for(var v in b)b[v]!=Object.prototype[v]&&"movie"!=v&&k(s,v,b[v]);e.parentNode.replaceChild(s,e),d=s}return d}function k(a,b,c){var d=m("param");d.setAttribute("name",b),d.setAttribute("value",c),a.appendChild(d)}function l(a){return x.getElementById(a)}function m(a){return x.createElement(a)}function n(a){var b=G.pv,c=a.split(".");return c[0]=parseInt(c[0],10),c[1]=parseInt(c[1],10),c[2]=parseInt(c[2],10),b[0]>c[0]||b[0]==c[0]&&b[1]>c[1]||b[0]==c[0]&&b[1]==c[1]&&b[2]>=c[2]?!0:!1}function o(a,b){if(!G.ie||!G.mac){var c=x.getElementsByTagName("head")[0],d=m("style");if(d.setAttribute("type","text/css"),d.setAttribute("media","screen"),G.ie&&G.win||typeof x.createTextNode==q||d.appendChild(x.createTextNode(a+" {"+b+"}")),c.appendChild(d),G.ie&&G.win&&typeof x.styleSheets!=q&&x.styleSheets.length>0){var e=x.styleSheets[x.styleSheets.length-1];typeof e.addRule==r&&e.addRule(a,b)}}}function p(a,b){var c=b?"visible":"hidden";E?l(a).style.visibility=c:o("#"+a,"visibility:"+c)}{var q="undefined",r="object",s="Shockwave Flash",t="ShockwaveFlash.ShockwaveFlash",u="application/x-shockwave-flash",v="SWFObjectExprInst",w=window,x=document,y=navigator,z=[],A=[],B=null,C=null,D=null,E=!1,F=!1,G=function(){var a=typeof x.getElementById!=q&&typeof x.getElementsByTagName!=q&&typeof x.createElement!=q&&typeof x.appendChild!=q&&typeof x.replaceChild!=q&&typeof x.removeChild!=q&&typeof x.cloneNode!=q,b=[0,0,0],c=null;if(typeof y.plugins!=q&&typeof y.plugins[s]==r)c=y.plugins[s].description,c&&(c=c.replace(/^.*\s+(\S+\s+\S+$)/,"$1"),b[0]=parseInt(c.replace(/^(.*)\..*$/,"$1"),10),b[1]=parseInt(c.replace(/^.*\.(.*)\s.*$/,"$1"),10),b[2]=/r/.test(c)?parseInt(c.replace(/^.*r(.*)$/,"$1"),10):0);else if(typeof w.ActiveXObject!=q){var d=null,e=!1;try{d=new ActiveXObject(t+".7")}catch(f){try{d=new ActiveXObject(t+".6"),b=[6,0,21],d.AllowScriptAccess="always"}catch(f){6==b[0]&&(e=!0)}if(!e)try{d=new ActiveXObject(t)}catch(f){}}if(!e&&d)try{c=d.GetVariable("$version"),c&&(c=c.split(" ")[1].split(","),b=[parseInt(c[0],10),parseInt(c[1],10),parseInt(c[2],10)])}catch(f){}}var g=y.userAgent.toLowerCase(),h=y.platform.toLowerCase(),i=/webkit/.test(g)?parseFloat(g.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):!1,j=!1,k=/win/.test(h?h:g),l=/mac/.test(h?h:g);return{w3cdom:a,pv:b,webkit:i,ie:j,win:k,mac:l}}();!function(){if(G.w3cdom){if(b(d),G.ie&&G.win)try{x.write("");var e=l("__ie_ondomload");e&&(e.onreadystatechange=function(){"complete"==this.readyState&&(this.parentNode.removeChild(this),a())})}catch(f){}G.webkit&&typeof x.readyState!=q&&(B=setInterval(function(){/loaded|complete/.test(x.readyState)&&a()},10)),typeof x.addEventListener!=q&&x.addEventListener("DOMContentLoaded",a,null),c(a)}}()}return{registerObject:function(a,b,c){if(G.w3cdom&&a&&b){var d={};d.id=a,d.swfVersion=b,d.expressInstall=c?c:!1,A[A.length]=d,p(a,!1)}},getObjectById:function(a){var b=null;if(G.w3cdom&&E){var c=l(a);if(c){var d=c.getElementsByTagName(r)[0];!d||d&&typeof c.SetVariable!=q?b=c:typeof d.SetVariable!=q&&(b=d)}}return b},embedSWF:function(a,c,d,e,f,h,i,k,l){if(G.w3cdom&&a&&c&&d&&e&&f)if(d+="",e+="",n(f)){p(c,!1);var m=typeof l==r?l:{};m.data=a,m.width=d,m.height=e;var o=typeof k==r?k:{};if(typeof i==r)for(var s in i)i[s]!=Object.prototype[s]&&(typeof o.flashvars!=q?o.flashvars+="&"+s+"="+i[s]:o.flashvars=s+"="+i[s]);b(function(){j(m,o,c),m.id==c&&p(c,!0)})}else h&&!F&&n("6.0.65")&&(G.win||G.mac)&&(p(c,!1),b(function(){var a={};a.id=a.altContentId=c,a.width=d,a.height=e,a.expressInstall=h,g(a)}))},getFlashPlayerVersion:function(){return{major:G.pv[0],minor:G.pv[1],release:G.pv[2]}},hasFlashPlayerVersion:n,createSWF:function(a,b,c){return G.w3cdom&&E?j(a,b,c):void 0},createCSS:function(a,b){G.w3cdom&&o(a,b)},addDomLoadEvent:b,addLoadEvent:c,getQueryParamValue:function(a){var b=x.location.search||x.location.hash;if(null==a)return b;if(b)for(var c=b.substring(1).split("&"),d=0;d0;b--){var c=Math.floor(Math.random()*(b+1)),d=a[b];a[b]=a[c],a[c]=d}return a},app.helpers.aphabeticalSort=function(a,b){var c=a,d=b;return"string"==typeof a&&(c=a.toLowerCase(),d=b.toLowerCase()),d>c?-1:c>d?1:0},app.helpers.isInt=function(a){return app.helpers.exists(a)?parseFloat(a)==parseInt(a)&&!isNaN(a):!1},app.helpers.getRandomInt=function(a,b){return Math.floor(Math.random()*(b-a+1))+a},app.helpers.numPad=function(a,b){var c="000000000"+a;return c.substr(c.length-b)},app.helpers.secToTime=function(a){var b=parseInt(a/3600)%24,c=parseInt(a/60)%60,d=a%60;return(b>0?b+":":"")+(c>0?(b>0&&10>c?"0"+c:c)+":":b>0?"00:":"")+(10>d?"0"+d:d)},app.helpers.formatTime=function(a){return void 0===a?0:(a.hours>0?a.hours+":":"")+(a.hours>0&&a.minutes<10?"0":"")+(a.minutes>0?a.minutes+":":"")+((a.minutes>0||a.hours>0)&&a.seconds<10?"0":"")+a.seconds},app.helpers.exists=function(a){return"undefined"!=typeof a},app.helpers.rating=function(a){return Math.round(10*a)/10},app.helpers.buildUrls=function(a,b,c){return $.each(a,function(d,e){a[d].url=app.helpers.buildUrl(b,e[c])}),a},app.helpers.buildUrl=function(a,b,c){return"song"==a||"file"==a?"#":"episode"==a?"#tvshow/"+c.tvshowid+"/"+c.season+"/"+b:"#"+a+"/"+b},app.helpers.setFirstSidebarContent=function(a,b){b="undefined"!=typeof b&&b===!0;var c=app.helpers.getFirstSidebarContent();b?c.append(a):c.html(a),app.helpers.firstSidebarBinds()},app.helpers.getFirstSidebarContent=function(){app.helpers.toggleSidebar("open");var a=$(app.helpers.getSelector("sidebar1"));return $(".sidebar-content",a)},app.helpers.firstSidebarBinds=function(){var a=app.helpers.getFirstSidebarContent();app.helpers.toggleSidebar("open"),$("img.lazy").lazyload({effect:"fadeIn",container:a}),a.trigger("scroll")},app.helpers.toggleSidebar=function(a){var b="sidebar",c="no-sidebar",d=$("body");void 0===a?d.toggleClass(b).toggleClass(c):("open"==a&&d.addClass(b).removeClass(c),"close"==a&&d.addClass(c).removeClass(b))},app.helpers.getDefaultImage=function(){var a=["wallpaper-443657.jpg","wallpaper-45040.jpg","wallpaper-765190.jpg","wallpaper-84050.jpg"],b=a[app.helpers.getRandomInt(0,a.length-1)];return"theme/images/fanart_default/"+b},app.helpers.isDefaultImage=function(a){return app.helpers.varGet("defaultImage")==a},app.helpers.addFreewall=function(a){var b=new freewall(a);b.reset({selector:"li",animate:!1,cellW:170,cellH:"230",gutterY:15,gutterX:15,onResize:function(){b.fitWidth()}}),b.fitWidth()},app.helpers.addPosterFreewall=function(a){var b=new freewall(a);b.reset({selector:"li",animate:!1,cellW:170,cellH:"305",gutterY:15,gutterX:15,onResize:function(){b.fitWidth()}}),b.fitWidth()},app.helpers.triggerContentLazy=function(){$(window).trigger("scroll")},app.helpers.getSongKey=function(a){var b={type:"file"==a.songid||"undefined"==typeof a.songid?"file":"songid"};return b.id="file"==b.type?a.file:a.songid,b},app.helpers.parseArtistsArray=function(a){var b,c=[];for(var d in a.artist)b=void 0!==a.artistid?''+a.artist[d]+" ":a.artist[d],c.push(b);return c.join(", ")},app.helpers.parseArtistSummary=function(a){var b={songs:0,albums:0,time:0};for(var c in a.models){b.albums++;for(var d in a.models[c].attributes.songs)b.songs++,b.time=b.time+parseInt(a.models[c].attributes.songs[d].attributes.duration)}var e=[];return e.push(b.songs+" Songs"),e.push(b.albums+" Albums"),e.push(Math.floor(b.time/60)+" Mins"),e.join(" ")},app.helpers.createPaginationRange=function(a,b){var c=void 0!==a?parseInt(a):0,d=c*app.itemsPerPage,e=d+app.itemsPerPage;return b&&b===!0&&(d=0),{end:e,start:d}},app.helpers.createPaginationRange=function(a,b){var c=void 0!==a?parseInt(a):0,d=c*app.itemsPerPage,e=d+app.itemsPerPage;return b&&b===!0&&(d=0),{end:e,start:d}},app.helpers.getSort=function(){var a=app.helpers.arg(3),b=a.split(":"),c={};return""===a||2!=b.length?(c.method="title",c.order="ascending"):(c.method=b[0],c.order=b[1]),c},app.helpers.getSortParams=function(){var a=app.helpers.getSort();return a.method+":"+a.order},app.helpers.getBrowser=function(){var a="other";return window.opera||navigator.userAgent.indexOf(" OPR/")>=0?a="opera":"undefined"!=typeof InstallTrigger?a="firefox":Object.prototype.toString.call(window.HTMLElement).indexOf("Constructor")>0?a="safari":window.chrome&&"opera"!=a?a="chrome":document.documentMode&&(a="ie"),a},app.helpers.applyBackstretch=function(a,b){if("#"==location.hash||""===location.hash&&app.audioStreaming.getPlayer()==b){var c=$(".backstretch img"),d=c.attr("src"),e=app.parseImage(a,"fanart");c.length>0&&d!=e&&$.backstretch(e)}},app.helpers.setTitle=function(a,b){var c={addATag:!1,tabs:!1,activeTab:0},d=$.extend(c,b),e=$("#title");e.empty(),d.addATag&&e.append($(''+a+" "));var f=0;if(d.tabs!==!1){var g=$('
');for(var h in d.tabs){var i=$(''+d.tabs[h]+" ");g.append(i),f++}e.append(g)}d.addATag||e.append(''+a+"
"),app.currentPageTitle=a},app.helpers.getTitle=function(){return app.currentPageTitle},app.helpers.dialogInit=function(a){var b={autoOpen:!1,height:"auto",width:350,modal:!0,resizable:!1};b=jQuery.extend(b,a),$(app.helpers.getSelector("dialog")).dialog(b)},app.helpers.dialog=function(a,b){var c=$(app.helpers.getSelector("dialog"));c.hasClass("ui-dialog-content")||app.helpers.dialogInit(),c.dialog("option","title"," "),c.dialog("option","height","auto"),c.dialog("option","buttons",{}),c.html(a),c.dialog("option",b),c.bind("dialogopen",function(){$(".ui-widget-overlay, .ui-dialog").css("position","fixed"),$(".dialog-menu a:last").addClass("last"),c.keypress(function(a){if(a.keyCode==$.ui.keyCode.ENTER){var b=$(this).parent(),c=b.find(".bind-enter"),d=0===c.length?b.find(".ui-dialog-buttonpane button:first"):c;b.find(".ui-dialog-buttonpane button").length>0&&d.trigger("click")}})}),c.dialog("open")},app.helpers.dialogClose=function(){$(app.helpers.getSelector("dialog")).dialog("close")},app.helpers.confirm=function(a,b){var c={title:"Are you sure?",buttons:{OK:function(){b(),$(this).dialog("close")},Cancel:function(){$(this).dialog("close")}}};app.helpers.dialog(a,c)},app.helpers.prompt=function(a,b){var c={title:"Prompt",buttons:{OK:function(){var a=$("#promptText").val();""!==a&&(b(a),$(this).dialog("close"))},Cancel:function(){$(this).dialog("close")}}};a+='
',app.helpers.dialog(a,c)},app.helpers.aboutDialog=function(){var a={title:"About this thing",buttons:{"Cool!":function(){$(this).dialog("close")},ChangeLog:function(){document.location="#xbmc/changelog",$(this).dialog("close")}}};app.helpers.applyTemplate("About",app.addonData,function(b){app.helpers.dialog(b,a)})},app.helpers.menuDialog=function(a){var b=$(''),c=$(' '),d={};$.each(a.items,function(a,e){d=c.clone(),d.html(e.title).addClass(e.class),d.on("click",function(){app.helpers.dialogClose(),e.callback&&e.callback()}),b.append(d)}),app.helpers.dialog(b,{title:a.title})},app.helpers.makeDropdown=function(a){var b={key:"untitled",items:[],pull:"left",omitwrapper:!1,buttonIcon:"fa-ellipsis-v",buttonText:""},c="",d=$.extend(b,a);d.omitwrapper||(c+=''),c+='",c+='",d.omitwrapper||(c+="
"),c},app.helpers.menuTemplates=function(a,b){var c={};switch(a){case"song":c={title:void 0!==b.label&&""!==b.label?b.label:""!==b.album?b.album:"",key:"song",omitwrapper:!0,items:[{url:"#","class":"song-download",title:"Download song",callback:function(){app.AudioController.downloadFile(b.file,function(a){window.location=a})}},{url:"#","class":"song-custom-playlist",title:"Add to custom playlist",callback:function(){b.songid&&app.playlists.playlistAddItems("lists","new","song",b.songid)}},{url:"#","class":"song-browser-play",title:"Play in browser",callback:function(){b.songid&&app.playlists.playlistAddItems("local","replace","song",b.songid)}}]};break;case"album":c={title:""!==b.album?b.album:b.label,key:"album",omitwrapper:!0,items:[{url:"#","class":"album-add-xbmc",title:"Add to XBMC",callback:function(){app.playlists.playlistAddItems("xbmc","append","album",b.albumid)}},{url:"#","class":"album-add-local",title:"Play in browser",callback:function(){app.playlists.playlistAddItems("local","replace","album",b.albumid)}},{url:"#","class":"album-add-lists",title:"Save to lists",callback:function(){app.playlists.playlistAddItems("lists","new","album",b.albumid)}}]};break;case"artist":c={title:b.label,key:"artist",omitwrapper:!0,items:[{url:"#","class":"artist-add-xbmc",title:"Add to XBMC",callback:function(){app.playlists.playlistAddItems("xbmc","append","artist",b.artistid)}},{url:"#","class":"artist-add-local",title:"Play in browser",callback:function(){app.playlists.playlistAddItems("local","replace","artist",b.artistid)}},{url:"#","class":"artist-add-lists",title:"Save to lists",callback:function(){app.playlists.playlistAddItems("lists","new","artist",b.artistid)}}]};break;case"movie":c={title:b.label,key:"movie",omitwrapper:!0,items:[{url:"#","class":"movie-download",title:"Download Movie",callback:function(){app.AudioController.downloadFile(b.file,function(a){window.location=a})}}]};break;case"playlistShell":c={key:"playlist",pull:"right",items:[{"class":"dropdown-header",title:"Current Playlist"},{url:"#","class":"clear-playlist",title:"Clear Playlist"},{url:"#","class":"refresh-playlist",title:"Refresh Playlist"},{"class":"dropdown-header",title:"Audio"},{url:"#","class":"save-playlist",title:"Save XBMC Playlist"},{url:"#","class":"new-custom-playlist",title:"New Browser Playlist"}]}}return c},app.helpers.loadTemplates=function(a,b){var c=[];$.each(a,function(a,b){app[b]?c.push($.get("tpl/"+b+".html",function(a){app[b].prototype.template=_.template(a)},"html")):alert(b+" not found")}),$.when.apply(null,c).done(b)},app.helpers.loadTemplate=function(a,b){$.get("tpl/"+a+".html",function(c){app.tpl[a]=c,b&&b(app.tpl[a])})},app.helpers.applyTemplate=function(a,b,c){var d="";"undefined"!=typeof app.tpl[a]?(d=_.template(app.tpl[a],b),c(d)):app.helpers.loadTemplate(a,function(a){d=_.template(a,b),c(d)})},app.helpers.nearbottom=function(){var a=$(window),b=0+$(document).height()-a.scrollTop()-a.height(),c=600;return c>b},app.parseImage=function(a,b){return b="undefined"==typeof b?"default":b,"space"==b?"theme/images/space.png":void 0===a||""===a?"fanart"==b?app.helpers.getDefaultImage(b):app.helpers.varGet("defaultImage"):"image/"+encodeURIComponent(a)},app.nl2br=function(a,b){var c=b||"undefined"==typeof b?" ":" ";return(a+"").replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g,"$1"+c+"$2")},app.notification=function(a){var b=$("#notify");a!==!1&&""!==a&&(b.find(".content").html(a),b.removeClass("hidden").parent().removeClass("hidden"),clearTimeout(notificationTimoutObj),notificationTimoutObj=setTimeout(app.notificationHide,6e3))},app.notificationHide=function(){$notify=$("#notify").addClass("hidden").parent().addClass("hidden")},app.helpers.addScrollBar=function(a,b){scrollbarSettings={cursorwidth:8,cursorminheight:37,touchbehavior:!1,cursorcolor:"#606768"},settings=$.extend(scrollbarSettings,b)},app.storage={nameSpace:"chorus::",set:function(a,b){$.totalStorage(this.nameSpace+a,b)},get:function(a,b){var c=$.totalStorage(this.nameSpace+a);return void 0!==c&&""!==c?c:b}}}),function(a){$.fn.attr=function(){if(0===arguments.length){if(0===this.length)return null;var b={};return $.each(this[0].attributes,function(){this.specified&&(b[this.name]=this.value)}),b}return a.apply(this,arguments)}}($.fn.attr);var app={views:{},models:{},cached:{},counts:{503:0,"503total":0},state:"notconnected",jsonRpcUrl:"/jsonrpc",itemsPerPage:60,nextPageLoading:!1,vars:{lastHash:"#",defaultImage:"theme/images/default.png"},artistFields:["instrument","style","mood","born","formed","description","genre","died","disbanded","yearsactive","musicbrainzartistid","fanart","thumbnail"],albumFields:["title","description","artist","genre","theme","mood","style","type","albumlabel","rating","year","fanart","thumbnail","playcount","genreid","artistid","displayartist"],songFields:["title","artist","albumartist","genre","year","rating","album","track","duration","playcount","fanart","thumbnail","file","albumid","lastplayed","disc","genreid","artistid","displayartist","albumartistid"],movieFields:["title","genre","year","rating","director","trailer","tagline","plot","plotoutline","originaltitle","lastplayed","playcount","writer","studio","mpaa","cast","country","imdbnumber","runtime","set","showlink","streamdetails","top250","votes","fanart","thumbnail","file","sorttitle","resume","setid","dateadded","tag","art"],tvshowFields:["title","genre","year","rating","plot","studio","mpaa","cast","playcount","episode","imdbnumber","premiered","votes","lastplayed","thumbnail","file","originaltitle","sorttitle","episodeguide","season","watchedepisodes","dateadded","tag","art"],tvepisodeFields:["title","plot","votes","rating","writer","firstaired","playcount","runtime","director","productioncode","season","episode","originaltitle","showtitle","cast","streamdetails","lastplayed","fanart","thumbnail","file","resume","tvshowid","dateadded","uniqueid","art"],tvseasonFields:["season","showtitle","playcount","episode","fanart","thumbnail","tvshowid","watchedepisodes","art"],fileFields:["title","size","mimetype","file","dateadded","thumbnail","artistid","albumid","uniqueid"],playlistItemFields:["title","artist","albumartist","genre","year","rating","album","track","duration","playcount","director","tagline","plotoutline","originaltitle","lastplayed","mpaa","cast","country","imdbnumber","premiered","runtime","showlink","streamdetails","votes","firstaired","season","episode","showtitle","thumbnail","fanart","file","resume","artistid","albumid","tvshowid","setid","watchedepisodes","disc","tag","art","genreid","displayartist","albumartistid","description","theme","mood","style","albumlabel","sorttitle","uniqueid","dateadded","channel","channeltype","hidden","locked","channelnumber","starttime","endtime"],albumFilters:[],songFilters:[],templates:["HomeView","ContactView","ShellView","ArtistView","ArtistSummaryView","ArtistListItemView","ArtistsView","AlbumView","AlbumItemView","SongView","AristsRandView","ArtistLargeItemView","AlbumItemSmallView","AlbumArtistView","PlaylistItemView","PlaylistCustomListItemView","CustomPlaylistSongView","FilesView","FileView","MovieListItemView","MovieView","TvshowListItemView","TvSeasonListItemView","TvshowView","RemoteView"],tpl:{}};app.Router=Backbone.Router.extend({routes:{"":"home",contact:"contact","artist/:id":"artist","artist/:id/:task":"artist",artists:"artists","album/:id":"album",albums:"albums","playlist/:id":"playlist","search/:q":"search",search:"searchLanding","scan/:type":"scan",thumbsup:"thumbsup",files:"files","movies/page/:num/:sort":"moviesPage","movies/genre/:genre":"moviesGenre",movies:"moviesLanding","movie/:id":"movie","tvshows/page/:num/:sort":"tvshows",tvshows:"tvshowsLanding","tvshow/:id":"tvshow","tvshow/:tvid/:seas":"season","tvshow/:tv/:s/:e":"episode","xbmc/:op":"xbmc",remote:"remoteControl",playlists:"playlists"},initialize:function(){app.shellView=new app.ShellView,$("body").html(app.shellView.render().el),$(window).trigger("shellReady"),this.$content=$("#content")},home:function(){var a="",b=app.playlists.getNowPlaying();if(this.$content.html(""),app.helpers.setTitle(""),app.shellView.selectMenuItem("home","no-sidebar"),"local"==app.audioStreaming.getPlayer()){var c=app.audioStreaming.getNowPlayingSong();a=void 0===c.fanart?"":c.fanart}else a=void 0===b||void 0===b.item||void 0===b.item.fanart?"":b.item.fanart;if(0===$(".backstretch").length){var d=app.parseImage(a,"fanart");$.backstretch(d)}},search:function(a){$("#search").val(a),app.shellView.search(a)},searchLanding:function(){this.$content.html('Type to search
'),app.shellView.selectMenuItem("search","no-sidebar"),$("#search").focus()},artist:function(a,b){"undefined"==typeof b&&(b="view"),this.$content.html('Loading Artist
'),app.artistsView=new app.ArtistsView,app.artistsView.render();var c=new app.Artist({id:parseInt(a),fields:app.artistFields}),d=this;c.fetch({success:function(a){d.$content.html(new app.ArtistView({model:a}).render().el),app.helpers.setTitle('Artists '+a.attributes.artist),app.shellView.selectMenuItem("artists","sidebar")}})},artists:function(){var a=$('
');app.artistsView=new app.ArtistsView,a.html(app.artistsView.render().el),$("#content").html(a),app.helpers.setTitle("Artists",{addATag:"#artists"}),app.shellView.selectMenuItem("artists","sidebar")},album:function(a){var b={attributes:{albumid:a}};app.cached.albumView=new app.AlbumView({model:b,type:"album"}),0===$(".album-page").length?$("#content").html(app.cached.albumView.render().el):app.cached.albumView.render(),app.shellView.selectMenuItem("albums","sidebar")},albums:function(){app.shellView.selectMenuItem("album","no-sidebar");var a=this;$("#content").html('Loading Albums
'),app.cached.recentlyAddedAlbums=new app.AlbumRecentlyAddedXbmcCollection,app.cached.recentlyAddedAlbums.fetch({success:function(b){app.cached.recentlyPlayedAlbums=new app.AlbumRecentlyPlayedXbmcCollection,app.cached.recentlyPlayedAlbums.fetch({success:function(c){var d=c.models,e={},f=$('
');_.each(d,function(a){e[a.attributes.albumid]=!0}),_.each(b.models,function(a){e[a.attributes.albumid]||d.push(a)}),d=app.helpers.shuffle(d),b.models=d,b.length=d.length,app.cached.recentlAlbums=b,app.cached.recentAlbumsView=new app.SmallAlbumsList({model:b,className:"album-list-landing"}),f.html(app.cached.recentAlbumsView.render().el),a.$content.html(f),app.helpers.setTitle("Recent",{addATag:"#albums"}),app.shellView.selectMenuItem("albums","no-sidebar"),app.helpers.addFreewall("ul.album-list-landing")}})}})},files:function(){app.cached.fileCollection=new app.FileCollection,app.cached.fileCollection.fetch({name:"sources",success:function(a){app.helpers.setTitle(' '),app.shellView.selectMenuItem("files","sidebar"),app.cached.filesView=new app.FilesView({model:a}),app.cached.filesView.render()}})},playlist:function(a){app.cached.playlistCustomListSongCollection=new app.PlaylistCustomListSongCollection,app.cached.playlistCustomListSongCollection.fetch({name:a,success:function(b){app.cached.customPlaylistSongListView=new app.CustomPlaylistSongListView({model:b}),$("#content").html(app.cached.customPlaylistSongListView.render().el);var c=app.playlists.getCustomPlaylist(a);app.helpers.setTitle(''+c.name+" "),app.shellView.selectMenuItem("playlist","no-sidebar")}})},playlists:function(){app.helpers.setTitle("Playlists"),app.shellView.selectMenuItem("playlists","no-sidebar")},thumbsup:function(){app.cached.thumbsUpPage=new app.ThumbsupView,this.$content.html(app.cached.thumbsUpPage.render().$el)},movies:function(a,b){var c=$("#content"),d=app.helpers.getSortParams(),e=$("ul.movie-page-list",c),f=!1,g=!1,h=app.moviePageNum,i=$(window),j=0===e.length;if(d!=app.filters.movieLastSort&&(j=!0),app.filters.movieLastSort=d,b=void 0!==b&&b===!0,f=b!==!0,app.moviePageNum=parseInt(a),app.router.navigate("movies/page/"+a+"/"+d),app.settings.set("movieSort",d),j===!0)c.html('Loading Movies
'),app.helpers.setTitle(' '),app.shellView.selectMenuItem("movies","no-sidebar"),f=!0;else if(0===app.moviePageNum)return i.scrollTo(0),void(app.moviePageNum=h);app.cached.movieCollection=new app.MovieCollection,app.cached.movieCollection.fetch({fullRange:f,success:function(a){if(a.showNext=!0,app.cached.movieListView=new app.MovieListView({model:a}),j===!0||0===app.moviePageNum||b!==!0)c.html(app.cached.movieListView.render().$el),c.prepend(app.filters.renderFilters("movie")),i.scrollTo(0),app.cached.movieListView.backFromMovie(f,g),f===!0&&g!==!0&&app.moviePageNum>1&&(i.scrollTo("85%"),g=!0),g===!1&&app.helpers.triggerContentLazy();else{var d=$(".video-list").last();0===d.find("li").length?d.remove():c.append(app.cached.movieListView.render().$el)}app.helpers.triggerContentLazy()}})},moviesPage:function(a){this.movies(a,!1)},moviesLanding:function(){var a=this;app.helpers.setTitle(' '),a.$content.html('Loading Movies
'),app.movieRecentCollection=new app.MovieRecentCollection,app.movieRecentCollection.fetch({success:function(b){app.cached.movieListView=new app.MovieListView({model:b}),a.$content.html(app.cached.movieListView.render().$el),a.$content.prepend(app.filters.renderFilters("movie")),a.$content.find(".next-page").remove(),a.$content.find("ul").removeClass("movie-page-list").addClass("movie-recent-list"),a.$content.find("img").lazyload({threshold:200}),app.shellView.selectMenuItem("movies","no-sidebar"),app.helpers.triggerContentLazy(),$(window).scrollTo(0)}})},moviesGenre:function(a){var b=this;app.helpers.setTitle(' '),b.$content.html('Loading Movies
'),app.movieFitleredCollection=new app.MovieFitleredCollection,app.movieFitleredCollection.fetch({filter:{genre:a},success:function(a){app.cached.movieListView=new app.MovieListView({model:a}),b.$content.html(app.cached.movieListView.render().$el),b.$content.find(".next-page").remove(),b.$content.find("ul").removeClass("movie-list").addClass("movie-genre-list"),app.shellView.selectMenuItem("movies","no-sidebar"),app.helpers.triggerContentLazy(),$(window).scrollTo(0)}})},movie:function(a){var b=new app.Movie({id:parseInt(a)}),c=this;c.$content.html('Loading Movie
'),b.fetch({success:function(a){c.$content.html(new app.MovieView({model:a}).render().el),app.helpers.setTitle(' '+a.attributes.title+" "+a.attributes.year+" "),app.shellView.selectMenuItem("movie","sidebar")}})},tvshows:function(){var a=$("#content");app.shellView.selectMenuItem("tvshows","no-sidebar"),a.html('Loading TV Shows
'),app.helpers.setTitle(' '),app.cached.tvCollection=new app.TvshowAllCollection,app.cached.tvCollection.fetch({success:function(b){app.cached.tvshowListView=new app.TvshowListView({model:b}),a.html(app.cached.tvshowListView.render().$el),a.prepend(app.filters.renderFilters("tvshow")),app.helpers.triggerContentLazy()}})},tvshowsLanding:function(){var a=$("#content");app.shellView.selectMenuItem("tvshows","no-sidebar"),a.html('Loading TV Shows
'),app.helpers.setTitle(' '),app.cached.recentTvCollection=new app.RecentTvepisodeCollection,app.cached.recentTvCollection.fetch({success:function(b){app.cached.recentTvshowListView=new app.TvSeasonListView({model:b,className:"video-list recent-tv-list"}),a.html(app.cached.recentTvshowListView.render().$el),a.prepend(app.filters.renderFilters("tvshow")),app.helpers.triggerContentLazy()}})},tvshow:function(a){var b=new app.TVShow({id:parseInt(a)}),c=this;c.$content.html('Loading TV Show
'),b.fetch({success:function(a){c.$content.html(new app.TvshowView({model:a}).render().el),app.helpers.setTitle(' '+a.attributes.label),app.shellView.selectMenuItem("tvshow","sidebar")}})},season:function(a,b){var c=new app.TVShow({id:parseInt(a)}),d=this;d.$content.html('Loading TV Show
'),c.fetch({success:function(c){c.attributes.type="season",c.attributes.season=b;var e=app.stores.TvSeasons,f="seasons:"+a;void 0!==e&&void 0!==e[f]&&e[f].length>0&&$.each(e[f],function(a,d){d.season==b&&""!==d.thumbnail&&(c.attributes.thumbnail=d.thumbnail)}),d.$content.html(new app.TvshowView({model:c}).render().el),app.helpers.setTitle(''+c.attributes.label+" Season "+b),app.shellView.selectMenuItem("tvshow","sidebar")}})},episode:function(a,b,c){var d=new app.TVEpisode({id:parseInt(c)}),e=this;e.$content.html('Loading TV Show
'),d.fetch({success:function(c){c.attributes.type="episode",c.attributes.tvshowid=a,c.attributes.season=b,e.$content.html(new app.TvshowView({model:c}).render().el),app.helpers.setTitle(''+c.attributes.showtitle+" Season "+b+" E"+c.attributes.episode+". "+c.attributes.label),app.shellView.selectMenuItem("tvshow","sidebar")}})},remoteControl:function(){app.playlists.changePlaylistView("xbmc"),app.helpers.setTitle("Remote"),app.shellView.selectMenuItem("remote","no-sidebar")},scan:function(a){var b="audio"==a?"AudioLibrary":"VideoLibrary",c=this;app.xbmcController.command(b+".Scan",{},function(){app.notification("Started "+a+" Scan"),app.shellView.selectMenuItem("scan","no-sidebar"),c.$content.html('Scanning '+a+" library
"),app.helpers.setTitle(' '+a+" scan")})},xbmc:function(a){app.cached.xbmcView=new app.XbmcView({model:a}),$("#content").html(app.cached.xbmcView.render().$el),app.helpers.setTitle('XBMC '),app.shellView.selectMenuItem("xbmc","no-sidebar")}}),$(document).on("ready",function(){app.helpers.loadTemplates(app.templates,function(){app.router=new app.Router,Backbone.history.start()}),app.store.libraryCall(function(){$("body").addClass("artists-ready"),app.notification("Artists loaded")},"artistsReady"),app.store.libraryCall(function(){$("body").addClass("audio-library-ready"),app.notification("Library loaded"),"local"==app.settings.get("lastPlayer","xbmc")&&$(".local-tab").trigger("click")},"songsReady")}),app.filters={movieLastSort:"title:ascending",tvshowLastSort:"title:ascending",movieFilters:{title:"Movies",basePath:"#movies/page/",paths:[{title:"All Movies",path:"movies/page/0/title:ascending",argOne:"page",key:"all"},{title:"Recently Added",path:"movies",argOne:"",key:"recent"}],sort:["title","date","rating","year","file"]},tvshowFilters:{title:"TV Show",basePath:"#tvshows/page/",paths:[{title:"All TV",path:"tvshows/page/0/title:ascending",argOne:"page",key:"all"},{title:"Recently Added",path:"tvshows",argOne:"",key:"recent"}],sort:["title","date","rating","year","file"]},renderFilters:function(a){var b=$("
",{"class":"filter-wrapper "+a+"-filters"}),c=$("
",{"class":"links"}),d=$("
",{"class":"sort-wrapper dropdown"}),e=app.filters[a+"Filters"],f=app.helpers.getSort(),g=$("body");$.each(e.paths,function(a,d){var e=app.helpers.arg(1)==d.argOne,f=e?" active":"";e&&b.addClass("active-tab-"+d.key),c.append($(''+d.title+" "))});var h=[],i={},j="ascending",k="asc";$.each(e.sort,function(a,b){j=b==f.method?"ascending"==f.order?"descending":"ascending":j,k=app.filters.shortOrder(j),i={title:b+(f.method==b?' ':""),url:e.basePath+"0/"+b+":"+j,"class":"dir-"+j},h.push(i)});var l={key:"sort-items",items:h,pull:"right",buttonIcon:"fa-angle-"+("desc"==app.filters.shortOrder(f.order)?"down":"up"),buttonText:" "+f.method};d.append(app.helpers.makeDropdown(l));var m=$(' ');return m.on("click",function(){g.toggleClass("hide-watched"),app.settings.set("hideWatched",g.hasClass("hide-watched"))}),d.append(m),app.settings.get("hideWatched",!1)&&g.addClass("hide-watched"),b.append(c).append(d),b},shortOrder:function(a,b){return void 0!==b&&b===!0?"ascending"!=a?"asc":"desc":"ascending"==a?"asc":"desc"}},app.pager={type:"movie",map:{movie:{allCollection:"MovieAllCollection",collection:"CustomMovieCollection",view:"MovieListView"}},setType:function(a){return this.type=a,this},viewHelpers:function(a,b){var c=app.pager,d=$("body").width()<800,e=d?"0.8":"500px";if(c.type=void 0!==b?b:this.type,c.$el=a,a.find("li").length>0){var f=$('More... ');c.$el.append(f)}return $(window).smack({threshold:e}).done(function(){$("ul."+c.type+"-page-list").find(".next-page").last().trigger("click")}),c.$el.addClass("page-"+app[c.type+"PageNum"]),c.$el.find("img").lazyload({threshold:200}),c.$el},nextPage:function(a,b){return this.type=void 0!==b?b:this.type,a.remove(),app.router[this.type+"s"](app[this.type+"PageNum"]+1,!0),a},libraryNav:function(a,b,c){var d=!1,e=0,f=0,g=0;return $.each(c,function(c,h){var i=h.attributes,j=a+"id";d===!0&&(e=parseInt(i[j]),d=!1),i[j]==b&&(d=!0,g=f),f=b}),{next:e,prev:g}}},app.settings={settingsKey:"settings",defaultSettings:{init:!0,hideWatched:!1,lastPlayer:"xbmc",movieSort:"title:ascending"},set:function(a,b){var c=app.settings.allSettings();return c[a]=b,app.storageController.setStorage(app.settings.settingsKey,c),b},get:function(a,b){var c=app.settings.allSettings();return void 0!==c[a]?c[a]:b},allSettings:function(){var a=app.storageController.getStorage(app.settings.settingsKey);return null===a||void 0===a.init?(app.storageController.setStorage(app.settings.settingsKey,app.settings.defaultSettings),app.settings.defaultSettings):a}},app.Artist=Backbone.Model.extend({initialize:function(){},defaults:{artistid:1,thumbnail:"",fanart:"",artist:"",label:"",description:"",born:"",died:""},sync:function(a,b,c){"read"===a&&app.store.getArtist(parseInt(this.id),function(a){a.attributes.thumbsup=app.playlists.isThumbsUp("artist",a.attributes.artistid),c.success(a.attributes)})}}),app.Album=Backbone.Model.extend({initialize:function(){},defaults:{album:"",albumid:"",thumbnail:"",artist:"",artistid:"",songs:[],albumsitems:[]},sync:function(a){}}),app.Song=Backbone.Model.extend({initialize:function(){},defaults:{label:"",thumbnail:"",albumid:0,artistid:[0],type:"song",playlistId:0,url:"#",subLink:""},sync:function(a){}}),app.PlaylistItem=Backbone.Model.extend({initialize:function(){},defaults:{label:"",thumbnail:"",albumid:0,artistid:[0],songid:"file",file:"",list:"xbmc",playlistId:0,type:"file"}}),app.PlaylistCustomListItem=Backbone.Model.extend({initialize:function(){},defaults:{name:"",items:[],id:0,type:"file"}}),app.PlaylistCustomListItemSong=Backbone.Model.extend({initialize:function(){},defaults:{label:"",thumbnail:"",albumid:0,artistid:[0]}}),app.File=Backbone.Model.extend({initialize:function(){},defaults:{filetype:"",size:"",mimetype:"",file:"",lastmodified:"",id:0,thumbnail:""},sync:function(a){}}),app.Movie=Backbone.Model.extend({initialize:function(){},defaults:{movieid:1,thumbnail:"",fanart:"",year:"",url:"#movies",thumbsup:!1,libraryId:1},sync:function(a,b,c){"read"===a&&app.xbmcController.command("VideoLibrary.GetMovieDetails",[parseInt(this.id),app.movieFields],function(a){var b=a.result.moviedetails;
-b.thumbsup=app.playlists.getThumbsUp("movie",b.movieid),c.success(b)})}}),app.TVShow=Backbone.Model.extend({initialize:function(){},defaults:{tvshowid:"",label:"",watchedepisodes:"",genre:"",year:"",cast:[],rating:0,url:"#tv",episodeid:""},sync:function(a,b,c){if("read"===a){var d=app.tvshowFields;-1==$.inArray("fanart",d)&&d.push("fanart"),app.xbmcController.command("VideoLibrary.GetTVShowDetails",[parseInt(this.id),d],function(a){var b=a.result.tvshowdetails;b.thumbsup=app.playlists.getThumbsUp("tvshow",b.tvshowid),b.url="#tvshow/"+b.tvshowid,app.cached.tvseasonCollection=new app.TvseasonCollection,app.cached.tvseasonCollection.fetch({tvshowid:b.tvshowid,success:function(a){b.seasons=a,c.success(b)}})})}}}),app.TVEpisode=Backbone.Model.extend({initialize:function(){},defaults:{album:"",mpaa:"",thumbnail:"",artist:"",genre:[],artistid:"",songs:[],albumsitems:[],url:"#tv",imdbnumber:""},sync:function(a,b,c){"read"===a&&app.xbmcController.command("VideoLibrary.GetEpisodeDetails",[parseInt(this.id),app.tvepisodeFields],function(a){var b=a.result.episodedetails;b.thumbsup=app.playlists.getThumbsUp("episode",b.episodeid),c.success(b)})}}),app.Video=Backbone.Model.extend({initialize:function(){},defaults:{album:"",albumid:"",thumbnail:"",artist:"",artistid:"",songs:[],albumsitems:[],url:"#video"},sync:function(a){}}),app.addOns={addon:{}},app.addOns.getSources=function(a){app.xbmcController.command("Addons.GetAddons",["xbmc.addon.audio","unknown","all",["name","thumbnail","enabled"]],function(b){var c=b.result.addons,d=[];for(var e in c){var f=c[e],g={};f.enabled&&(g={file:"plugin://"+f.addonid+"/",title:f.name,filetype:"directory",id:f.addonid,sourcetype:"music",playlistId:app.AudioController.playlistId},f=$.extend(f,g),d.push(f))}app.cached.addonSources=d,a&&a(d)})},app.addOns.ready=function(a){"undefined"!=typeof app.cached.addonSources?a(app.cached.addonSources):app.addOns.getSources(a)},app.addOns.getAddon=function(a){if("undefined"!=typeof app.cached.addonSources)for(var b in app.cached.addonSources){var c=app.cached.addonSources[b],d=app.addOns.slug(c);if(d==a)return c}return{}},app.addOns.invokeAll=function(a,b,c,d){if("undefined"!=typeof app.cached.addonSources)for(var e in app.cached.addonSources){var f=app.cached.addonSources[e],g=app.addOns.slug(f);b=app.addOns.invoke(g,a,b,c,d)}else app.addOns.getSources();return b},app.addOns.invoke=function(a,b,c,d,e){if("undefined"!=typeof app.addOns.addon[a]&&"function"==typeof app.addOns.addon[a][b]){var f=app.addOns.addon[a][b];c=f(c,d,e)}return c},app.addOns.slug=function(a){return a.addonid.split(".").join("")},app.AudioController={playlistId:0,currentPlaylist:{items:[],status:"none"}},app.AudioController.playlistRender=function(a){app.playlists.renderXbmcPlaylist(app.AudioController.playlistId,a)},app.AudioController.playlistAdd=function(a,b,c){var d={};d[a]=b,app.xbmcController.command("Playlist.Add",[app.AudioController.playlistId,d],function(){app.AudioController.getPlaylistItems(function(a){app.AudioController.currentPlaylist=a,c(a)})})},app.AudioController.playlistAddMultiple=function(a,b,c){var d,e=[];for(var f in b)param={},d=b[f],"mixed"==a&&(a="number"==typeof d?"songid":"file"),param[a]=d,e.push({method:"Playlist.Add",params:[app.AudioController.playlistId,param]});app.xbmcController.multipleCommand(e,function(){app.AudioController.getPlaylistItems(function(a){app.AudioController.currentPlaylist=a,c(a)})})},app.AudioController.playlistSwap=function(a,b,c){app.playlists.playlistSwap(app.AudioController.playlistId,"songid",a,b,c)},app.AudioController.playlistClearAdd=function(a,b,c){app.xbmcController.command("Playlist.Clear",[app.AudioController.playlistId],function(){app.notification("Playlist Cleared"),app.AudioController.playlistAdd(a,b,c)})},app.AudioController.playlistClear=function(a){app.xbmcController.command("Playlist.Clear",[app.AudioController.playlistId],function(b){a&&a(b)})},app.AudioController.playlistPlaySongId=function(a){var b=!1;$.each(app.AudioController.currentPlaylist.items,function(c,d){d.id==a&&b===!1&&(app.AudioController.playPlaylistPosition(c,function(){app.AudioController.playlistRender(),app.notification('Now playing "'+d.label+'"')}),b=!0)})},app.AudioController.playSongById=function(a,b,c,d){app.helpers.exists(d)&&d===!0?app.AudioController.playlistClearAdd(b,c,function(){app.AudioController.playlistPlaySongId(a)}):app.AudioController.playlistAdd(b,c,function(){app.AudioController.playlistPlaySongId(a)})},app.AudioController.insertAndPlay=function(a,b,c){app.playlists.insertAndPlay(app.AudioController.playlistId,a,b,c)},app.AudioController.downloadFile=function(a,b){app.xbmcController.command("Files.PrepareDownload",[a],function(a){b&&b(a.result.details.path)})},app.AudioController.sendPlayerCommand=function(a,b){app.xbmcController.command(a,[app.playlists.getNowPlaying("activePlayer"),b],function(){app.AudioController.updatePlayerState()})},app.AudioController.playPlaylistPosition=function(a,b){app.xbmcController.command("Player.Open",[{playlistid:app.AudioController.playlistId,position:a}],function(a){b(a.result)})},app.AudioController.removePlaylistPosition=function(a,b){app.xbmcController.command("Playlist.Remove",[app.AudioController.playlistId,a],function(a){b(a.result)})},app.AudioController.seek=function(a,b){app.xbmcController.command("Player.Seek",[app.playlists.getNowPlaying("activePlayer"),a],function(a){app.helpers.exists(b)&&b(a.result)})},app.AudioController.getPlaylistItems=function(a){app.playlists.getXbmcPlaylist(app.AudioController.playlistId,a)},app.AudioController.setVolume=function(a){app.xbmcController.command("Application.SetVolume",[a],function(){})},app.AudioController.audioLibraryScan=function(){app.xbmcController.command("AudioLibrary.Scan",[],function(){})},app.AudioController.getNowPlayingSong=function(a,b){void 0===b&&(b=!1);var c=4;if(app.counts["503total"]>30&&(c=6,app.notification("No connection to XBMC for 10mins! I'll check if it's there less often now ")),app.counts["503total"]>70&&(c=12,app.notification("No connection to XBMC for 30mins! I'm pretty sure it has gone walkabout")),app.counts[503]>c&&(app.counts[503]=0,app.counts["503total"]++),0!==app.counts[503])return app.counts[503]++,app.state="notconnected",void app.notification("Lost connection to XBMC");app.counts[503]=1;var d={item:app.playlistItemFields,player:["playlistid","speed","position","totaltime","time","percentage","shuffled","repeat","canrepeat","canshuffle","canseek"]},e={status:"notPlaying"},f=[];f=[{method:"Player.GetActivePlayers",params:[]}],b&&f.push({method:"Application.GetProperties",params:[["volume","muted"]]}),app.xbmcController.multipleCommand(f,function(c){var g=c[0];if(app.counts[503]=0,app.counts["503total"]=0,app.state="connected",app.AudioController.activePlayers=g.result,b){var h=c[1];e.volume=h.result}g.result.length>0||b?(e.activePlayer=void 0!==g.result[0]?g.result[0].playerid:0,app.state="playing",f=[{method:"Player.GetProperties",params:[e.activePlayer,d.player]}],b&&f.push({method:"Player.GetItem",params:[e.activePlayer,d.item]}),app.xbmcController.multipleCommand(f,function(c){e.status="playing",e.player=c[0].result,g.result.length>0&&b&&(e.item=c[1].result.item,e.item.list="xbmc"),app.cached.nowPlaying=$.extend(app.cached.nowPlaying,e),a&&a(app.playlists.getNowPlaying())})):(app.cached.nowPlaying=$.extend(app.cached.nowPlaying,e),a(app.playlists.getNowPlaying()))})};var stateTimeout={};app.AudioController.updatePlayerState=function(){var a=$("body"),b="notconnected";app.state==b?a.addClass(b):a.removeClass(b),app.AudioController.getNowPlayingSong(function(a){app.shellView.updateState(a)},!app.notifications.wsActive)},soundManager.setup({url:"lib/soundmanager/swf/",flashVersion:9,preferFlash:!1,useHTML5Audio:!0,useFlashBlock:!1,flashLoadTimeout:3e3,debugMode:!1,noSWFCache:!0,debugFlash:!1,onready:function(){app.audioStreaming.init()},ontimeout:function(){console.log("timeout"),soundManager.flashLoadTimeout=0,soundManager.onerror={},soundManager.reboot()}}),$(window).on("shellReady",function(){app.audioStreaming.$body=$("body"),app.audioStreaming.$window=$(window),app.audioStreaming.playList={items:[],playingPosition:0,id:0,repeat:"off",random:"off",mute:!1}}),$(window).on("browserPlayerStart",function(a){app.audioStreaming.playbackInProgress=!0,app.audioStreaming.setTitle("playing",a.label)}),$(window).on("browserPlayerStop",function(){app.audioStreaming.playbackInProgress=!1,app.audioStreaming.setTitle("stop","Nothing Playing")}),app.audioStreaming={localPlay:!1,nowplaying:{init:1},lastPos:0,defaultVol:60,progressEl:"#browser-progress-bar",volumeEl:"#browser-volume",playlistEl:"#playlist-local",playbackInProgress:!1,currentPlaybackId:"browser-none",lastListKey:"lastBrowserList",classLocal:"player-view-local",classXbmc:"player-view-xbmc",classLocalPlaying:"browser-playing",classLocalPaused:"browser-paused",playerReady:function(){},init:function(){$(window).trigger("soundManagerReady"),soundManager.setVolume(app.audioStreaming.defaultVol);var a=app.storageController.getStorage(app.audioStreaming.lastListKey);void 0!==a&&null!==a&&a.length>0&&app.store.libraryCall(function(){app.playlists.playlistGetItems("items",a,function(a){if(void 0!==app.audioStreaming.playList&&(app.audioStreaming.playList.items=a,app.audioStreaming.renderPlaylistItems(),void 0!==a.models&&void 0!==a.models[0])){var b=a.models[0];app.audioStreaming.loadSong(b),app.audioStreaming.updatePlayingState(b.attributes)}})},"songsReady"),app.audioStreaming.progressInit(),app.audioStreaming.volumeInit()},setPlayer:function(a){var b,c=$("body");"xbmc"==a&&(c.addClass(app.audioStreaming.classXbmc).removeClass(app.audioStreaming.classLocal),b=app.playlists.getNowPlaying("item"),app.helpers.applyBackstretch(b.fanart,"xbmc")),"local"==a&&(c.removeClass(app.audioStreaming.classXbmc).addClass(app.audioStreaming.classLocal),0===$("ul.browser-playlist-song-list").length&&app.audioStreaming.renderPlaylistItems(),b=app.audioStreaming.getNowPlayingSong(),app.helpers.applyBackstretch(void 0!==b.fanart?b.fanart:"","local"))},getPlayer:function(){return $("body").hasClass(app.audioStreaming.classLocal)?"local":"xbmc"},getNowPlayingSong:function(){if(void 0!==app.audioStreaming.playList&&void 0!==app.audioStreaming.playList.items.models&&void 0!==app.audioStreaming.playList.items.models[app.audioStreaming.playList.playingPosition]){var a=app.audioStreaming.playList.items.models[app.audioStreaming.playList.playingPosition];return a.attributes}return{}},playPosition:function(a){if($("li.browser-player div.playlist-item").removeClass("browser-playing-row"),app.audioStreaming.playList.items.models.length>0&&void 0!==app.audioStreaming.playList.items.models[parseInt(a)]){var b=app.audioStreaming.playList.items.models[parseInt(a)].attributes;app.audioStreaming.playList.playingPosition=a,app.audioStreaming.loadSong({attributes:b},function(){app.audioStreaming.play(),app.notification("Playing "+b.label+" in the browser")})}else app.audioStreaming.stop()},setPlaylistItems:function(a){var b=[];$.each(a.models,function(c,d){"undefined"!=typeof d.attributes.songid&&(b.push(d.attributes.songid),a.models[c].attributes.type="song")}),app.storageController.setStorage(app.audioStreaming.lastListKey,b),app.audioStreaming.playList.items=a},appendPlaylistItems:function(a,b){var c;void 0===app.audioStreaming.playList?c=a:(c=app.audioStreaming.playList.items,void 0===c.models&&(c.models=[]),$.each(a.models,function(a,b){c.models.push(b)}),c.length=c.models.length),app.audioStreaming.setPlaylistItems(c),app.audioStreaming.renderPlaylistItems(),b&&b()},replacePlaylistItems:function(a,b){app.audioStreaming.setPlaylistItems(a),app.audioStreaming.renderPlaylistItems(),app.audioStreaming.loadSong(a.models[0],function(){app.playlists.changePlaylistView("local"),app.audioStreaming.playPosition(0),b&&b()})},renderPlaylistItems:function(){if(void 0!==app.audioStreaming.playList){var a=app.audioStreaming.playList.items,b=new app.CustomPlaylistSongSmallListView({model:a}).render();$(app.audioStreaming.playlistEl).html(b.$el)}},playlistClear:function(a){var b={models:[]};app.audioStreaming.setPlaylistItems(b),a&&a()},playlistRender:function(){app.audioStreaming.renderPlaylistItems()},loadSong:function(a,b){app.audioStreaming.stop();var c=soundManager,d=a.attributes;app.AudioController.downloadFile(d.file,function(a){app.audioStreaming.currentPlaybackId="browser-"+d.songid,app.audioStreaming.localPlay=c.createSound({id:app.audioStreaming.currentPlaybackId,url:a,autoPlay:!1,autoLoad:!0,stream:!0,onerror:function(a){app.helpers.errorHandler("SoundManager failed to load: "+a.type,a)},onplay:function(){$("body").addClass("browser-playing").removeClass("browser-paused"),app.audioStreaming.updatePlayingState(d);var a=$("#browser-volume").slider("value");app.audioStreaming.localPlay.setVolume(a),$(window).trigger("browserPlayerStart",[d])},onstop:function(){app.audioStreaming.playerStateStop()},onpause:function(){$("body").removeClass("browser-playing").addClass("browser-paused"),$(window).trigger("browserPlayerStop",[d])},onresume:function(){$("body").addClass("browser-playing").removeClass("browser-paused"),$(window).trigger("browserPlayerStart",[d])},onfinish:function(){var a=app.audioStreaming.playList,b=a.items.models,c=parseInt(a.playingPosition);if("one"==a.repeat)app.audioStreaming.playPosition(c);else if("on"==a.random){var d=app.helpers.getRandomInt(0,b.length-1);app.audioStreaming.playPosition(d)}else"all"==a.repeat?b.length==c+1&&app.audioStreaming.playPosition(0):b.length>c?app.audioStreaming.playPosition(c+1):app.audioStreaming.stop()},whileplaying:function(){var a=parseInt(this.position)/1e3,b=parseInt(this.duration)/1e3,c=Math.round(a/b*100),e=$("#browser-time"),f=($("#browser-now-playing"),Math.round(void 0!==this.buffered[0]?this.buffered[0].end/this.duration*100:0));app.audioStreaming.nowplaying.player={position:a,duration:b,percentage:c},$(".time-cur",e).html(app.helpers.secToTime(Math.floor(a))),$(".time-total",e).html(app.helpers.secToTime(Math.floor(b))),c!=app.audioStreaming.lastPos&&(f>0&&$("#browser-progress-buffer").css("width",f+"%"),$(app.audioStreaming.progressEl).slider("value",c),app.audioStreaming.updatePlayingState(d)),app.audioStreaming.lastPos=c}}),$(app.audioStreaming.progressEl).hasClass("ui-slider")||(app.audioStreaming.localPlay.setVolume(app.audioStreaming.defaultVol),app.audioStreaming.progressInit(),app.audioStreaming.volumeInit()),b&&b()})},updatePlayingState:function(a){$("#browser-playing-thumb").attr("src",app.parseImage(a.thumbnail)),$(".browser-playing-song-title").html(a.label),$(".browser-playing-song-meta").html(a.artist[0]);var b=$("li.browser-player .playlist-pos-"+app.audioStreaming.playList.playingPosition);b.hasClass("browser-playing-row")||b.addClass("browser-playing-row"),app.audioStreaming.setTitle("playing",a.label),app.helpers.applyBackstretch(void 0!==a.fanart?a.fanart:"","local")},bodyRandRepeat:function(){var a=app.audioStreaming.playList;if(void 0!==a.repeat){var b=$("body");"undefined"!=typeof app.audioStreaming.playList&&(b.removeClass("bp-repeat-one").removeClass("bp-repeat-all").removeClass("bp-repeat-off"),b.addClass("bp-repeat-"+a.repeat),b.removeClass("bp-random-on").removeClass("bp-random-off"),b.addClass("bp-random-"+a.random),b.removeClass("bp-mute"),a.mute&&b.addClass("bp-mute"))}},setTitle:function(a,b){"local"==app.audioStreaming.getPlayer()&&(document.title=("playing"==a?"▶ ":"")+(void 0!==b?b+" | ":"")+"Chorus.")},progressInit:function(){$(app.audioStreaming.progressEl).slider({range:"min",step:1,value:0,min:0,max:100,stop:function(a,b){var c=b.value/100*app.audioStreaming.localPlay.duration;c=Math.round(c);var d=soundManager.getSoundById(app.audioStreaming.currentPlaybackId);d.setPosition(c)}})},volumeInit:function(){$(app.audioStreaming.volumeEl).slider({range:"min",step:5,value:app.audioStreaming.defaultVol,min:0,max:100,stop:function(a,b){app.audioStreaming.localPlay.setVolume(b.value)}})},isPlaying:function(){return $("body").hasClass("browser-playing")},togglePlay:function(){app.audioStreaming.localPlay!==!1&&(app.audioStreaming.isPlaying()?app.audioStreaming.pause():app.audioStreaming.play())},play:function(){app.audioStreaming.localPlay!==!1&&(app.audioStreaming.localPlay.play(),app.audioStreaming.setPlayer("local"))},stop:function(){app.audioStreaming.localPlay!==!1&&(app.audioStreaming.playerStateStop(),app.audioStreaming.localPlay.stop())},playerStateStop:function(){$("body").removeClass("browser-playing").removeClass("browser-paused"),$(window).trigger("browserPlayerStop",[])},pause:function(){app.audioStreaming.localPlay!==!1&&app.audioStreaming.localPlay.pause()},prev:function(){if(app.audioStreaming.localPlay!==!1){var a=app.audioStreaming.playList;app.audioStreaming.playPosition(0===a.playingPosition?0:a.playingPosition-1)}},next:function(){if(app.audioStreaming.localPlay!==!1){var a=app.audioStreaming.playList;app.audioStreaming.playPosition(a.playingPosition==a.items.models.length-1?0:a.playingPosition+1)}},mute:function(){if(app.audioStreaming.localPlay!==!1){var a=app.audioStreaming.playList.mute,b=$(app.audioStreaming.volumeEl).slider("value");if(a){var c=app.helpers.varGet("localMuteLastVol",app.audioStreaming.defaultVol);app.audioStreaming.localPlay.setVolume(c),$(app.audioStreaming.volumeEl).slider("value",c)}else app.helpers.varSet("localMuteLastVol",b>5?b:app.audioStreaming.defaultVol),app.audioStreaming.localPlay.setVolume(0),$(app.audioStreaming.volumeEl).slider("value",0);app.audioStreaming.playList.mute=!a,app.audioStreaming.bodyRandRepeat()}},repeat:function(){if(app.audioStreaming.localPlay!==!1){var a,b=app.audioStreaming.playList;switch(b.repeat){case"off":a="all";break;case"all":a="one";break;case"one":a="off"}app.audioStreaming.playList.repeat=a,app.audioStreaming.bodyRandRepeat()}},random:function(){if(app.audioStreaming.localPlay!==!1){var a=app.audioStreaming.playList;app.audioStreaming.playList.random="off"==a.random?"on":"off",app.audioStreaming.bodyRandRepeat()}},deleteBrowserPlaylistSong:function(a){var b=app.audioStreaming.playList.items,c=b.models.filter(function(b){return b.attributes.pos!=a});b.models=c,b.length=c.length,app.audioStreaming.setPlaylistItems(b)},sortableChangePlaylistPosition:function(a){var b=[],c=app.audioStreaming.playList.items;$.each(a,function(a,d){b.push(c.models[d])}),c.models=b,c.length=b.length,app.audioStreaming.setPlaylistItems(c),app.audioStreaming.renderPlaylistItems()}},app.notifications={wsConn:"ws://"+location.hostname+":9090/jsonrpc?chorus",wsActive:!1,plTimeout:{},init:function(){var a=app.notifications;if("WebSocket"in window){var b=new WebSocket(a.wsConn);b.onopen=function(){a.getNowPlaying(),console.log("Using Websockets"),app.notifications.wsActive=!0},b.onerror=function(a){console.log("socket error",a)},b.onmessage=function(b){a.onMessage(a.parseResponse(b))},b.onclose=function(a){console.log("socket closed",a)}}},parseResponse:function(a){return jQuery.parseJSON(a.data)},onClose:function(){app.notifications.wsActive=!1},onMessage:function(a){app.counts[503]=0,app.counts["503total"]=0,app.state="connected";var b=app.notifications,c=$(window);switch(a.method){case"Player.OnPlay":b.getNowPlaying();break;case"Player.OnStop":b.getNowPlaying();break;case"Player.OnPropertyChanged":app.cached.nowPlaying.player=$.extend(app.playlists.getNowPlaying("player"),a.params.data.property),b.updateState();break;case"Player.OnPause":app.cached.nowPlaying.player.pause=0,b.updateState();break;case"Player.OnSeek":b.getNowPlaying();break;case"Playlist.OnClear":case"Playlist.OnAdd":case"Playlist.OnRemove":b.updatePlaylist(a.params.data.playlistid);break;case"Application.OnVolumeChanged":app.cached.nowPlaying.volume=a.params.data,b.updateState();break;case"VideoLibrary.OnScanStarted":break;case"VideoLibrary.OnScanFinished":app.notification("Video Library scan complete"),"scan"==app.helpers.arg(0)&&$("#content").html('Video Library Scan Complete
');break;case"AudioLibrary.OnScanStarted":break;case"AudioLibrary.OnScanFinished":app.notification("Audio Library scan complete"),"scan"==app.helpers.arg(0)&&$("#content").html('Audio Library Scan Complete
');break;case"Input.OnInputRequested":c.trigger("Input.OnInputRequested");break;case"Input.OnInputFinished":c.trigger("Input.OnInputFinished");break;case"System.OnQuit":app.notification("XBMC has quit")}},getNowPlaying:function(){app.AudioController.getNowPlayingSong(function(a){app.shellView.updateState(a)},!0)},updateState:function(){app.shellView.updateState(app.playlists.getNowPlaying())},updatePlaylist:function(a){clearTimeout(app.notifications.plTimeout),app.notifications.plTimeout=setTimeout(function(){0===a?app.AudioController.playlistRender():1==a&&app.VideoController.playlistRender()},1e3)}},app.playlists={storageKeyLists:"playlist:lists",storageKeyThumbsUp:"playlist:thumbsUp"},$(window).on("shellReady",function(){app.playlists.getThumbsUp(),$(".playlist-actions-wrapper",this.$el).html(app.helpers.makeDropdown(app.helpers.menuTemplates("playlistShell"))),app.playlists.addCustomPlayLists(function(a){var b=$("#playlist-lists",self.$el);b.html(a.render().el)})}),app.playlists.playlistGetItems=function(a,b,c){var d=[],e={};switch(a){case"xbmc":e=new app.PlaylistCollection,e.fetch({success:function(a){a=app.playlists.addFileFieldToSongCollection(a),c(a)}});break;case"song":e=new app.CustomSongCollection,e.fetch({items:[b],success:function(a){a=app.playlists.addFileFieldToSongCollection(a),c(a)}});break;case"album":e=new app.SongFilteredXbmcCollection({filter:{albumid:b}}),e.fetch({success:function(a){res=app.playlists.addFileFieldToSongCollection(a),c(res)}});break;case"artist":e=new app.SongFilteredXbmcCollection({filter:{artistid:b}}),e.fetch({success:function(a){res=app.playlists.addFileFieldToSongCollection(a),c(res)}});break;case"movie":e=new app.CustomMovieCollection,e.fetch({items:b,success:function(a){c(a)}});break;case"tvshow":e=new app.TvepisodeCollection,e.fetch({tvshowid:b,success:function(a){c(a)}});break;case"season":e=new app.TvepisodeCollection;var f=b.split(":");e.fetch({tvshowid:f[0],season:f[1],success:function(a){c(a)}});break;case"list":e=new app.PlaylistCustomListSongCollection,e.fetch({name:b,success:function(a){a=app.playlists.addFileFieldToSongCollection(a),c(a)}});break;case"thumbsup":e=new app.ThumbsUpCollection,e.fetch({name:b,success:function(a){a=app.playlists.addFileFieldToSongCollection(a),c(a)}});break;case"items":e=new app.CustomSongCollection,e.fetch({items:b,success:function(a){a=app.playlists.addFileFieldToSongCollection(a),c(a)}})}return c?void c(d):d},app.playlists.playlistAddItems=function(a,b,c,d,e){app.playlists.playlistGetItems(c,d,function(c){if(0!==c.length){var d=[];switch($.each(c.models,function(a,b){b.attributes.songid&&d.push("file"==b.attributes.songid?b.attributes.file:b.attributes.songid)}),e="undefined"!=typeof e?e:function(){},a){case"xbmc":"append"==b?app.AudioController.playlistAddMultiple("mixed",d,function(){app.AudioController.playlistRender(),app.playlists.changePlaylistView("xbmc"),e()}):app.AudioController.playlistClear(function(){app.AudioController.playlistAddMultiple("mixed",d,function(){app.AudioController.playlistRender(),app.playlists.changePlaylistView("xbmc"),app.AudioController.playPlaylistPosition(i,function(){app.AudioController.playlistRender(),e()})})});break;case"local":"append"==b?app.audioStreaming.appendPlaylistItems(c,e):app.audioStreaming.replacePlaylistItems(c,e);break;case"lists":app.playlists.changePlaylistView("lists"),app.playlists.saveCustomPlayListsDialog("local",d)}}})},app.playlists.addFileFieldToSongCollection=function(a){return $.each(a.models,function(b,c){var d=app.store.getSongBy("id",c.attributes.songid);c.attributes.file=d.file,a.models[b]=c}),a},app.playlists.sortableChangePlaylistPosition=function(a,b){var c=$(b.item[0]).find("div.playlist-item"),d={},e=c.closest("ul.playlist"),f=1==c.data("playlistId")?"video":"audio",g=c.data("type");if(e.find("div.playlist-item").each(function(a,b){$d=$(b),$d.data("path")===c.data("path")&&(d={from:c.data("id"),to:a})}),void 0!==d.from&&d.from!==d.to){var h="audio"==f?app.AudioController:app.VideoController;h.playlistSwap(d.from,d.to,function(){h.playlistRender(),c.removeClass(".playing-row")},g)}},app.playlists.changeCustomPlaylistPosition=function(a,b){var c=$(b.item[0]).find("div.playlist-item"),d={},e=c.closest("ul.playlist");e.find("div.playlist-item").each(function(a,b){$d=$(b),$d.data("path")===c.data("path")&&(d={from:c.data("path"),to:a})}),void 0!==d.from&&d.from!==d.to&&app.AudioController.playlistSwap(d.from,d.to,function(){app.AudioController.playlistRender()})},app.playlists.changePlaylistView=function(a){var b=$("#sidebar-second"),c=$(".playlist-primary-tab[data-pane='"+a+"']");$(".playlist-primary-tab").removeClass("active"),c.addClass("active"),$(".sidebar-pane",b).hide(),$("#playlist-"+a,b).show(),("local"==a||"xbmc"==a)&&app.audioStreaming.setPlayer(a)},app.playlists.saveCustomPlayListsDialog=function(a,b,c){a="undefined"==typeof a?"xbmc":a,b="undefined"==typeof b?[]:b;var d=app.playlists.getCustomPlaylist(),e="";for(var f in d)e+=''+d[f].name+" ";"undefined"!=typeof c&&(e="");var g='Create a new playlist Save
'+(""!==e?'Or add to an existing list
":"");app.helpers.dialog(g,{title:"Add to a playlist"}),$("#savenewlist").on("click",function(){var c=$("#newlistname").val(),d=app.playlists.saveCustomPlayLists("new",c,a,b);app.helpers.dialogClose(),document.location="#playlist/"+d.id}),$("#existinglists li").on("click",function(){var c=$(this).data("id"),d=app.playlists.saveCustomPlayLists("existing",c,a,b);app.helpers.dialogClose(),document.location="#playlist/"+d.id})},app.playlists.saveCustomPlayLists=function(a,b,c,d){var e=[],f=app.playlists.getCustomPlaylist(),g=0,h={},i=0;switch("xbmc"==c?_.each(app.cached.xbmcPlaylist,function(a){"file"==a.id?(a=app.addOns.invokeAll("parseFileRecord",a),e.push(a)):e.push(a.id)}):e=d,a){case"new":for(i in f){var j=f[i];g0)for(var d in c)c[d].id==a&&(c[d].items=b);app.storageController.setStorage(app.playlists.storageKeyLists,c)}},app.playlists.getDropdown=function(){var a=[],b=app.helpers.arg(0),c={append:"Add to playlist",replace:"Replace playlist","browser-replace":"Play in browser"};"thumbsup"!=b&&(c.delete="Delete");for(var d in c)a.push({url:"#","class":b+"-"+d,title:c[d]});return app.helpers.makeDropdown({key:b,items:a,pull:"right"})},app.playlists.setThumbsUp=function(a,b,c){var d=app.playlists.getThumbsUp(),e=d[b],f=[],g=!1,h={items:[]},i=0;switch(("undefined"==typeof e||"undefined"==typeof e.items)&&(e=h),a){case"add":for(i in e.items)e.items[i]==c&&(g=!0);g||e.items.push(c);break;case"remove":for(i in e.items)e.items[i]!=c&&null!==e.items[i]&&f.push(e.items[i]);e.items=f}d[b]=e,app.storageController.setStorage(app.playlists.storageKeyThumbsUp,d),app.playlists.getThumbsUp()},app.playlists.getThumbsUp=function(a){var b=app.storageController.getStorage(app.playlists.storageKeyThumbsUp),c=null!==b?b:{},d=0,e=0;app.cached.thumbsUp={};for(d in c){app.cached.thumbsUp[d]={items:c[d].items,lookup:{}};var f=[];for(e in c[d].items){var g=c[d].items[e];null!==g&&(f.push(g),app.cached.thumbsUp[d].lookup[g]=!0)}c[d].items=f}return"undefined"!=typeof a?c[a]:c},app.playlists.isThumbsUp=function(a,b){return"undefined"!=typeof app.cached.thumbsUp&&"undefined"!=typeof app.cached.thumbsUp[a]&&"undefined"!=typeof app.cached.thumbsUp[a].lookup[b]},app.playlists.isAnyThumbsUp=function(){var a=app.storageController.getStorage(app.playlists.storageKeyThumbsUp);return null!==a},app.playlists.getXbmcPlaylist=function(a,b){app.xbmcController.command("Playlist.GetItems",[a,app.playlistItemFields],function(c){var d=c.result;d.playlistId=a,void 0!==d.items&&$.each(d.items,function(b){d.items[b].playlistId=a}),b(d)})},app.playlists.playlistClear=function(a,b){app.xbmcController.command("Playlist.Clear",[a],function(a){b&&b(a)})},app.playlists.playlistPlayPosition=function(a,b,c){app.xbmcController.command("Player.Open",[{playlistid:a,position:b}],function(a){c(a.result)})},app.playlists.renderXbmcPlaylist=function(a,b){app.playlists.getXbmcPlaylist(a,function(c){app.cached.xbmcPlaylist=c.items;var d=$("#playlist-xbmc");app.playlistView=new app.PlaylistView({model:{playlistId:a,models:c.items}}),d.html(app.playlistView.render().el),app.notifications.wsActive||app.AudioController.getNowPlayingSong(function(a){app.shellView.updateState(a)}),app.helpers.exists(b)&&b(c)})},app.playlists.playlistSwap=function(a,b,c,d,e){app.playlists.getXbmcPlaylist(a,function(f){var g=f.items[c],h={},i=1==a?app.VideoController:app.AudioController;void 0!==g.id&&"number"==typeof g.id?h[b]=g.id:h.file=g.file,i.removePlaylistPosition(c,function(){app.xbmcController.command("Playlist.Insert",[a,d,h],function(){i.getPlaylistItems(function(a){i.currentPlaylist=a,e(a)})})})})},app.playlists.insertAndPlay=function(a,b,c,d){var e=app.playlists.getNowPlaying("player"),f="undefined"!=typeof e.position?e.position:0,g=f+1,h={};h[b]=c,"notPlaying"==app.playlists.getNowPlaying("status")||"stopped"==app.playlists.getNowPlaying("status")?app.playlists.playlistClear(a,function(){app.xbmcController.command("Playlist.Insert",[a,g,h],function(b){app.playlists.playlistPlayPosition(a,g,function(){d&&d(b)})})}):app.xbmcController.command("Playlist.Insert",[a,g,h],function(b){app.playlists.playlistPlayPosition(a,g,function(){d&&d(b)})})},app.playlists.getNowPlaying=function(a){var b={activePlayer:0,status:"notPlaying",playingItemChanged:!1,volume:{volume:50,muted:!1},player:{repeat:"off",shuffled:!1},item:{thumbnail:"",fanart:"",id:0,label:"Nothing Playing",songid:0,episodeid:0,album:"",albumid:"file",file:"",duration:0,type:"song"}},c=app.cached.nowPlaying;return void 0!==c&&(b=$.extend(b,c)),void 0!==a?b[a]:b},app.setDetail={songParams:["songid","title","artist","albumartist","genre","year","rating","album","track","disc","duration","comment"],artistParams:["artistid","artist","instrument","style","mood","born","formed","description","genre","died","disbanded","yearsactive"],albumParams:["albumid","title","artist","description","genre","theme","mood","style","type","albumlabel","rating","year"],episodeParams:["episodeid","title","playcount","runtime","director","plot","rating","votes","lastplayed","writer","firstaired","productioncode","season","episode"],save:function(){}},app.storageController={nameSpace:"chorusStorage:"},app.storageController.getStorage=function(a,b){var c=$.totalStorage(app.storageController.nameSpace+a);
+})}),$(document).ready(function(){app.helpers={},app.helpers.scroller={},app.helpers.getSelector=function(a){var b={content:"#content",title:"#title",dialog:"#dialog",sidebar1:"#sidebar-first",sidebar2:"#sidebar-second"};return b[a]},app.helpers.errorHandler=function(a,b){console.log(b),"undefined"!=typeof b[0]&&"Internal server error"==b[0].error||console.log("%c Bam! Error occurred ("+a+")",app.helpers.consoleStyle(4),b)},app.helpers.consoleStyle=function(a){var b={background:"#ccc",padding:"0 5px",color:"#444","font-weight":"bold","font-size":"110%"},c=[],d=[{background:"#D8FEFE"},{background:"#CCFECD"},{background:"#FFFDD9"},{background:"#FAE9F1"},{background:"#FFCECD"}];void 0!==a&&(b=$.extend(b,d[a]));for(var e in b)c.push(e+": "+b[e]);return c.join("; ")},app.helpers.varSet=function(a,b){app.vars[a]=b},app.helpers.varGet=function(a,b){return void 0!==app.vars[a]?app.vars[a]:b},app.helpers.arg=function(a){var b=location.hash,c=b.substring(1).split("/");return"undefined"!=typeof a?"undefined"==typeof c[a]?"":c[a]:c},app.helpers.getParameterByName=function(a){a=a.replace(/[\[]/,"\\[").replace(/[\]]/,"\\]");var b=new RegExp("[\\?&]"+a+"=([^]*)"),c=b.exec(location.search);return null===c?"":decodeURIComponent(c[1].replace(/\+/g," "))},app.helpers.shuffle=function(a){for(var b=a.length-1;b>0;b--){var c=Math.floor(Math.random()*(b+1)),d=a[b];a[b]=a[c],a[c]=d}return a},app.helpers.aphabeticalSort=function(a,b){var c=a,d=b;return"string"==typeof a&&(c=a.toLowerCase(),d=b.toLowerCase()),d>c?-1:c>d?1:0},app.helpers.isInt=function(a){return app.helpers.exists(a)?parseFloat(a)==parseInt(a)&&!isNaN(a):!1},app.helpers.getRandomInt=function(a,b){return Math.floor(Math.random()*(b-a+1))+a},app.helpers.numPad=function(a,b){var c="000000000"+a;return c.substr(c.length-b)},app.helpers.secToTime=function(a){var b=parseInt(a/3600)%24,c=parseInt(a/60)%60,d=a%60;return{hours:b,minutes:c,seconds:d}},app.helpers.formatTime=function(a){return void 0===a?0:(a.hours>0?a.hours+":":"")+(a.hours>0&&a.minutes<10?"0":"")+(a.minutes>0?a.minutes+":":"")+((a.minutes>0||a.hours>0)&&a.seconds<10?"0":"")+a.seconds},app.helpers.exists=function(a){return"undefined"!=typeof a},app.helpers.rating=function(a){return Math.round(10*a)/10},app.helpers.buildUrls=function(a,b,c){return $.each(a,function(d,e){a[d].url=app.helpers.buildUrl(b,e[c])}),a},app.helpers.buildUrl=function(a,b,c){return"song"==a||"file"==a?"#":"episode"==a?"#tvshow/"+c.tvshowid+"/"+c.season+"/"+b:"#"+a+"/"+b},app.helpers.setFirstSidebarContent=function(a,b){b="undefined"!=typeof b&&b===!0;var c=app.helpers.getFirstSidebarContent();b?c.append(a):c.html(a),app.helpers.firstSidebarBinds()},app.helpers.getFirstSidebarContent=function(){app.helpers.toggleSidebar("open");var a=$(app.helpers.getSelector("sidebar1"));return $(".sidebar-content",a)},app.helpers.firstSidebarBinds=function(){var a=app.helpers.getFirstSidebarContent();app.helpers.toggleSidebar("open"),$("img.lazy").lazyload({effect:"fadeIn",container:a}),a.trigger("scroll")},app.helpers.toggleSidebar=function(a){var b="sidebar",c="no-sidebar",d=$("body");void 0===a?d.toggleClass(b).toggleClass(c):("open"==a&&d.addClass(b).removeClass(c),"close"==a&&d.addClass(c).removeClass(b))},app.helpers.getDefaultImage=function(){var a=["wallpaper-443657.jpg","wallpaper-45040.jpg","wallpaper-765190.jpg","wallpaper-84050.jpg"],b=a[app.helpers.getRandomInt(0,a.length-1)];return"theme/images/fanart_default/"+b},app.helpers.isDefaultImage=function(a){return app.helpers.varGet("defaultImage")==a},app.helpers.addFreewall=function(a){var b=new freewall(a);b.reset({selector:"li",animate:!1,cellW:170,cellH:"230",gutterY:15,gutterX:15,onResize:function(){b.fitWidth()}}),b.fitWidth()},app.helpers.addPosterFreewall=function(a){var b=new freewall(a);b.reset({selector:"li",animate:!1,cellW:170,cellH:"305",gutterY:15,gutterX:15,onResize:function(){b.fitWidth()}}),b.fitWidth()},app.helpers.triggerContentLazy=function(){$(window).trigger("scroll")},app.helpers.getSongKey=function(a){var b={type:"file"==a.songid||"undefined"==typeof a.songid?"file":"songid"};return b.id="file"==b.type?a.file:a.songid,b},app.helpers.parseArtistsArray=function(a){var b,c=[];for(var d in a.artist)b=void 0!==a.artistid?''+a.artist[d]+" ":a.artist[d],c.push(b);return c.join(", ")},app.helpers.parseArtistSummary=function(a){var b={songs:0,albums:0,time:0};for(var c in a.models){b.albums++;for(var d in a.models[c].attributes.songs)b.songs++,b.time=b.time+parseInt(a.models[c].attributes.songs[d].attributes.duration)}var e=[];return e.push(b.songs+" Songs"),e.push(b.albums+" Albums"),e.push(Math.floor(b.time/60)+" Mins"),e.join(" ")},app.helpers.createPaginationRange=function(a,b){var c=void 0!==a?parseInt(a):0,d=c*app.itemsPerPage,e=d+app.itemsPerPage;return b&&b===!0&&(d=0),{end:e,start:d}},app.helpers.createPaginationRange=function(a,b){var c=void 0!==a?parseInt(a):0,d=c*app.itemsPerPage,e=d+app.itemsPerPage;return b&&b===!0&&(d=0),{end:e,start:d}},app.helpers.getSort=function(){var a=app.helpers.arg(3),b=a.split(":"),c={};return""===a||2!=b.length?(c.method="title",c.order="ascending"):(c.method=b[0],c.order=b[1]),c},app.helpers.getSortParams=function(){var a=app.helpers.getSort();return a.method+":"+a.order},app.helpers.getBrowser=function(){var a="other";return window.opera||navigator.userAgent.indexOf(" OPR/")>=0?a="opera":"undefined"!=typeof InstallTrigger?a="firefox":Object.prototype.toString.call(window.HTMLElement).indexOf("Constructor")>0?a="safari":window.chrome&&"opera"!=a?a="chrome":document.documentMode&&(a="ie"),a},app.helpers.applyBackstretch=function(a,b){if("#"==location.hash||""===location.hash&&app.audioStreaming.getPlayer()==b){var c=$(".backstretch img"),d=c.attr("src"),e=app.parseImage(a,"fanart");c.length>0&&d!=e&&$.backstretch(e)}},app.helpers.setTitle=function(a,b){var c={addATag:!1,tabs:!1,activeTab:0},d=$.extend(c,b),e=$("#title");e.empty(),d.addATag&&e.append($(''+a+" "));var f=0;if(d.tabs!==!1){var g=$('
');for(var h in d.tabs){var i=$(''+d.tabs[h]+" ");g.append(i),f++}e.append(g)}d.addATag||e.append(''+a+"
"),app.currentPageTitle=a},app.helpers.getTitle=function(){return app.currentPageTitle},app.helpers.dialogInit=function(a){var b={autoOpen:!1,height:"auto",width:350,modal:!0,resizable:!1};b=jQuery.extend(b,a),$(app.helpers.getSelector("dialog")).dialog(b)},app.helpers.dialog=function(a,b){var c=$(app.helpers.getSelector("dialog"));c.hasClass("ui-dialog-content")||app.helpers.dialogInit(),c.dialog("option","title"," "),c.dialog("option","height","auto"),c.dialog("option","buttons",{}),c.html(a),c.dialog("option",b),c.bind("dialogopen",function(){$(".ui-widget-overlay, .ui-dialog").css("position","fixed"),$(".dialog-menu a:last").addClass("last"),c.keypress(function(a){if(a.keyCode==$.ui.keyCode.ENTER){var b=$(this).parent(),c=b.find(".bind-enter"),d=0===c.length?b.find(".ui-dialog-buttonpane button:first"):c;b.find(".ui-dialog-buttonpane button").length>0&&d.trigger("click")}})}),c.dialog("open")},app.helpers.dialogClose=function(){$(app.helpers.getSelector("dialog")).dialog("close")},app.helpers.confirm=function(a,b){var c={title:"Are you sure?",buttons:{OK:function(){b(),$(this).dialog("close")},Cancel:function(){$(this).dialog("close")}}};app.helpers.dialog(a,c)},app.helpers.prompt=function(a,b){var c={title:"Prompt",buttons:{OK:function(){var a=$("#promptText").val();""!==a&&(b(a),$(this).dialog("close"))},Cancel:function(){$(this).dialog("close")}}};a+='
',app.helpers.dialog(a,c)},app.helpers.aboutDialog=function(){var a={title:"About this thing",buttons:{"Cool!":function(){$(this).dialog("close")},ChangeLog:function(){document.location="#xbmc/changelog",$(this).dialog("close")}}};app.helpers.applyTemplate("About",app.addonData,function(b){app.helpers.dialog(b,a)})},app.helpers.menuDialog=function(a){var b=$(''),c=$(' '),d={};$.each(a.items,function(a,e){d=c.clone(),d.html(e.title).addClass(e.class),d.on("click",function(){app.helpers.dialogClose(),e.callback&&e.callback()}),b.append(d)}),app.helpers.dialog(b,{title:a.title})},app.helpers.makeDropdown=function(a){var b={key:"untitled",items:[],pull:"left",omitwrapper:!1,buttonIcon:"fa-ellipsis-v",buttonText:""},c="",d=$.extend(b,a);d.omitwrapper||(c+=''),c+='",c+='",d.omitwrapper||(c+="
"),c},app.helpers.menuTemplates=function(a,b){var c={};switch(a){case"song":c={title:void 0!==b.label&&""!==b.label?b.label:""!==b.album?b.album:"",key:"song",omitwrapper:!0,items:[{url:"#","class":"song-download",title:"Download song",callback:function(){app.AudioController.downloadFile(b.file,function(a){window.location=a})}},{url:"#","class":"song-custom-playlist",title:"Add to custom playlist",callback:function(){b.songid&&app.playlists.playlistAddItems("lists","new","song",b.songid)}},{url:"#","class":"song-browser-play",title:"Play in browser",callback:function(){b.songid&&app.playlists.playlistAddItems("local","replace","song",b.songid)}}]};break;case"album":c={title:""!==b.album?b.album:b.label,key:"album",omitwrapper:!0,items:[{url:"#","class":"album-add-xbmc",title:"Add to XBMC",callback:function(){app.playlists.playlistAddItems("xbmc","append","album",b.albumid)}},{url:"#","class":"album-add-local",title:"Play in browser",callback:function(){app.playlists.playlistAddItems("local","replace","album",b.albumid)}},{url:"#","class":"album-add-lists",title:"Save to lists",callback:function(){app.playlists.playlistAddItems("lists","new","album",b.albumid)}}]};break;case"artist":c={title:b.label,key:"artist",omitwrapper:!0,items:[{url:"#","class":"artist-add-xbmc",title:"Add to XBMC",callback:function(){app.playlists.playlistAddItems("xbmc","append","artist",b.artistid)}},{url:"#","class":"artist-add-local",title:"Play in browser",callback:function(){app.playlists.playlistAddItems("local","replace","artist",b.artistid)}},{url:"#","class":"artist-add-lists",title:"Save to lists",callback:function(){app.playlists.playlistAddItems("lists","new","artist",b.artistid)}}]};break;case"movie":c={title:b.label,key:"movie",omitwrapper:!0,items:[{url:"#","class":"movie-download",title:"Download Movie",callback:function(){app.AudioController.downloadFile(b.file,function(a){window.location=a})}}]};break;case"playlistShell":c={key:"playlist",pull:"right",items:[{"class":"dropdown-header",title:"Current Playlist"},{url:"#","class":"clear-playlist",title:"Clear Playlist"},{url:"#","class":"refresh-playlist",title:"Refresh Playlist"},{"class":"dropdown-header",title:"Audio"},{url:"#","class":"save-playlist",title:"Save XBMC Playlist"},{url:"#","class":"new-custom-playlist",title:"New Browser Playlist"}]}}return c},app.helpers.loadTemplates=function(a,b){var c=[];$.each(a,function(a,b){app[b]?c.push($.get("tpl/"+b+".html",function(a){app[b].prototype.template=_.template(a)},"html")):alert(b+" not found")}),$.when.apply(null,c).done(b)},app.helpers.loadTemplate=function(a,b){$.get("tpl/"+a+".html",function(c){app.tpl[a]=c,b&&b(app.tpl[a])})},app.helpers.applyTemplate=function(a,b,c){var d="";"undefined"!=typeof app.tpl[a]?(d=_.template(app.tpl[a],b),c(d)):app.helpers.loadTemplate(a,function(a){d=_.template(a,b),c(d)})},app.helpers.nearbottom=function(){var a=$(window),b=0+$(document).height()-a.scrollTop()-a.height(),c=600;return c>b},app.parseImage=function(a,b){return b="undefined"==typeof b?"default":b,"space"==b?"theme/images/space.png":void 0===a||""===a?"fanart"==b?app.helpers.getDefaultImage(b):app.helpers.varGet("defaultImage"):"image/"+encodeURIComponent(a)},app.nl2br=function(a,b){var c=b||"undefined"==typeof b?" ":" ";return(a+"").replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g,"$1"+c+"$2")},app.notification=function(a){var b=$("#notify");a!==!1&&""!==a&&(b.find(".content").html(a),b.removeClass("hidden").parent().removeClass("hidden"),clearTimeout(notificationTimoutObj),notificationTimoutObj=setTimeout(app.notificationHide,6e3))},app.notificationHide=function(){$notify=$("#notify").addClass("hidden").parent().addClass("hidden")},app.helpers.addScrollBar=function(a,b){scrollbarSettings={cursorwidth:8,cursorminheight:37,touchbehavior:!1,cursorcolor:"#606768"},settings=$.extend(scrollbarSettings,b)},app.storage={nameSpace:"chorus::",set:function(a,b){$.totalStorage(this.nameSpace+a,b)},get:function(a,b){var c=$.totalStorage(this.nameSpace+a);return void 0!==c&&""!==c?c:b}}}),function(a){$.fn.attr=function(){if(0===arguments.length){if(0===this.length)return null;var b={};return $.each(this[0].attributes,function(){this.specified&&(b[this.name]=this.value)}),b}return a.apply(this,arguments)}}($.fn.attr);var app={views:{},models:{},cached:{},counts:{503:0,"503total":0},state:"notconnected",jsonRpcUrl:"/jsonrpc",itemsPerPage:60,nextPageLoading:!1,vars:{lastHash:"#",defaultImage:"theme/images/default.png"},artistFields:["instrument","style","mood","born","formed","description","genre","died","disbanded","yearsactive","musicbrainzartistid","fanart","thumbnail"],albumFields:["title","description","artist","genre","theme","mood","style","type","albumlabel","rating","year","fanart","thumbnail","playcount","genreid","artistid","displayartist"],songFields:["title","artist","albumartist","genre","year","rating","album","track","duration","playcount","fanart","thumbnail","file","albumid","lastplayed","disc","genreid","artistid","displayartist","albumartistid"],movieFields:["title","genre","year","rating","director","trailer","tagline","plot","plotoutline","originaltitle","lastplayed","playcount","writer","studio","mpaa","cast","country","imdbnumber","runtime","set","showlink","streamdetails","top250","votes","fanart","thumbnail","file","sorttitle","resume","setid","dateadded","tag","art"],tvshowFields:["title","genre","year","rating","plot","studio","mpaa","cast","playcount","episode","imdbnumber","premiered","votes","lastplayed","thumbnail","file","originaltitle","sorttitle","episodeguide","season","watchedepisodes","dateadded","tag","art"],tvepisodeFields:["title","plot","votes","rating","writer","firstaired","playcount","runtime","director","productioncode","season","episode","originaltitle","showtitle","cast","streamdetails","lastplayed","fanart","thumbnail","file","resume","tvshowid","dateadded","uniqueid","art"],tvseasonFields:["season","showtitle","playcount","episode","fanart","thumbnail","tvshowid","watchedepisodes","art"],fileFields:["title","size","mimetype","file","dateadded","thumbnail","artistid","albumid","uniqueid"],playlistItemFields:["title","artist","albumartist","genre","year","rating","album","track","duration","playcount","director","tagline","plotoutline","originaltitle","lastplayed","mpaa","cast","country","imdbnumber","premiered","runtime","showlink","streamdetails","votes","firstaired","season","episode","showtitle","thumbnail","fanart","file","resume","artistid","albumid","tvshowid","setid","watchedepisodes","disc","tag","art","genreid","displayartist","albumartistid","description","theme","mood","style","albumlabel","sorttitle","uniqueid","dateadded","channel","channeltype","hidden","locked","channelnumber","starttime","endtime"],albumFilters:[],songFilters:[],templates:["HomeView","ContactView","ShellView","ArtistView","ArtistSummaryView","ArtistListItemView","ArtistsView","AlbumView","AlbumItemView","SongView","AristsRandView","ArtistLargeItemView","AlbumItemSmallView","AlbumArtistView","PlaylistItemView","PlaylistCustomListItemView","CustomPlaylistSongView","FilesView","FileView","MovieListItemView","MovieView","TvshowListItemView","TvSeasonListItemView","TvshowView","RemoteView"],tpl:{}};app.Router=Backbone.Router.extend({routes:{"":"home",contact:"contact","artist/:id":"artist","artist/:id/:task":"artist",artists:"artists","album/:id":"album",albums:"albums","playlist/:id":"playlist","search/:q":"search",search:"searchLanding","scan/:type":"scan",thumbsup:"thumbsup",files:"files","movies/page/:num/:sort":"moviesPage","movies/genre/:genre":"moviesGenre",movies:"moviesLanding","movie/:id":"movie","tvshows/page/:num/:sort":"tvshows",tvshows:"tvshowsLanding","tvshow/:id":"tvshow","tvshow/:tvid/:seas":"season","tvshow/:tv/:s/:e":"episode","xbmc/:op":"xbmc",remote:"remoteControl",playlists:"playlists"},initialize:function(){app.shellView=new app.ShellView,$("body").html(app.shellView.render().el),$(window).trigger("shellReady"),this.$content=$("#content")},home:function(){var a="",b=app.playlists.getNowPlaying();if(this.$content.html(""),app.helpers.setTitle(""),app.shellView.selectMenuItem("home","no-sidebar"),"local"==app.audioStreaming.getPlayer()){var c=app.audioStreaming.getNowPlayingSong();a=void 0===c.fanart?"":c.fanart}else a=void 0===b||void 0===b.item||void 0===b.item.fanart?"":b.item.fanart;if(0===$(".backstretch").length){var d=app.parseImage(a,"fanart");$.backstretch(d)}},search:function(a){$("#search").val(a),app.shellView.search(a)},searchLanding:function(){this.$content.html('Type to search
'),app.shellView.selectMenuItem("search","no-sidebar"),$("#search").focus()},artist:function(a,b){"undefined"==typeof b&&(b="view"),this.$content.html('Loading Artist
'),app.artistsView=new app.ArtistsView,app.artistsView.render();var c=new app.Artist({id:parseInt(a),fields:app.artistFields}),d=this;c.fetch({success:function(a){d.$content.html(new app.ArtistView({model:a}).render().el),app.helpers.setTitle('Artists '+a.attributes.artist),app.shellView.selectMenuItem("artists","sidebar")}})},artists:function(){var a=$('
');app.artistsView=new app.ArtistsView,a.html(app.artistsView.render().el),$("#content").html(a),app.helpers.setTitle("Artists",{addATag:"#artists"}),app.shellView.selectMenuItem("artists","sidebar")},album:function(a){var b={attributes:{albumid:a}};app.cached.albumView=new app.AlbumView({model:b,type:"album"}),0===$(".album-page").length?$("#content").html(app.cached.albumView.render().el):app.cached.albumView.render(),app.shellView.selectMenuItem("albums","sidebar")},albums:function(){app.shellView.selectMenuItem("album","no-sidebar");var a=this;$("#content").html('Loading Albums
'),app.cached.recentlyAddedAlbums=new app.AlbumRecentlyAddedXbmcCollection,app.cached.recentlyAddedAlbums.fetch({success:function(b){app.cached.recentlyPlayedAlbums=new app.AlbumRecentlyPlayedXbmcCollection,app.cached.recentlyPlayedAlbums.fetch({success:function(c){var d=c.models,e={},f=$('
');_.each(d,function(a){e[a.attributes.albumid]=!0}),_.each(b.models,function(a){e[a.attributes.albumid]||d.push(a)}),d=app.helpers.shuffle(d),b.models=d,b.length=d.length,app.cached.recentlAlbums=b,app.cached.recentAlbumsView=new app.SmallAlbumsList({model:b,className:"album-list-landing"}),f.html(app.cached.recentAlbumsView.render().el),a.$content.html(f),app.helpers.setTitle("Recent",{addATag:"#albums"}),app.shellView.selectMenuItem("albums","no-sidebar"),app.helpers.addFreewall("ul.album-list-landing")}})}})},files:function(){app.cached.fileCollection=new app.FileCollection,app.cached.fileCollection.fetch({name:"sources",success:function(a){app.helpers.setTitle(' '),app.shellView.selectMenuItem("files","sidebar"),app.cached.filesView=new app.FilesView({model:a}),app.cached.filesView.render()}})},playlist:function(a){app.cached.playlistCustomListSongCollection=new app.PlaylistCustomListSongCollection,app.cached.playlistCustomListSongCollection.fetch({name:a,success:function(b){app.cached.customPlaylistSongListView=new app.CustomPlaylistSongListView({model:b}),$("#content").html(app.cached.customPlaylistSongListView.render().el);var c=app.playlists.getCustomPlaylist(a);app.helpers.setTitle(''+c.name+" "),app.shellView.selectMenuItem("playlist","no-sidebar")}})},playlists:function(){app.helpers.setTitle("Playlists"),app.shellView.selectMenuItem("playlists","no-sidebar")},thumbsup:function(){app.cached.thumbsUpPage=new app.ThumbsupView,this.$content.html(app.cached.thumbsUpPage.render().$el)},movies:function(a,b){var c=$("#content"),d=app.helpers.getSortParams(),e=$("ul.movie-page-list",c),f=!1,g=!1,h=app.moviePageNum,i=$(window),j=0===e.length;if(d!=app.filters.movieLastSort&&(j=!0),app.filters.movieLastSort=d,b=void 0!==b&&b===!0,f=b!==!0,app.moviePageNum=parseInt(a),app.router.navigate("movies/page/"+a+"/"+d),app.settings.set("movieSort",d),j===!0)c.html('Loading Movies
'),app.helpers.setTitle(' '),app.shellView.selectMenuItem("movies","no-sidebar"),f=!0;else if(0===app.moviePageNum)return i.scrollTo(0),void(app.moviePageNum=h);app.cached.movieCollection=new app.MovieCollection,app.cached.movieCollection.fetch({fullRange:f,success:function(a){if(a.showNext=!0,app.cached.movieListView=new app.MovieListView({model:a}),j===!0||0===app.moviePageNum||b!==!0)c.html(app.cached.movieListView.render().$el),c.prepend(app.filters.renderFilters("movie")),i.scrollTo(0),app.cached.movieListView.backFromMovie(f,g),f===!0&&g!==!0&&app.moviePageNum>1&&(i.scrollTo("85%"),g=!0),g===!1&&app.helpers.triggerContentLazy();else{var d=$(".video-list").last();0===d.find("li").length?d.remove():c.append(app.cached.movieListView.render().$el)}app.helpers.triggerContentLazy()}})},moviesPage:function(a){this.movies(a,!1)},moviesLanding:function(){var a=this;app.helpers.setTitle(' '),a.$content.html('Loading Movies
'),app.movieRecentCollection=new app.MovieRecentCollection,app.movieRecentCollection.fetch({success:function(b){app.cached.movieListView=new app.MovieListView({model:b}),a.$content.html(app.cached.movieListView.render().$el),a.$content.prepend(app.filters.renderFilters("movie")),a.$content.find(".next-page").remove(),a.$content.find("ul").removeClass("movie-page-list").addClass("movie-recent-list"),a.$content.find("img").lazyload({threshold:200}),app.shellView.selectMenuItem("movies","no-sidebar"),app.helpers.triggerContentLazy(),$(window).scrollTo(0)}})},moviesGenre:function(a){var b=this;app.helpers.setTitle(' '),b.$content.html('Loading Movies
'),app.movieFitleredCollection=new app.MovieFitleredCollection,app.movieFitleredCollection.fetch({filter:{genre:a},success:function(a){app.cached.movieListView=new app.MovieListView({model:a}),b.$content.html(app.cached.movieListView.render().$el),b.$content.find(".next-page").remove(),b.$content.find("ul").removeClass("movie-list").addClass("movie-genre-list"),app.shellView.selectMenuItem("movies","no-sidebar"),app.helpers.triggerContentLazy(),$(window).scrollTo(0)}})},movie:function(a){var b=new app.Movie({id:parseInt(a)}),c=this;c.$content.html('Loading Movie
'),b.fetch({success:function(a){c.$content.html(new app.MovieView({model:a}).render().el),app.helpers.setTitle(' '+a.attributes.title+" "+a.attributes.year+" "),app.shellView.selectMenuItem("movie","sidebar")}})},tvshows:function(){var a=$("#content");app.shellView.selectMenuItem("tvshows","no-sidebar"),a.html('Loading TV Shows
'),app.helpers.setTitle(' '),app.cached.tvCollection=new app.TvshowAllCollection,app.cached.tvCollection.fetch({success:function(b){app.cached.tvshowListView=new app.TvshowListView({model:b}),a.html(app.cached.tvshowListView.render().$el),a.prepend(app.filters.renderFilters("tvshow")),app.helpers.triggerContentLazy()}})},tvshowsLanding:function(){var a=$("#content");app.shellView.selectMenuItem("tvshows","no-sidebar"),a.html('Loading TV Shows
'),app.helpers.setTitle(' '),app.cached.recentTvCollection=new app.RecentTvepisodeCollection,app.cached.recentTvCollection.fetch({success:function(b){app.cached.recentTvshowListView=new app.TvSeasonListView({model:b,className:"video-list recent-tv-list"}),a.html(app.cached.recentTvshowListView.render().$el),a.prepend(app.filters.renderFilters("tvshow")),app.helpers.triggerContentLazy()}})},tvshow:function(a){var b=new app.TVShow({id:parseInt(a)}),c=this;c.$content.html('Loading TV Show
'),b.fetch({success:function(a){c.$content.html(new app.TvshowView({model:a}).render().el),app.helpers.setTitle(' '+a.attributes.label),app.shellView.selectMenuItem("tvshow","sidebar")}})},season:function(a,b){var c=new app.TVShow({id:parseInt(a)}),d=this;d.$content.html('Loading TV Show
'),c.fetch({success:function(c){c.attributes.type="season",c.attributes.season=b;var e=app.stores.TvSeasons,f="seasons:"+a;void 0!==e&&void 0!==e[f]&&e[f].length>0&&$.each(e[f],function(a,d){d.season==b&&""!==d.thumbnail&&(c.attributes.thumbnail=d.thumbnail)}),d.$content.html(new app.TvshowView({model:c}).render().el),app.helpers.setTitle(''+c.attributes.label+" Season "+b),app.shellView.selectMenuItem("tvshow","sidebar")}})},episode:function(a,b,c){var d=new app.TVEpisode({id:parseInt(c)}),e=this;e.$content.html('Loading TV Show
'),d.fetch({success:function(c){c.attributes.type="episode",c.attributes.tvshowid=a,c.attributes.season=b,e.$content.html(new app.TvshowView({model:c}).render().el),app.helpers.setTitle(''+c.attributes.showtitle+" Season "+b+" E"+c.attributes.episode+". "+c.attributes.label),app.shellView.selectMenuItem("tvshow","sidebar")}})},remoteControl:function(){app.playlists.changePlaylistView("xbmc"),app.helpers.setTitle("Remote"),app.shellView.selectMenuItem("remote","no-sidebar")},scan:function(a){var b="audio"==a?"AudioLibrary":"VideoLibrary",c=this;app.xbmcController.command(b+".Scan",{},function(){app.notification("Started "+a+" Scan"),app.shellView.selectMenuItem("scan","no-sidebar"),c.$content.html('Scanning '+a+" library
"),app.helpers.setTitle(' '+a+" scan")})},xbmc:function(a){app.cached.xbmcView=new app.XbmcView({model:a}),$("#content").html(app.cached.xbmcView.render().$el),app.helpers.setTitle('XBMC '),app.shellView.selectMenuItem("xbmc","no-sidebar")}}),$(document).on("ready",function(){app.helpers.loadTemplates(app.templates,function(){app.router=new app.Router,Backbone.history.start()}),app.store.libraryCall(function(){$("body").addClass("artists-ready"),app.notification("Artists loaded")},"artistsReady"),app.store.libraryCall(function(){$("body").addClass("audio-library-ready"),app.notification("Library loaded"),"local"==app.settings.get("lastPlayer","xbmc")&&$(".local-tab").trigger("click")},"songsReady")}),app.filters={movieLastSort:"title:ascending",tvshowLastSort:"title:ascending",movieFilters:{title:"Movies",basePath:"#movies/page/",paths:[{title:"All Movies",path:"movies/page/0/title:ascending",argOne:"page",key:"all"},{title:"Recently Added",path:"movies",argOne:"",key:"recent"}],sort:["title","date","rating","year","file"]},tvshowFilters:{title:"TV Show",basePath:"#tvshows/page/",paths:[{title:"All TV",path:"tvshows/page/0/title:ascending",argOne:"page",key:"all"},{title:"Recently Added",path:"tvshows",argOne:"",key:"recent"}],sort:["title","date","rating","year","file"]},renderFilters:function(a){var b=$("
",{"class":"filter-wrapper "+a+"-filters"}),c=$("
",{"class":"links"}),d=$("
",{"class":"sort-wrapper dropdown"}),e=app.filters[a+"Filters"],f=app.helpers.getSort(),g=$("body");$.each(e.paths,function(a,d){var e=app.helpers.arg(1)==d.argOne,f=e?" active":"";e&&b.addClass("active-tab-"+d.key),c.append($(''+d.title+" "))});var h=[],i={},j="ascending",k="asc";$.each(e.sort,function(a,b){j=b==f.method?"ascending"==f.order?"descending":"ascending":j,k=app.filters.shortOrder(j),i={title:b+(f.method==b?' ':""),url:e.basePath+"0/"+b+":"+j,"class":"dir-"+j},h.push(i)});var l={key:"sort-items",items:h,pull:"right",buttonIcon:"fa-angle-"+("desc"==app.filters.shortOrder(f.order)?"down":"up"),buttonText:" "+f.method};d.append(app.helpers.makeDropdown(l));var m=$(' ');return m.on("click",function(){g.toggleClass("hide-watched"),app.settings.set("hideWatched",g.hasClass("hide-watched"))}),d.append(m),app.settings.get("hideWatched",!1)&&g.addClass("hide-watched"),b.append(c).append(d),b},shortOrder:function(a,b){return void 0!==b&&b===!0?"ascending"!=a?"asc":"desc":"ascending"==a?"asc":"desc"}},app.pager={type:"movie",map:{movie:{allCollection:"MovieAllCollection",collection:"CustomMovieCollection",view:"MovieListView"}},setType:function(a){return this.type=a,this},viewHelpers:function(a,b){var c=app.pager,d=$("body").width()<800,e=d?"0.8":"500px";if(c.type=void 0!==b?b:this.type,c.$el=a,a.find("li").length>0){var f=$('More... ');c.$el.append(f)}return $(window).smack({threshold:e}).done(function(){$("ul."+c.type+"-page-list").find(".next-page").last().trigger("click")}),c.$el.addClass("page-"+app[c.type+"PageNum"]),c.$el.find("img").lazyload({threshold:200}),c.$el},nextPage:function(a,b){return this.type=void 0!==b?b:this.type,a.remove(),app.router[this.type+"s"](app[this.type+"PageNum"]+1,!0),a},libraryNav:function(a,b,c){var d=!1,e=0,f=0,g=0;return $.each(c,function(c,h){var i=h.attributes,j=a+"id";d===!0&&(e=parseInt(i[j]),d=!1),i[j]==b&&(d=!0,g=f),f=b}),{next:e,prev:g}}},app.settings={settingsKey:"settings",defaultSettings:{init:!0,hideWatched:!1,lastPlayer:"xbmc",movieSort:"title:ascending"},set:function(a,b){var c=app.settings.allSettings();return c[a]=b,app.storageController.setStorage(app.settings.settingsKey,c),b},get:function(a,b){var c=app.settings.allSettings();return void 0!==c[a]?c[a]:b},allSettings:function(){var a=app.storageController.getStorage(app.settings.settingsKey);return null===a||void 0===a.init?(app.storageController.setStorage(app.settings.settingsKey,app.settings.defaultSettings),app.settings.defaultSettings):a}},app.Artist=Backbone.Model.extend({initialize:function(){},defaults:{artistid:1,thumbnail:"",fanart:"",artist:"",label:"",description:"",born:"",died:""},sync:function(a,b,c){"read"===a&&app.store.getArtist(parseInt(this.id),function(a){a.attributes.thumbsup=app.playlists.isThumbsUp("artist",a.attributes.artistid),c.success(a.attributes)})}}),app.Album=Backbone.Model.extend({initialize:function(){},defaults:{album:"",albumid:"",thumbnail:"",artist:"",artistid:"",songs:[],albumsitems:[]},sync:function(a){}}),app.Song=Backbone.Model.extend({initialize:function(){},defaults:{label:"",thumbnail:"",albumid:0,artistid:[0],type:"song",playlistId:0,url:"#",subLink:""},sync:function(a){}}),app.PlaylistItem=Backbone.Model.extend({initialize:function(){},defaults:{label:"",thumbnail:"",albumid:0,artistid:[0],songid:"file",file:"",list:"xbmc",playlistId:0,type:"file"}}),app.PlaylistCustomListItem=Backbone.Model.extend({initialize:function(){},defaults:{name:"",items:[],id:0,type:"file"}}),app.PlaylistCustomListItemSong=Backbone.Model.extend({initialize:function(){},defaults:{label:"",thumbnail:"",albumid:0,artistid:[0]}}),app.File=Backbone.Model.extend({initialize:function(){},defaults:{filetype:"",size:"",mimetype:"",file:"",lastmodified:"",id:0,thumbnail:""},sync:function(a){}}),app.Movie=Backbone.Model.extend({initialize:function(){},defaults:{movieid:1,thumbnail:"",fanart:"",year:"",url:"#movies",thumbsup:!1,libraryId:1},sync:function(a,b,c){"read"===a&&app.xbmcController.command("VideoLibrary.GetMovieDetails",[parseInt(this.id),app.movieFields],function(a){var b=a.result.moviedetails;
+b.thumbsup=app.playlists.getThumbsUp("movie",b.movieid),c.success(b)})}}),app.TVShow=Backbone.Model.extend({initialize:function(){},defaults:{tvshowid:"",label:"",watchedepisodes:"",genre:"",year:"",cast:[],rating:0,url:"#tv",episodeid:""},sync:function(a,b,c){if("read"===a){var d=app.tvshowFields;-1==$.inArray("fanart",d)&&d.push("fanart"),app.xbmcController.command("VideoLibrary.GetTVShowDetails",[parseInt(this.id),d],function(a){var b=a.result.tvshowdetails;b.thumbsup=app.playlists.getThumbsUp("tvshow",b.tvshowid),b.url="#tvshow/"+b.tvshowid,app.cached.tvseasonCollection=new app.TvseasonCollection,app.cached.tvseasonCollection.fetch({tvshowid:b.tvshowid,success:function(a){b.seasons=a,c.success(b)}})})}}}),app.TVEpisode=Backbone.Model.extend({initialize:function(){},defaults:{album:"",mpaa:"",thumbnail:"",artist:"",genre:[],artistid:"",songs:[],albumsitems:[],url:"#tv",imdbnumber:""},sync:function(a,b,c){"read"===a&&app.xbmcController.command("VideoLibrary.GetEpisodeDetails",[parseInt(this.id),app.tvepisodeFields],function(a){var b=a.result.episodedetails;b.thumbsup=app.playlists.getThumbsUp("episode",b.episodeid),c.success(b)})}}),app.Video=Backbone.Model.extend({initialize:function(){},defaults:{album:"",albumid:"",thumbnail:"",artist:"",artistid:"",songs:[],albumsitems:[],url:"#video"},sync:function(a){}}),app.addOns={addon:{}},app.addOns.getSources=function(a){app.xbmcController.command("Addons.GetAddons",["xbmc.addon.audio","unknown","all",["name","thumbnail","enabled"]],function(b){var c=b.result.addons,d=[];for(var e in c){var f=c[e],g={};f.enabled&&(g={file:"plugin://"+f.addonid+"/",title:f.name,filetype:"directory",id:f.addonid,sourcetype:"music",playlistId:app.AudioController.playlistId},f=$.extend(f,g),d.push(f))}app.cached.addonSources=d,a&&a(d)})},app.addOns.ready=function(a){"undefined"!=typeof app.cached.addonSources?a(app.cached.addonSources):app.addOns.getSources(a)},app.addOns.getAddon=function(a){if("undefined"!=typeof app.cached.addonSources)for(var b in app.cached.addonSources){var c=app.cached.addonSources[b],d=app.addOns.slug(c);if(d==a)return c}return{}},app.addOns.invokeAll=function(a,b,c,d){if("undefined"!=typeof app.cached.addonSources)for(var e in app.cached.addonSources){var f=app.cached.addonSources[e],g=app.addOns.slug(f);b=app.addOns.invoke(g,a,b,c,d)}else app.addOns.getSources();return b},app.addOns.invoke=function(a,b,c,d,e){if("undefined"!=typeof app.addOns.addon[a]&&"function"==typeof app.addOns.addon[a][b]){var f=app.addOns.addon[a][b];c=f(c,d,e)}return c},app.addOns.slug=function(a){return a.addonid.split(".").join("")},app.AudioController={playlistId:0,currentPlaylist:{items:[],status:"none"}},app.AudioController.playlistRender=function(a){app.playlists.renderXbmcPlaylist(app.AudioController.playlistId,a)},app.AudioController.playlistAdd=function(a,b,c){var d={};d[a]=b,app.xbmcController.command("Playlist.Add",[app.AudioController.playlistId,d],function(){app.AudioController.getPlaylistItems(function(a){app.AudioController.currentPlaylist=a,c(a)})})},app.AudioController.playlistAddMultiple=function(a,b,c){var d,e=[];for(var f in b)param={},d=b[f],"mixed"==a&&(a="number"==typeof d?"songid":"file"),param[a]=d,e.push({method:"Playlist.Add",params:[app.AudioController.playlistId,param]});app.xbmcController.multipleCommand(e,function(){app.AudioController.getPlaylistItems(function(a){app.AudioController.currentPlaylist=a,c(a)})})},app.AudioController.playlistSwap=function(a,b,c){app.playlists.playlistSwap(app.AudioController.playlistId,"songid",a,b,c)},app.AudioController.playlistClearAdd=function(a,b,c){app.xbmcController.command("Playlist.Clear",[app.AudioController.playlistId],function(){app.notification("Playlist Cleared"),app.AudioController.playlistAdd(a,b,c)})},app.AudioController.playlistClear=function(a){app.xbmcController.command("Playlist.Clear",[app.AudioController.playlistId],function(b){a&&a(b)})},app.AudioController.playlistPlaySongId=function(a){var b=!1;$.each(app.AudioController.currentPlaylist.items,function(c,d){d.id==a&&b===!1&&(app.AudioController.playPlaylistPosition(c,function(){app.AudioController.playlistRender(),app.notification('Now playing "'+d.label+'"')}),b=!0)})},app.AudioController.playSongById=function(a,b,c,d){app.helpers.exists(d)&&d===!0?app.AudioController.playlistClearAdd(b,c,function(){app.AudioController.playlistPlaySongId(a)}):app.AudioController.playlistAdd(b,c,function(){app.AudioController.playlistPlaySongId(a)})},app.AudioController.insertAndPlay=function(a,b,c){app.playlists.insertAndPlay(app.AudioController.playlistId,a,b,c)},app.AudioController.downloadFile=function(a,b){app.xbmcController.command("Files.PrepareDownload",[a],function(a){b&&b(a.result.details.path)})},app.AudioController.sendPlayerCommand=function(a,b){app.xbmcController.command(a,[app.playlists.getNowPlaying("activePlayer"),b],function(){app.AudioController.updatePlayerState()})},app.AudioController.playPlaylistPosition=function(a,b){app.xbmcController.command("Player.Open",[{playlistid:app.AudioController.playlistId,position:a}],function(a){b(a.result)})},app.AudioController.removePlaylistPosition=function(a,b){app.xbmcController.command("Playlist.Remove",[app.AudioController.playlistId,a],function(a){b(a.result)})},app.AudioController.seek=function(a,b){app.xbmcController.command("Player.Seek",[app.playlists.getNowPlaying("activePlayer"),a],function(a){app.helpers.exists(b)&&b(a.result)})},app.AudioController.getPlaylistItems=function(a){app.playlists.getXbmcPlaylist(app.AudioController.playlistId,a)},app.AudioController.setVolume=function(a){app.xbmcController.command("Application.SetVolume",[a],function(){})},app.AudioController.audioLibraryScan=function(){app.xbmcController.command("AudioLibrary.Scan",[],function(){})},app.AudioController.getNowPlayingSong=function(a,b){void 0===b&&(b=!1);var c=4;if(app.counts["503total"]>30&&(c=6,app.notification("No connection to XBMC for 10mins! I'll check if it's there less often now ")),app.counts["503total"]>70&&(c=12,app.notification("No connection to XBMC for 30mins! I'm pretty sure it has gone walkabout")),app.counts[503]>c&&(app.counts[503]=0,app.counts["503total"]++),0!==app.counts[503])return app.counts[503]++,app.state="notconnected",void app.notification("Lost connection to XBMC");app.counts[503]=1;var d={item:app.playlistItemFields,player:["playlistid","speed","position","totaltime","time","percentage","shuffled","repeat","canrepeat","canshuffle","canseek"]},e={status:"notPlaying"},f=[];f=[{method:"Player.GetActivePlayers",params:[]}],b&&f.push({method:"Application.GetProperties",params:[["volume","muted"]]}),app.xbmcController.multipleCommand(f,function(c){var g=c[0];if(app.counts[503]=0,app.counts["503total"]=0,app.state="connected",app.AudioController.activePlayers=g.result,b){var h=c[1];e.volume=h.result}g.result.length>0||b?(e.activePlayer=void 0!==g.result[0]?g.result[0].playerid:0,app.state="playing",f=[{method:"Player.GetProperties",params:[e.activePlayer,d.player]}],b&&f.push({method:"Player.GetItem",params:[e.activePlayer,d.item]}),app.xbmcController.multipleCommand(f,function(c){e.status="playing",e.player=c[0].result,g.result.length>0&&b&&(e.item=c[1].result.item,e.item.list="xbmc"),app.cached.nowPlaying=$.extend(app.cached.nowPlaying,e),a&&a(app.playlists.getNowPlaying())})):(app.cached.nowPlaying=$.extend(app.cached.nowPlaying,e),a(app.playlists.getNowPlaying()))})};var stateTimeout={};app.AudioController.updatePlayerState=function(){var a=$("body"),b="notconnected";app.state==b?a.addClass(b):a.removeClass(b),app.AudioController.getNowPlayingSong(function(a){app.shellView.updateState(a)},!app.notifications.wsActive)},soundManager.setup({url:"lib/soundmanager/swf/",flashVersion:9,preferFlash:!1,useHTML5Audio:!0,useFlashBlock:!1,flashLoadTimeout:3e3,debugMode:!1,noSWFCache:!0,debugFlash:!1,onready:function(){app.audioStreaming.init()},ontimeout:function(){console.log("timeout"),soundManager.flashLoadTimeout=0,soundManager.onerror={},soundManager.reboot()}}),$(window).on("shellReady",function(){app.audioStreaming.$body=$("body"),app.audioStreaming.$window=$(window),app.audioStreaming.playList={items:[],playingPosition:0,id:0,repeat:"off",random:"off",mute:!1}}),$(window).on("browserPlayerStart",function(a){app.audioStreaming.playbackInProgress=!0,app.audioStreaming.setTitle("playing",a.label)}),$(window).on("browserPlayerStop",function(){app.audioStreaming.playbackInProgress=!1,app.audioStreaming.setTitle("stop","Nothing Playing")}),app.audioStreaming={localPlay:!1,nowplaying:{init:1},lastPos:0,defaultVol:60,progressEl:"#browser-progress-bar",volumeEl:"#browser-volume",playlistEl:"#playlist-local",playbackInProgress:!1,currentPlaybackId:"browser-none",lastListKey:"lastBrowserList",classLocal:"player-view-local",classXbmc:"player-view-xbmc",classLocalPlaying:"browser-playing",classLocalPaused:"browser-paused",playerReady:function(){},init:function(){$(window).trigger("soundManagerReady"),soundManager.setVolume(app.audioStreaming.defaultVol);var a=app.storageController.getStorage(app.audioStreaming.lastListKey);void 0!==a&&null!==a&&a.length>0&&app.store.libraryCall(function(){app.playlists.playlistGetItems("items",a,function(a){if(void 0!==app.audioStreaming.playList&&(app.audioStreaming.playList.items=a,app.audioStreaming.renderPlaylistItems(),void 0!==a.models&&void 0!==a.models[0])){var b=a.models[0];app.audioStreaming.loadSong(b),app.audioStreaming.updatePlayingState(b.attributes)}})},"songsReady"),app.audioStreaming.progressInit(),app.audioStreaming.volumeInit()},setPlayer:function(a){var b,c=$("body");"xbmc"==a&&(c.addClass(app.audioStreaming.classXbmc).removeClass(app.audioStreaming.classLocal),b=app.playlists.getNowPlaying("item"),app.helpers.applyBackstretch(b.fanart,"xbmc")),"local"==a&&(c.removeClass(app.audioStreaming.classXbmc).addClass(app.audioStreaming.classLocal),0===$("ul.browser-playlist-song-list").length&&app.audioStreaming.renderPlaylistItems(),b=app.audioStreaming.getNowPlayingSong(),app.helpers.applyBackstretch(void 0!==b.fanart?b.fanart:"","local"))},getPlayer:function(){return $("body").hasClass(app.audioStreaming.classLocal)?"local":"xbmc"},getNowPlayingSong:function(){if(void 0!==app.audioStreaming.playList&&void 0!==app.audioStreaming.playList.items.models&&void 0!==app.audioStreaming.playList.items.models[app.audioStreaming.playList.playingPosition]){var a=app.audioStreaming.playList.items.models[app.audioStreaming.playList.playingPosition];return a.attributes}return{}},playPosition:function(a){if($("li.browser-player div.playlist-item").removeClass("browser-playing-row"),app.audioStreaming.playList.items.models.length>0&&void 0!==app.audioStreaming.playList.items.models[parseInt(a)]){var b=app.audioStreaming.playList.items.models[parseInt(a)].attributes;app.audioStreaming.playList.playingPosition=a,app.audioStreaming.loadSong({attributes:b},function(){app.audioStreaming.play(),app.notification("Playing "+b.label+" in the browser")})}else app.audioStreaming.stop()},setPlaylistItems:function(a){var b=[];$.each(a.models,function(c,d){"undefined"!=typeof d.attributes.songid&&(b.push(d.attributes.songid),a.models[c].attributes.type="song")}),app.storageController.setStorage(app.audioStreaming.lastListKey,b),app.audioStreaming.playList.items=a},appendPlaylistItems:function(a,b){var c;void 0===app.audioStreaming.playList?c=a:(c=app.audioStreaming.playList.items,void 0===c.models&&(c.models=[]),$.each(a.models,function(a,b){c.models.push(b)}),c.length=c.models.length),app.audioStreaming.setPlaylistItems(c),app.audioStreaming.renderPlaylistItems(),b&&b()},replacePlaylistItems:function(a,b){app.audioStreaming.setPlaylistItems(a),app.audioStreaming.renderPlaylistItems(),app.audioStreaming.loadSong(a.models[0],function(){app.playlists.changePlaylistView("local"),app.audioStreaming.playPosition(0),b&&b()})},renderPlaylistItems:function(){if(void 0!==app.audioStreaming.playList){var a=app.audioStreaming.playList.items,b=new app.CustomPlaylistSongSmallListView({model:a}).render();$(app.audioStreaming.playlistEl).html(b.$el)}},playlistClear:function(a){var b={models:[]};app.audioStreaming.setPlaylistItems(b),a&&a()},playlistRender:function(){app.audioStreaming.renderPlaylistItems()},loadSong:function(a,b){app.audioStreaming.stop();var c=soundManager,d=a.attributes;app.AudioController.downloadFile(d.file,function(a){app.audioStreaming.currentPlaybackId="browser-"+d.songid,app.audioStreaming.localPlay=c.createSound({id:app.audioStreaming.currentPlaybackId,url:a,autoPlay:!1,autoLoad:!0,stream:!0,onerror:function(a){app.helpers.errorHandler("SoundManager failed to load: "+a.type,a)},onplay:function(){$("body").addClass("browser-playing").removeClass("browser-paused"),app.audioStreaming.updatePlayingState(d);var a=$("#browser-volume").slider("value");app.audioStreaming.localPlay.setVolume(a),$(window).trigger("browserPlayerStart",[d])},onstop:function(){app.audioStreaming.playerStateStop()},onpause:function(){$("body").removeClass("browser-playing").addClass("browser-paused"),$(window).trigger("browserPlayerStop",[d])},onresume:function(){$("body").addClass("browser-playing").removeClass("browser-paused"),$(window).trigger("browserPlayerStart",[d])},onfinish:function(){var a=app.audioStreaming.playList,b=a.items.models,c=parseInt(a.playingPosition);if("one"==a.repeat)app.audioStreaming.playPosition(c);else if("on"==a.random){var d=app.helpers.getRandomInt(0,b.length-1);app.audioStreaming.playPosition(d)}else"all"==a.repeat?b.length==c+1&&app.audioStreaming.playPosition(0):b.length>c?app.audioStreaming.playPosition(c+1):app.audioStreaming.stop()},whileplaying:function(){var a=parseInt(this.position)/1e3,b=parseInt(this.duration)/1e3,c=Math.round(a/b*100),e=$("#browser-time"),f=($("#browser-now-playing"),Math.round(void 0!==this.buffered[0]?this.buffered[0].end/this.duration*100:0));app.audioStreaming.nowplaying.player={position:a,duration:b,percentage:c},$(".time-cur",e).html(app.helpers.formatTime(app.helpers.secToTime(Math.floor(a)))),$(".time-total",e).html(app.helpers.formatTime(app.helpers.secToTime(Math.floor(b)))),c!=app.audioStreaming.lastPos&&(f>0&&$("#browser-progress-buffer").css("width",f+"%"),$(app.audioStreaming.progressEl).slider("value",c),app.audioStreaming.updatePlayingState(d)),app.audioStreaming.lastPos=c}}),$(app.audioStreaming.progressEl).hasClass("ui-slider")||(app.audioStreaming.localPlay.setVolume(app.audioStreaming.defaultVol),app.audioStreaming.progressInit(),app.audioStreaming.volumeInit()),b&&b()})},updatePlayingState:function(a){$("#browser-playing-thumb").attr("src",app.parseImage(a.thumbnail)),$(".browser-playing-song-title").html(a.label),$(".browser-playing-song-meta").html(a.artist[0]);var b=$("li.browser-player .playlist-pos-"+app.audioStreaming.playList.playingPosition);b.hasClass("browser-playing-row")||b.addClass("browser-playing-row"),app.audioStreaming.setTitle("playing",a.label),app.helpers.applyBackstretch(void 0!==a.fanart?a.fanart:"","local")},bodyRandRepeat:function(){var a=app.audioStreaming.playList;if(void 0!==a.repeat){var b=$("body");"undefined"!=typeof app.audioStreaming.playList&&(b.removeClass("bp-repeat-one").removeClass("bp-repeat-all").removeClass("bp-repeat-off"),b.addClass("bp-repeat-"+a.repeat),b.removeClass("bp-random-on").removeClass("bp-random-off"),b.addClass("bp-random-"+a.random),b.removeClass("bp-mute"),a.mute&&b.addClass("bp-mute"))}},setTitle:function(a,b){"local"==app.audioStreaming.getPlayer()&&(document.title=("playing"==a?"▶ ":"")+(void 0!==b?b+" | ":"")+"Chorus.")},progressInit:function(){$(app.audioStreaming.progressEl).slider({range:"min",step:1,value:0,min:0,max:100,stop:function(a,b){var c=b.value/100*app.audioStreaming.localPlay.duration;c=Math.round(c);var d=soundManager.getSoundById(app.audioStreaming.currentPlaybackId);d.setPosition(c)}})},volumeInit:function(){$(app.audioStreaming.volumeEl).slider({range:"min",step:5,value:app.audioStreaming.defaultVol,min:0,max:100,stop:function(a,b){app.audioStreaming.localPlay.setVolume(b.value)}})},isPlaying:function(){return $("body").hasClass("browser-playing")},togglePlay:function(){app.audioStreaming.localPlay!==!1&&(app.audioStreaming.isPlaying()?app.audioStreaming.pause():app.audioStreaming.play())},play:function(){app.audioStreaming.localPlay!==!1&&(app.audioStreaming.localPlay.play(),app.audioStreaming.setPlayer("local"))},stop:function(){app.audioStreaming.localPlay!==!1&&(app.audioStreaming.playerStateStop(),app.audioStreaming.localPlay.stop())},playerStateStop:function(){$("body").removeClass("browser-playing").removeClass("browser-paused"),$(window).trigger("browserPlayerStop",[])},pause:function(){app.audioStreaming.localPlay!==!1&&app.audioStreaming.localPlay.pause()},prev:function(){if(app.audioStreaming.localPlay!==!1){var a=app.audioStreaming.playList;app.audioStreaming.playPosition(0===a.playingPosition?0:a.playingPosition-1)}},next:function(){if(app.audioStreaming.localPlay!==!1){var a=app.audioStreaming.playList;app.audioStreaming.playPosition(a.playingPosition==a.items.models.length-1?0:a.playingPosition+1)}},mute:function(){if(app.audioStreaming.localPlay!==!1){var a=app.audioStreaming.playList.mute,b=$(app.audioStreaming.volumeEl).slider("value");if(a){var c=app.helpers.varGet("localMuteLastVol",app.audioStreaming.defaultVol);app.audioStreaming.localPlay.setVolume(c),$(app.audioStreaming.volumeEl).slider("value",c)}else app.helpers.varSet("localMuteLastVol",b>5?b:app.audioStreaming.defaultVol),app.audioStreaming.localPlay.setVolume(0),$(app.audioStreaming.volumeEl).slider("value",0);app.audioStreaming.playList.mute=!a,app.audioStreaming.bodyRandRepeat()}},repeat:function(){if(app.audioStreaming.localPlay!==!1){var a,b=app.audioStreaming.playList;switch(b.repeat){case"off":a="all";break;case"all":a="one";break;case"one":a="off"}app.audioStreaming.playList.repeat=a,app.audioStreaming.bodyRandRepeat()}},random:function(){if(app.audioStreaming.localPlay!==!1){var a=app.audioStreaming.playList;app.audioStreaming.playList.random="off"==a.random?"on":"off",app.audioStreaming.bodyRandRepeat()}},deleteBrowserPlaylistSong:function(a){var b=app.audioStreaming.playList.items,c=b.models.filter(function(b){return b.attributes.pos!=a});b.models=c,b.length=c.length,app.audioStreaming.setPlaylistItems(b)},sortableChangePlaylistPosition:function(a){var b=[],c=app.audioStreaming.playList.items;$.each(a,function(a,d){b.push(c.models[d])}),c.models=b,c.length=b.length,app.audioStreaming.setPlaylistItems(c),app.audioStreaming.renderPlaylistItems()}},app.notifications={wsConn:"ws://"+location.hostname+":9090/jsonrpc?chorus",wsActive:!1,plTimeout:{},init:function(){var a=app.notifications;if("WebSocket"in window){var b=new WebSocket(a.wsConn);b.onopen=function(){a.getNowPlaying(),console.log("Using Websockets"),app.notifications.wsActive=!0},b.onerror=function(a){console.log("socket error",a)},b.onmessage=function(b){a.onMessage(a.parseResponse(b))},b.onclose=function(a){console.log("socket closed",a)}}},parseResponse:function(a){return jQuery.parseJSON(a.data)},onClose:function(){app.notifications.wsActive=!1},onMessage:function(a){app.counts[503]=0,app.counts["503total"]=0,app.state="connected";var b=app.notifications,c=$(window);switch(a.method){case"Player.OnPlay":b.getNowPlaying();break;case"Player.OnStop":b.getNowPlaying();break;case"Player.OnPropertyChanged":app.cached.nowPlaying.player=$.extend(app.playlists.getNowPlaying("player"),a.params.data.property),b.updateState();break;case"Player.OnPause":app.cached.nowPlaying.player.pause=0,b.updateState();break;case"Player.OnSeek":b.getNowPlaying();break;case"Playlist.OnClear":case"Playlist.OnAdd":case"Playlist.OnRemove":b.updatePlaylist(a.params.data.playlistid);break;case"Application.OnVolumeChanged":app.cached.nowPlaying.volume=a.params.data,b.updateState();break;case"VideoLibrary.OnScanStarted":break;case"VideoLibrary.OnScanFinished":app.notification("Video Library scan complete"),"scan"==app.helpers.arg(0)&&$("#content").html('Video Library Scan Complete
');break;case"AudioLibrary.OnScanStarted":break;case"AudioLibrary.OnScanFinished":app.notification("Audio Library scan complete"),"scan"==app.helpers.arg(0)&&$("#content").html('Audio Library Scan Complete
');break;case"Input.OnInputRequested":c.trigger("Input.OnInputRequested");break;case"Input.OnInputFinished":c.trigger("Input.OnInputFinished");break;case"System.OnQuit":app.notification("XBMC has quit")}},getNowPlaying:function(){app.AudioController.getNowPlayingSong(function(a){app.shellView.updateState(a)},!0)},updateState:function(){app.shellView.updateState(app.playlists.getNowPlaying())},updatePlaylist:function(a){clearTimeout(app.notifications.plTimeout),app.notifications.plTimeout=setTimeout(function(){0===a?app.AudioController.playlistRender():1==a&&app.VideoController.playlistRender()},1e3)}},app.playlists={storageKeyLists:"playlist:lists",storageKeyThumbsUp:"playlist:thumbsUp"},$(window).on("shellReady",function(){app.playlists.getThumbsUp(),$(".playlist-actions-wrapper",this.$el).html(app.helpers.makeDropdown(app.helpers.menuTemplates("playlistShell"))),app.playlists.addCustomPlayLists(function(a){var b=$("#playlist-lists",self.$el);b.html(a.render().el)})}),app.playlists.playlistGetItems=function(a,b,c){var d=[],e={};switch(a){case"xbmc":e=new app.PlaylistCollection,e.fetch({success:function(a){a=app.playlists.addFileFieldToSongCollection(a),c(a)}});break;case"song":e=new app.CustomSongCollection,e.fetch({items:[b],success:function(a){a=app.playlists.addFileFieldToSongCollection(a),c(a)}});break;case"album":e=new app.SongFilteredXbmcCollection({filter:{albumid:b}}),e.fetch({success:function(a){res=app.playlists.addFileFieldToSongCollection(a),c(res)}});break;case"artist":e=new app.SongFilteredXbmcCollection({filter:{artistid:b}}),e.fetch({success:function(a){res=app.playlists.addFileFieldToSongCollection(a),c(res)}});break;case"movie":e=new app.CustomMovieCollection,e.fetch({items:b,success:function(a){c(a)}});break;case"tvshow":e=new app.TvepisodeCollection,e.fetch({tvshowid:b,success:function(a){c(a)}});break;case"season":e=new app.TvepisodeCollection;var f=b.split(":");e.fetch({tvshowid:f[0],season:f[1],success:function(a){c(a)}});break;case"list":e=new app.PlaylistCustomListSongCollection,e.fetch({name:b,success:function(a){a=app.playlists.addFileFieldToSongCollection(a),c(a)}});break;case"thumbsup":e=new app.ThumbsUpCollection,e.fetch({name:b,success:function(a){a=app.playlists.addFileFieldToSongCollection(a),c(a)}});break;case"items":e=new app.CustomSongCollection,e.fetch({items:b,success:function(a){a=app.playlists.addFileFieldToSongCollection(a),c(a)}})}return c?void c(d):d},app.playlists.playlistAddItems=function(a,b,c,d,e){app.playlists.playlistGetItems(c,d,function(c){if(0!==c.length){var d=[];switch($.each(c.models,function(a,b){b.attributes.songid&&d.push("file"==b.attributes.songid?b.attributes.file:b.attributes.songid)}),e="undefined"!=typeof e?e:function(){},a){case"xbmc":"append"==b?app.AudioController.playlistAddMultiple("mixed",d,function(){app.AudioController.playlistRender(),app.playlists.changePlaylistView("xbmc"),e()}):app.AudioController.playlistClear(function(){app.AudioController.playlistAddMultiple("mixed",d,function(){app.AudioController.playlistRender(),app.playlists.changePlaylistView("xbmc"),app.AudioController.playPlaylistPosition(i,function(){app.AudioController.playlistRender(),e()})})});break;case"local":"append"==b?app.audioStreaming.appendPlaylistItems(c,e):app.audioStreaming.replacePlaylistItems(c,e);break;case"lists":app.playlists.changePlaylistView("lists"),app.playlists.saveCustomPlayListsDialog("local",d)}}})},app.playlists.addFileFieldToSongCollection=function(a){return $.each(a.models,function(b,c){var d=app.store.getSongBy("id",c.attributes.songid);c.attributes.file=d.file,a.models[b]=c}),a},app.playlists.sortableChangePlaylistPosition=function(a,b){var c=$(b.item[0]).find("div.playlist-item"),d={},e=c.closest("ul.playlist"),f=1==c.data("playlistId")?"video":"audio",g=c.data("type");if(e.find("div.playlist-item").each(function(a,b){$d=$(b),$d.data("path")===c.data("path")&&(d={from:c.data("id"),to:a})}),void 0!==d.from&&d.from!==d.to){var h="audio"==f?app.AudioController:app.VideoController;h.playlistSwap(d.from,d.to,function(){h.playlistRender(),c.removeClass(".playing-row")},g)}},app.playlists.changeCustomPlaylistPosition=function(a,b){var c=$(b.item[0]).find("div.playlist-item"),d={},e=c.closest("ul.playlist");e.find("div.playlist-item").each(function(a,b){$d=$(b),$d.data("path")===c.data("path")&&(d={from:c.data("path"),to:a})}),void 0!==d.from&&d.from!==d.to&&app.AudioController.playlistSwap(d.from,d.to,function(){app.AudioController.playlistRender()})},app.playlists.changePlaylistView=function(a){var b=$("#sidebar-second"),c=$(".playlist-primary-tab[data-pane='"+a+"']");$(".playlist-primary-tab").removeClass("active"),c.addClass("active"),$(".sidebar-pane",b).hide(),$("#playlist-"+a,b).show(),("local"==a||"xbmc"==a)&&app.audioStreaming.setPlayer(a)},app.playlists.saveCustomPlayListsDialog=function(a,b,c){a="undefined"==typeof a?"xbmc":a,b="undefined"==typeof b?[]:b;var d=app.playlists.getCustomPlaylist(),e="";for(var f in d)e+=''+d[f].name+" ";"undefined"!=typeof c&&(e="");var g='Create a new playlist Save
'+(""!==e?'Or add to an existing list
":"");app.helpers.dialog(g,{title:"Add to a playlist"}),$("#savenewlist").on("click",function(){var c=$("#newlistname").val(),d=app.playlists.saveCustomPlayLists("new",c,a,b);app.helpers.dialogClose(),document.location="#playlist/"+d.id}),$("#existinglists li").on("click",function(){var c=$(this).data("id"),d=app.playlists.saveCustomPlayLists("existing",c,a,b);app.helpers.dialogClose(),document.location="#playlist/"+d.id})},app.playlists.saveCustomPlayLists=function(a,b,c,d){var e=[],f=app.playlists.getCustomPlaylist(),g=0,h={},i=0;switch("xbmc"==c?_.each(app.cached.xbmcPlaylist,function(a){"file"==a.id?(a=app.addOns.invokeAll("parseFileRecord",a),e.push(a)):e.push(a.id)}):e=d,a){case"new":for(i in f){var j=f[i];g0)for(var d in c)c[d].id==a&&(c[d].items=b);app.storageController.setStorage(app.playlists.storageKeyLists,c)}},app.playlists.getDropdown=function(){var a=[],b=app.helpers.arg(0),c={append:"Add to playlist",replace:"Replace playlist","browser-replace":"Play in browser"};"thumbsup"!=b&&(c.delete="Delete");for(var d in c)a.push({url:"#","class":b+"-"+d,title:c[d]});return app.helpers.makeDropdown({key:b,items:a,pull:"right"})},app.playlists.setThumbsUp=function(a,b,c){var d=app.playlists.getThumbsUp(),e=d[b],f=[],g=!1,h={items:[]},i=0;switch(("undefined"==typeof e||"undefined"==typeof e.items)&&(e=h),a){case"add":for(i in e.items)e.items[i]==c&&(g=!0);g||e.items.push(c);break;case"remove":for(i in e.items)e.items[i]!=c&&null!==e.items[i]&&f.push(e.items[i]);e.items=f}d[b]=e,app.storageController.setStorage(app.playlists.storageKeyThumbsUp,d),app.playlists.getThumbsUp()},app.playlists.getThumbsUp=function(a){var b=app.storageController.getStorage(app.playlists.storageKeyThumbsUp),c=null!==b?b:{},d=0,e=0;app.cached.thumbsUp={};for(d in c){app.cached.thumbsUp[d]={items:c[d].items,lookup:{}};var f=[];for(e in c[d].items){var g=c[d].items[e];null!==g&&(f.push(g),app.cached.thumbsUp[d].lookup[g]=!0)}c[d].items=f}return"undefined"!=typeof a?c[a]:c},app.playlists.isThumbsUp=function(a,b){return"undefined"!=typeof app.cached.thumbsUp&&"undefined"!=typeof app.cached.thumbsUp[a]&&"undefined"!=typeof app.cached.thumbsUp[a].lookup[b]},app.playlists.isAnyThumbsUp=function(){var a=app.storageController.getStorage(app.playlists.storageKeyThumbsUp);return null!==a},app.playlists.getXbmcPlaylist=function(a,b){app.xbmcController.command("Playlist.GetItems",[a,app.playlistItemFields],function(c){var d=c.result;d.playlistId=a,void 0!==d.items&&$.each(d.items,function(b){d.items[b].playlistId=a}),b(d)})},app.playlists.playlistClear=function(a,b){app.xbmcController.command("Playlist.Clear",[a],function(a){b&&b(a)})},app.playlists.playlistPlayPosition=function(a,b,c){app.xbmcController.command("Player.Open",[{playlistid:a,position:b}],function(a){c(a.result)})},app.playlists.renderXbmcPlaylist=function(a,b){app.playlists.getXbmcPlaylist(a,function(c){app.cached.xbmcPlaylist=c.items;var d=$("#playlist-xbmc");app.playlistView=new app.PlaylistView({model:{playlistId:a,models:c.items}}),d.html(app.playlistView.render().el),app.notifications.wsActive||app.AudioController.getNowPlayingSong(function(a){app.shellView.updateState(a)}),app.helpers.exists(b)&&b(c)})},app.playlists.playlistSwap=function(a,b,c,d,e){app.playlists.getXbmcPlaylist(a,function(f){var g=f.items[c],h={},i=1==a?app.VideoController:app.AudioController;void 0!==g.id&&"number"==typeof g.id?h[b]=g.id:h.file=g.file,i.removePlaylistPosition(c,function(){app.xbmcController.command("Playlist.Insert",[a,d,h],function(){i.getPlaylistItems(function(a){i.currentPlaylist=a,e(a)})})})})},app.playlists.insertAndPlay=function(a,b,c,d){var e=app.playlists.getNowPlaying("player"),f="undefined"!=typeof e.position?e.position:0,g=f+1,h={};h[b]=c,"notPlaying"==app.playlists.getNowPlaying("status")||"stopped"==app.playlists.getNowPlaying("status")?app.playlists.playlistClear(a,function(){app.xbmcController.command("Playlist.Insert",[a,g,h],function(b){app.playlists.playlistPlayPosition(a,g,function(){d&&d(b)})})}):app.xbmcController.command("Playlist.Insert",[a,g,h],function(b){app.playlists.playlistPlayPosition(a,g,function(){d&&d(b)})})},app.playlists.getNowPlaying=function(a){var b={activePlayer:0,status:"notPlaying",playingItemChanged:!1,volume:{volume:50,muted:!1},player:{repeat:"off",shuffled:!1},item:{thumbnail:"",fanart:"",id:0,label:"Nothing Playing",songid:0,episodeid:0,album:"",albumid:"file",file:"",duration:0,type:"song"}},c=app.cached.nowPlaying;return void 0!==c&&(b=$.extend(b,c)),void 0!==a?b[a]:b},app.setDetail={songParams:["songid","title","artist","albumartist","genre","year","rating","album","track","disc","duration","comment"],artistParams:["artistid","artist","instrument","style","mood","born","formed","description","genre","died","disbanded","yearsactive"],albumParams:["albumid","title","artist","description","genre","theme","mood","style","type","albumlabel","rating","year"],episodeParams:["episodeid","title","playcount","runtime","director","plot","rating","votes","lastplayed","writer","firstaired","productioncode","season","episode"],save:function(){}},app.storageController={nameSpace:"chorusStorage:"},app.storageController.getStorage=function(a,b){var c=$.totalStorage(app.storageController.nameSpace+a);
return b?void b(c):c},app.storageController.setStorage=function(a,b,c){$.totalStorage(app.storageController.nameSpace+a,b);return c?void c(b):b},app.VideoController={playlistId:1,currentPlaylist:[]},app.VideoController.playVideoId=function(a,b,c){app.VideoController.playlistClear(function(){app.VideoController.addToPlaylist(a,b,"add",function(a){app.VideoController.playPlaylistPosition(0,function(){c(a.result)})})})},app.VideoController.addToPlaylist=function(a,b,c,d){var e={};e[b]=a,"add"==c&&app.xbmcController.command("Playlist.Add",[app.VideoController.playlistId,e],function(a){d(a.result)})},app.VideoController.playlistAdd=function(a,b,c){app.VideoController.addToPlaylist(b,a,"add",c)},app.VideoController.playPlaylistPosition=function(a,b){app.playlists.playlistPlayPosition(app.VideoController.playlistId,a,b)},app.VideoController.insertAndPlay=function(a,b,c){app.playlists.insertAndPlay(app.VideoController.playlistId,a,b,c)},app.VideoController.playlistClear=function(a){app.playlists.playlistClear(app.VideoController.playlistId,a)},app.VideoController.getPlaylistItems=function(a){app.playlists.getXbmcPlaylist(app.VideoController.playlistId,a)},app.VideoController.playlistRender=function(a){app.playlists.renderXbmcPlaylist(app.VideoController.playlistId,a)},app.VideoController.removePlaylistPosition=function(a,b){app.xbmcController.command("Playlist.Remove",[app.VideoController.playlistId,a],function(a){b(a.result)})},app.VideoController.playlistSwap=function(a,b,c,d){var e="movie"==d?"movieid":"episodeid";app.playlists.playlistSwap(app.VideoController.playlistId,e,a,b,c)},app.VideoController.movieLoadMultiple=function(a,b){app.xbmcController.entityLoadMultiple("movie",a,b)},app.VideoController.playlistAddMultiple=function(a,b,c){var d,e=[];for(var f in b)param={},d=b[f],"mixed"==a&&(a="number"==typeof d?a:"file"),param[a]=d,e.push({method:"Playlist.Add",params:[app.VideoController.playlistId,param]});app.xbmcController.multipleCommand(e,function(){app.VideoController.getPlaylistItems(function(a){app.VideoController.currentPlaylist=a,c(a)})})},app.VideoController.tvshowAdd=function(a,b){var c={};if("episode"==a.type)return void app.VideoController.addToPlaylist(a.episodeid,"episodeid","add",b);var d=new app.TvepisodeCollection,e=[];c.tvshowid=parseInt(a.tvshowid),"season"==a.type&&(c.season=a.season),c.success=function(a){for(var c in a.models)e.push(a.models[c].attributes.episodeid);app.VideoController.playlistAddMultiple("episodeid",e,b)},d.fetch(c)},app.VideoController.tvshowPlay=function(a,b){app.VideoController.playlistClear(function(){app.VideoController.tvshowAdd(a,function(){app.playlists.changePlaylistView("xbmc"),app.VideoController.playPlaylistPosition(0,function(){void 0!==a.resume&&a.resume.position>0?app.VideoController.seek(Math.round(a.resume.position/a.resume.total*100),b):b()})})})},app.VideoController.seek=function(a,b){app.xbmcController.command("Player.Seek",[app.VideoController.playlistId,a],function(a){app.helpers.exists(b)&&b(a.result)})},app.VideoController.watchedStatus=function(a){var b={status:"no",progress:0};switch(a.type){case"movie":case"episode":0!==a.resume.position?(b.status="progress",b.progress=Math.round(a.resume.position/a.resume.total*100)):a.playcount>0&&(b.status="yes");break;case"season":case"tvshow":a.watchedepisodes>0&&(a.watchedepisodes==a.episode?b.status="yes":(b.status="progress",b.progress=Math.round(a.watchedepisodes/a.episode*100)))}return b},app.VideoController.stream=function(a,b){var c="videoPlayer.html?player="+a,d=!1;void 0!==b.downloadUrl&&""!==b.downloadUrl&&(c=c+"&src="+encodeURIComponent(b.downloadUrl),d=!0);var e=window.open(c,"_blank","toolbar=no, scrollbars=no, resizable=yes, width=925, height=545, top=100, left=100");d||app.AudioController.downloadFile(b.file,function(a){e.location=c+"&src="+encodeURIComponent(a)})},app.VideoController.setWatched=function(a,b,c,d){var e=c[b+"id"],f=void 0===c.title?c.label:c.title,g="episode"==b?"SetEpisodeDetails":"SetMovieDetails",h=a===!0?1:0;app.xbmcController.command("VideoLibrary."+g,[e,f,h],function(){app.VideoController.invalidateCache(b,c),app.helpers.exists(d)&&d(a)})},app.VideoController.toggleWatched=function(a,b,c){var d=!1;0===parseInt(b.playcount)&&(d=!0),app.VideoController.setWatched(d,a,b,c)},app.VideoController.invalidateCache=function(a,b){if("movie"==a)delete app.stores.movies;else if("episode"==a){var c;c="episodes:"+b.tvshowid+":"+b.season,void 0!==app.stores.TvEpisodes&&void 0!==app.stores.TvEpisodes[c]&&delete app.stores.TvEpisodes[c],c="seasons:"+b.tvshowid,void 0!==app.stores.TvSeasons&&void 0!==app.stores.TvSeasons[c]&&delete app.stores.TvSeasons[c]}},$.jsonRPC.setup({endPoint:app.jsonRpcUrl}),app.xbmcController={},app.xbmcController.command=function(a,b,c,d){var e={success:function(a){c&&c(a)},error:function(c){app.helpers.errorHandler("xbmc command call: "+a,[c,b]),d&&d([c,b])}};void 0!==b&&b.length>0&&(e.params=b),$.jsonRPC.request(a,e)},app.xbmcController.input=function(a,b,c){app.xbmcController.command("Input."+a,[],b,c)},app.xbmcController.multipleCommand=function(a,b){$.jsonRPC.batchRequest(a,{success:function(a){for(var c in a)"undefined"!=typeof a[c].error;b&&b(a)},error:function(){}})},app.xbmcController.entityLoadMultiple=function(a,b,c){var d={song:{method:"AudioLibrary.GetSongDetails",id:"songid",returnKey:"songdetails",fields:app.songFields},movie:{method:"VideoLibrary.GetMovieDetails",id:"movieid",returnKey:"moviedetails",fields:app.movieFields},tvshow:{method:"VideoLibrary.GetTVShowDetails",id:"tvshowid",returnKey:"tvshowdetails",fields:app.tvshowFields}};if(void 0===d[a]||void 0===b)return[];var e=[],f=d[a],g={};for(var h in b){var i=b[h];"number"==typeof i?e.push({method:f.method,params:[i,f.fields]}):(g={position:h,albumid:"file",artistid:"file",album:"",artist:"",duration:0},item=$.extend(g,i),item.id=i.file,item[f.id]="file",b[h]=item)}return e.length>0?app.xbmcController.multipleCommand(e,function(a){var d={},e=[];_.each(a,function(a){if("undefined"!=typeof a.result){var b=a.result[f.returnKey];d[b[f.id]]=b}});for(var g in b){var h=b[g];"number"==typeof h&&"undefined"!=typeof d[h]&&(b[g]=d[h])}var i=0;for(var j in b){var k=b[j];"object"==typeof k&&(k.position=i,e.push(k),i++)}c(e)}):c(b),b},app.SongXbmcCollection=Backbone.Collection.extend({url:app.jsonRpcUrl,rpc:new Backbone.Rpc({errorHandler:function(a){app.helpers.errorHandler("xbmc song call",a)},namespaceDelimiter:""}),model:app.Song,arg1:["file"],arg2:{start:0,end:5e4},arg3:{sort:{method:"dateadded",order:"descending"}},methods:{read:["AudioLibrary.GetSongs","arg1","arg2","arg3"]},parse:function(a){return $.each(a.songs,function(b,c){a.songs[b].id=c.songid}),a.songs}}),app.SongFilteredXbmcCollection=Backbone.Collection.extend({url:app.jsonRpcUrl,rpc:new Backbone.Rpc({errorHandler:function(a){app.helpers.errorHandler("xbmc song filtered call",a)},namespaceDelimiter:""}),model:app.Song,arg1:app.songFields,arg2:{start:0,end:500},arg3:{sort:{method:"dateadded",order:"descending"}},arg4:function(){return this.models[0].attributes.filter},methods:{read:["AudioLibrary.GetSongs","arg1","arg2","arg3","arg4"]},parse:function(a){return a.songs}}),app.AlbumXbmcCollection=Backbone.Collection.extend({url:app.jsonRpcUrl,rpc:new Backbone.Rpc({errorHandler:function(a){app.helpers.errorHandler("xbmc album call",a)},namespaceDelimiter:""}),model:app.Album,arg1:app.albumFields,arg2:{start:0,end:15e3},arg3:{sort:{method:"dateadded",order:"descending"}},methods:{read:["AudioLibrary.GetAlbums","arg1","arg2","arg3"]},parse:function(a){return a.albums}}),app.AlbumRecentlyAddedXbmcCollection=Backbone.Collection.extend({url:app.jsonRpcUrl,rpc:new Backbone.Rpc({errorHandler:function(a){app.helpers.errorHandler("xbmc album call",a)},namespaceDelimiter:""}),model:app.Album,arg1:app.albumFields,arg2:{start:0,end:200},methods:{read:["AudioLibrary.GetRecentlyAddedAlbums","arg1","arg2"]},parse:function(a){$.each(a.albums,function(b){a.albums[b].recent="added"});var b=app.helpers.shuffle(a.albums);return b}}),app.AlbumRecentlyPlayedXbmcCollection=Backbone.Collection.extend({url:app.jsonRpcUrl,rpc:new Backbone.Rpc({errorHandler:function(a){app.helpers.errorHandler("xbmc album call",a)},namespaceDelimiter:""}),model:app.Album,arg1:app.albumFields,arg2:{start:0,end:200},methods:{read:["AudioLibrary.GetRecentlyPlayedAlbums","arg1","arg2"]},parse:function(a){$.each(a.albums,function(b){a.albums[b].recent="played"});var b=app.helpers.shuffle(a.albums);return app.helpers.buildUrls(b,"album","albumid")}}),app.ArtistXbmcCollection=Backbone.Collection.extend({url:app.jsonRpcUrl,rpc:new Backbone.Rpc({errorHandler:function(a){app.helpers.errorHandler("xbmc artist call",a)},namespaceDelimiter:""}),model:app.Artist,arg1:!0,arg2:app.artistFields,arg3:{start:0,end:1e4},arg4:{sort:{method:"artist"}},methods:{read:["AudioLibrary.GetArtists","arg1","arg2","arg3","arg4"]},parse:function(a){return app.helpers.buildUrls(a.artists,"artist","artistid")}}),app.MovieXbmcCollection=Backbone.Collection.extend({url:app.jsonRpcUrl,rpc:new Backbone.Rpc({errorHandler:function(a){app.helpers.errorHandler("xbmc movie call",a)},namespaceDelimiter:""}),model:app.Movie,arg1:["year","thumbnail","resume","playcount"],arg2:function(){return this.models[0].attributes.range},arg3:function(){return this.models[0].attributes.sort},methods:{read:["VideoLibrary.GetMovies","arg1","arg2","arg3"]},parse:function(a){return app.helpers.buildUrls(a.movies,"movie","movieid")}}),app.AllMovieXbmcCollection=Backbone.Collection.extend({url:app.jsonRpcUrl,rpc:new Backbone.Rpc({errorHandler:function(a){app.helpers.errorHandler("xbmc movie call",a)},namespaceDelimiter:""}),model:app.Movie,methods:{read:["VideoLibrary.GetMovies"]},parse:function(a){return app.helpers.buildUrls(a.movies,"movie","movieid")}}),app.AllTvshowXbmcCollection=Backbone.Collection.extend({url:app.jsonRpcUrl,rpc:new Backbone.Rpc({errorHandler:function(a){app.helpers.errorHandler("xbmc tv call",a)},namespaceDelimiter:""}),model:app.TVShow,arg1:app.tvshowFields,arg2:{start:0,end:1e4},arg3:function(){return this.models[0].attributes.sort},methods:{read:["VideoLibrary.GetTVShows","arg1","arg2","arg3"]},parse:function(a){return app.helpers.buildUrls(a.tvshows,"tvshow","tvshowid")}}),app.TvSeasonXbmcCollection=Backbone.Collection.extend({url:app.jsonRpcUrl,rpc:new Backbone.Rpc({errorHandler:function(a){app.helpers.errorHandler("xbmc movie call",a)},namespaceDelimiter:""}),model:app.TVShow,arg1:["year","thumbnail","season"],arg2:function(){return this.models[0].attributes.season},methods:{read:["VideoLibrary.GetSeasons","arg1","arg2"]},parse:function(a){return app.helpers.buildUrls(a.seasons,"tvshow","tvshowid")}}),app.MovieCollection=Backbone.Collection.extend({model:app.Movie,cached:[],fullyLoaded:!1,lastOrder:"",lastSort:"",sync:function(a,b,c){if("read"===a){var d=this,e="undefined"!=typeof c.fullRange&&c.fullRange===!0;app.cached.moviesPage=new app.MovieAllCollection,app.cached.moviesPage.fetch({success:function(){var a=d.cachedPagination(app.moviePageNum,e);if(a!==!1)return void c.success(a);var b={range:app.helpers.createPaginationRange(app.moviePageNum,e),sort:app.helpers.getSort()};"undefined"==typeof app.stores.movies&&(app.stores.movies={}),app.stores.movies[app.moviePageNum]=[],app.cached.movieXbmcCollection=new app.MovieXbmcCollection(b),app.cached.movieXbmcCollection.fetch({success:function(a){return e&&0!==app.moviePageNum||$.each(a.models,function(a,b){app.stores.movies[app.moviePageNum].push(b)}),a.models.length>app.itemsPerPage&&(d.fullyLoaded=!0),c.success(a.models),a.models}})}})}},cachedPagination:function(a,b){var c=app.helpers.getSort();if((this.lastSort!=c.method||this.lastOrder!=c.order)&&delete app.stores.movies,this.lastSort=c.method,this.lastOrder=c.order,void 0===app.stores.movies||void 0===app.stores.movies[a]||0===app.stores.movies[a].length)return!1;var d=app.stores.movies[a],e=[];if(b){for(i=0;a>=i;i++){if(void 0===app.stores.movies[i])return!1;for(var f in app.stores.movies[i])e.push(app.stores.movies[i][f])}d=e}return d}}),app.MovieRecentCollection=Backbone.Collection.extend({model:app.Movie,cached:[],fullyLoaded:!1,sync:function(a,b,c){var d=[app.movieFields,{end:100,start:0}];app.xbmcController.command("VideoLibrary.GetRecentlyAddedMovies",d,function(a){c.success(a.result.movies)})}}),app.MovieFitleredCollection=Backbone.Collection.extend({model:app.Movie,sync:function(a,b,c){void 0===app.stores.moviesFiltered&&(app.stores.moviesFiltered={});var d={sort:{method:"title"}},e=[app.movieFields,{end:500,start:0},d,c.filter],f="movies:key:filter";for(var g in c.filter)f="movies:"+g+":"+c.filter[g];void 0!==app.stores.moviesFiltered[f]?c.success(app.stores.moviesFiltered[f]):app.xbmcController.command("VideoLibrary.GetMovies",e,function(a){app.stores.moviesFiltered[f]=a.result.movies,c.success(a.result.movies)})}}),app.MovieAllCollection=Backbone.Collection.extend({model:app.Movie,sync:function(a,b,c){if("undefined"==typeof app.stores.allMovies){var d=new app.AllMovieXbmcCollection;d.fetch({success:function(a){a.models.sort(function(a,b){return app.helpers.aphabeticalSort(a.attributes.label,b.attributes.label)}),app.stores.allMoviesLookup={};for(var b in a.models){var d=a.models[b].attributes;d.loaded=!1,app.stores.allMoviesLookup[d.movieid]=d,a.models[b].attributes=d}app.stores.allMovies=a.models,c.success(a.models),$(window).trigger("allMoviesCached")}})}else c.success(app.stores.allMovies)}}),app.CustomMovieCollection=Backbone.Collection.extend({model:app.Movie,sync:function(a,b,c){app.xbmcController.entityLoadMultiple("movie",c.items,function(a){c.success(a)})}}),app.TvshowAllCollection=Backbone.Collection.extend({model:app.TVShow,lastOrder:"",lastSort:"",sync:function(a,b,c){var d=app.helpers.getSort();if((this.lastSort!=d.method||this.lastOrder!=d.order)&&delete app.stores.allTvshows,this.lastSort=d.method,this.lastOrder=d.order,"undefined"==typeof app.stores.allTvshows){var e=new app.AllTvshowXbmcCollection({sort:d});e.fetch({success:function(a){app.stores.allTvshowsLookup={};for(var b in a.models){var d=a.models[b].attributes;d.loaded=!1,app.stores.allTvshowsLookup[d.tvshowid]=d,a.models[b].attributes=d}app.stores.allTvshows=a.models,c.success(a.models),$(window).trigger("allTvshowsCached")}})}else c.success(app.stores.allTvshows)}}),app.TvseasonCollection=Backbone.Collection.extend({model:app.TVShow,sync:function(a,b,c){void 0===app.stores.TvSeasons&&(app.stores.TvSeasons={});var d=[c.tvshowid,["season","playcount","watchedepisodes","episode","thumbnail","tvshowid"]],e="seasons:"+c.tvshowid;void 0!==app.stores.TvSeasons[e]?c.success(app.stores.TvSeasons[e]):app.xbmcController.command("VideoLibrary.GetSeasons",d,function(a){for(var b in a.result.seasons)a.result.seasons[b].url="#tvshow/"+c.tvshowid+"/"+a.result.seasons[b].season;app.stores.TvSeasons[e]=a.result.seasons,c.success(a.result.seasons)})}}),app.TvepisodeCollection=Backbone.Collection.extend({model:app.TVShow,sync:function(a,b,c){void 0===app.stores.TvEpisodes&&(app.stores.TvEpisodes={});var d=[],e="episodes:"+c.tvshowid+":"+c.season;d.push(parseInt(c.tvshowid)),void 0!==c.season&&(d.push(parseInt(c.season)),d.push(app.tvepisodeFields)),void 0!==app.stores.TvEpisodes[e]?c.success(app.stores.TvEpisodes[e]):app.xbmcController.command("VideoLibrary.GetEpisodes",d,function(a){for(var b in a.result.episodes)a.result.episodes[b].url="#tvshow/"+c.tvshowid+"/"+c.season+"/"+a.result.episodes[b].episodeid;a.result.episodes.sort(function(a,b){return app.helpers.aphabeticalSort(a.label,b.label)}),app.stores.TvEpisodes[e]=a.result.episodes,c.success(a.result.episodes)})}}),app.RecentTvepisodeCollection=Backbone.Collection.extend({model:app.TVShow,sync:function(a,b,c){void 0===app.stores.TvEpisodesRecent&&(app.stores.TvEpisodesRecent={});var d=[];d.push(app.tvepisodeFields),d.push({end:1e4,start:0}),d.push({method:"date",order:"descending"}),app.xbmcController.command("VideoLibrary.GetRecentlyAddedEpisodes",d,function(a){var b=new app.TvshowAllCollection;b.fetch({success:function(){for(var b in a.result.episodes){var d=a.result.episodes[b],e=app.stores.allTvshowsLookup[d.tvshowid];a.result.episodes[b].url="#tvshow/"+d.tvshowid+"/"+d.season+"/"+d.episodeid,a.result.episodes[b].thumbnail=e.thumbnail}app.stores.TvEpisodesRecent=a.result.episodes,c.success(a.result.episodes)}})})}}),app.ArtistCollection=Backbone.Collection.extend({model:app.Artist,sync:function(a,b,c){if("read"===a){var d="undefined"==typeof c.type?"all":c.type;"all"==d&&app.store.allArtists(function(a){c.success(a.models)}),"rand"==d&&app.store.randomArtists(function(a){c.success(a)})}}}),app.AlbumsCollection=Backbone.Collection.extend({model:app.Album,sync:function(a,b,c){"read"===a&&(app.notification("Loading Albums"),app.store.allAlbums(function(a){c.success(a.models)}))}}),app.AlbumCollection=Backbone.Collection.extend({model:app.Album,sync:function(a,b,c){"read"===a&&(app.notification("Loading "+c.type+"s"),app.store.getAlbums(parseInt(c.id),c.type,function(a){c.success(a)}))}}),app.SongCollection=Backbone.Collection.extend({model:app.Song,sync:function(a,b,c){"read"===a&&c.success(app.stores.allSongs.models)}}),app.PlaylistCollection=Backbone.Collection.extend({model:app.PlaylistItem,sync:function(a,b,c){"read"===a&&app.AudioController.getPlaylistItems(function(a){c.success(a.items)})}}),app.PlaylistCustomListCollection=Backbone.Collection.extend({model:app.PlaylistCustomListItem,sync:function(a,b,c){if("read"===a){var d=app.playlists.getCustomPlaylist(),e=[],f=1;for(var g in d){var h=d[g];h.id=f,e.push(h),f++}c.success(e)}}}),app.PlaylistCustomListSongCollection=Backbone.Collection.extend({model:app.PlaylistCustomListItemSong,sync:function(a,b,c){if("read"===a){var d=app.playlists.getCustomPlaylist(c.name);app.xbmcController.entityLoadMultiple("song",d.items,function(a){c.success(a)})}}}),app.ThumbsUpCollection=Backbone.Collection.extend({model:app.PlaylistCustomListItemSong,sync:function(a,b,c){if("read"===a){var d=app.playlists.getThumbsUp(c.name);if(void 0===d||null===d||0===d.length)return c.success([]),{items:[]};switch(c.name){case"song":app.xbmcController.entityLoadMultiple("song",d.items,function(a){c.success(a)});break;case"artist":app.store.multipleArtists(d.items,function(a){c.success(a)});break;case"album":app.store.multipleAlbums(d.items,function(a){c.success(a)});break;case"movie":app.xbmcController.entityLoadMultiple("movie",d.items,function(a){c.success(a)});break;case"tvshow":app.xbmcController.entityLoadMultiple("tvshow",d.items,function(a){c.success(a)})}}}}),app.CustomSongCollection=Backbone.Collection.extend({model:app.Song,sync:function(a,b,c){"read"===a&&app.xbmcController.entityLoadMultiple("song",c.items,function(a){c.success(a)})}}),app.MemoryStore=function(a){this.state={ready:!1,msg:"connecting"},app.stores={songs:[],albums:[],artists:[],genres:[],all:[],allArtists:[]},this.syncAudio=function(){var a=this;a.songsIndexed=!1,a.songsIndexing=!1,a.albumsIndexed=!1,a.albumsIndexed=!1,this.allArtists(),this.allAlbums(),this.indexSongs()},this.indexSongs=function(a){var c=this;c.songsIndexed===!0?b(a,c):c.songsIndexing!==!0&&(c.songsIndexing=!0,this.allSongs=new app.SongXbmcCollection,this.allSongs.fetch({success:function(d){app.stores.allSongs=d,c.songsIndexed=!0,c.state={ready:!0,msg:"songs ready"},$(window).trigger("songsReady"),b(a,c)}}))},this.libraryCall=function(a,b){"undefined"==typeof b&&(b="songsReady"),app.store.state.ready===!0?a():$(window).bind(b,a)},this.allArtists=function(a){var c=this;if(c.artistsIndexed===!0){var d=app.stores.allArtists;return b(a,d),d}this.allXbmcArtists=new app.ArtistXbmcCollection,this.allXbmcArtists.fetch({success:function(d){d.models.sort(function(a,b){return app.helpers.aphabeticalSort(a.attributes.label,b.attributes.label)}),app.stores.allArtists=d,c.msg="artists ready",$(window).trigger("artistsReady"),c.artistsIndexed=!0;var e=app.stores.allArtists;return b(a,e),e}})},this.allAlbums=function(a){var c=this;if(c.albumsIndexed===!0){var d=app.stores.allAlbums;return b(a,d),d}this.allXbmcAlbums=new app.AlbumXbmcCollection,this.allXbmcAlbums.fetch({success:function(d){app.stores.allAlbums=d,c.msg="albums ready",$(window).trigger("albumsReady"),c.albumsIndexed=!0;var e=app.stores.allAlbums;return b(a,e),e}})},this.multipleArtists=function(a,c){0!==a.length&&this.allArtists(function(d){var e=d.models.filter(function(b){return-1!=$.inArray(b.attributes.artistid,a)});b(c,e)})},this.getSongBy=function(a,c,d){var e=app.stores.allSongs.models,f=null;return $.each(e,function(b,d){if(null===f){var e=d.attributes;"id"==a&&e.id==c?f=e:"file"==a&&e.file==c?f=e:"title"==a&&e.label==c?f=e:"title"==a&&e.label.toLowerCase().indexOf(c.toLowerCase())>-1&&(f=e)}}),b(d,f),f},this.multipleAlbums=function(a,c){0!==a.length&&this.allAlbums(function(d){var e=d.models.filter(function(b){return-1!=$.inArray(b.attributes.albumid,a)});b(c,e)})},this.randomArtists=function(a){this.allArtists(function(c){var d=c.models,e=_.shuffle(d),f=[],g=30,h=0;_.each(e,function(a){g>h&&0!==a.attributes.fanart.length&&0!==a.attributes.thumbnail.length&&(f.push(a),h++)}),f.lengthh&&0!==a.attributes.thumbnail.length&&(f.push(a),h++)}),b(a,f)})},this.getArtist=function(a,c){this.allArtists(function(){$.each(app.stores.allArtists.models,function(d,e){"undefined"!=typeof e.attributes&&e.attributes.artistid==a&&b(c,e)})})},this.getAlbums=function(a,c,d){var e={},f=[],g=this,h=c+a,i=c+"id",j=c+"s";if(app.helpers.exists(app.stores[j])&&app.helpers.exists(app.stores[j][h])&&app.helpers.exists(app.stores[j][h].albumsitems)&&(f=app.stores[j][h].albumsitems,b(d,f)),0===f.length){e[i]=a;var k=new app.SongFilteredXbmcCollection({filter:e});k.fetch({success:function(a){f=g.parseArtistSongsToAlbums(a.models),app.stores[j][h]={albumsitems:f},b(d,f)}})}},this.parseArtistSongsToAlbums=function(a){var b={},c=[];for(var d in a){var e=a[d],f="undefined"!=typeof e.attributes?e.attributes:{},g="album"+f.albumid;if("undefined"==typeof b[g]){b[g]={};var h=["album","albumid","thumbnail","artist","artistid"];for(var i in h){var j=h[i];void 0!==f[j]&&(b[g][j]=f[j])}b[g].songs=[]}b[g].songs.push(e)}for(d in b)c.push(b[d]);return c},this.syncAudio(a);var b=function(a,b){a&&setTimeout(function(){a(b)})}},app.store=new app.MemoryStore(function(){}),app.FileCollection=Backbone.Collection.extend({model:app.File,sync:function(a,b,c){"read"===a&&("sources"==c.name?this.getAllSources(c.success):this.getDirectory(c.sourcetype,c.name,c.success))},getAllSources:function(a){var b,c=this,d=[];c.getAddonSources(function(e){d.push({method:"Files.GetSources",params:["music"]}),d.push({method:"Files.GetSources",params:["video"]}),app.xbmcController.multipleCommand(d,function(d){b=[],b=b.concat([{type:"heading",id:"music",filetype:"heading"}]),b=b.concat(c.parseData(d[0].result.sources,"music")),b=b.concat([{type:"heading",id:"video",filetype:"heading"}]),b=b.concat(c.parseData(d[1].result.sources,"video")),b=b.concat([{type:"heading",id:"addons",filetype:"heading"}]),b=b.concat(e),a(b)})})},getAddonSources:function(a){app.addOns.getSources(a)},getDirectory:function(a,b,c){var d=this;app.xbmcController.command("Files.GetDirectory",[b,a,app.fileFields,{method:"title",order:"ascending"}],function(b){var e=d.parseData(b.result.files,a);c(e)})},parseData:function(a,b){for(var c in a){var d=a[c];("undefined"==typeof d.filetype||""===d.filetype)&&(d.filetype="directory"),("undefined"==typeof d.id||0===d.id)&&(d.id=d.file),"directory"==d.filetype?d.title=d.label:d[d.type+"id"]=d.id,("undefined"==typeof d.title||""===d.title)&&(d.title=d.label),d.controller="music"==b?"AudioController":"VideoController",d.sourcetype=b,"video"==b&&"movie"==d.type&&(d.filetype="file"),d=app.addOns.invokeAll("parseFileRecord",d),a[c]=d}return a}}),app.AlbumView=Backbone.View.extend({initialize:function(){},render:function(){var a=this;return this.$el.html(this.template(this.model.attributes)),a.albumList=new app.AlbumCollection,a.albumList.fetch({id:this.model.attributes.albumid,type:"album",success:function(b){a.albumsView=new app.AlbumsList({model:b,className:"album-list"});{var c=b.models[0].attributes,d="#sidebar-first .album-row-"+c.albumid;$("#album-list").html(a.albumsView.render().el)}app.helpers.setTitle(''+c.artist+" "+c.album),$("#sidebar-first .album-small-row").removeClass("active"),0===$(d).length?(a.albumArtistView=new app.AlbumArtistView({model:b.models[0]}),app.helpers.setFirstSidebarContent(a.albumArtistView.render().el)):$(d).addClass("active")}}),this}}),app.AlbumArtistView=Backbone.View.extend({tagName:"div",className:"album-artist-item",initialize:function(){this.artistModel=new app.Artist({id:this.model.attributes.artistid,fields:app.artistFields}),this.artistAlbums={}},render:function(){var a=this;return this.artistModel.fetch({success:function(b){a.$el.html(a.template(b.attributes)),a.albumList=new app.AlbumCollection,a.albumList.fetch({id:b.attributes.artistid,type:"artist",success:function(b){a.albumsView=new app.SmallAlbumsList({model:b}),$("#sidebar-first .other-albums").html(a.albumsView.render().el),$(".album-row-"+a.model.attributes.albumid).addClass("active")}})}}),this}}),app.AlbumsList=Backbone.View.extend({tagName:"div",className:"artist-list-view",initialize:function(){var a=this;this.model.on("reset",this.render,this),this.model.on("add",function(b){a.$el.append(new app.AlbumItemView({model:b}).render().el)})},render:function(){return this.$el.empty(),_.each(this.model.models,function(a){this.$el.append(new app.AlbumItemView({model:a}).render().el)},this),this}}),app.AlbumItemView=Backbone.View.extend({tagName:"div",initialize:function(){this.model.on("change",this.render,this),this.model.on("destroy",this.close,this)},render:function(){return this.$el.html(this.template(this.model.attributes)),$(".album-info",this.$el).html(new app.AlbumItemSmallView({model:this.model}).render().$el),$(".tracks",this.$el).html(new app.SongListView({model:{models:this.model.attributes.songs}}).render().el),this}}),app.SmallAlbumsList=Backbone.View.extend({tagName:"ul",className:"album-list-small",render:function(){return this.$el.empty(),_.each(this.model.models,function(a){this.$el.append(new app.AlbumItemSmallView({model:a}).render().el)},this),this}}),app.AlbumItemSmallView=Backbone.View.extend({tagName:"li",className:"album-small-item card",events:{"click .album-play":"playAlbum","click .album-add":"addAlbum","click .album-thumbsup":"thumbsUp","click .actions-wrapper":"viewAlbum","click .album-menu":"menu"},initialize:function(){this.model.on("change",this.render,this),this.model.on("destroy",this.close,this)},render:function(){var a=this.model.attributes;return a.title="undefined"!=typeof a.label?a.label:a.album,a.url="#album/"+a.albumid,a.img=app.parseImage(a.thumbnail),a.recenttext="undefined"!=typeof a.recent?"Recently "+a.recent:"",a.artisturl=""!==a.artistid?"#artist/"+a.artistid:"#artists",this.$el.html(this.template(a)),app.helpers.isDefaultImage(a.img)||this.$el.addClass("has-thumb"),app.playlists.isThumbsUp("album",a.albumid)&&this.$el.addClass("thumbs-up"),"undefined"!=typeof a.recent&&this.$el.addClass("recent"),this},menu:function(a){a.stopPropagation(),a.preventDefault();var b=app.helpers.menuTemplates("album",this.model.attributes);app.helpers.menuDialog(b)},playAlbum:function(a){a.stopPropagation(),a.preventDefault();var b=this.model.attributes;"local"==app.audioStreaming.getPlayer()?app.playlists.playlistAddItems("local","replace","album",b.albumid):app.AudioController.playlistClearAdd("albumid",b.albumid,function(){app.AudioController.playPlaylistPosition(0,function(){app.AudioController.playlistRender()})})},addAlbum:function(a){a.stopPropagation(),a.preventDefault();var b=this.model.attributes;"local"==app.audioStreaming.getPlayer()?app.playlists.playlistAddItems("local","append","album",b.albumid):app.AudioController.playlistAdd("albumid",b.albumid,function(){app.notification(b.album+" added to the playlist"),app.AudioController.playlistRender()})},thumbsUp:function(a){a.stopPropagation(),a.preventDefault();var b=this.model.attributes,c=b.albumid,d=app.playlists.isThumbsUp("album",c)?"remove":"add",e=$(a.target).closest(".card");app.playlists.setThumbsUp(d,"album",c),e.toggleClass("thumbs-up")},viewAlbum:function(a){a.stopPropagation(),a.preventDefault();var b=this.model.attributes.albumid;window.location="#album/"+b}}),app.ArtistView=Backbone.View.extend({events:{"click .artist-play":"playArtist","click .artist-add":"addArtist","click .artist-thumbsup":"thumbsUp","click .artist-fanart":"toggleFanart","click .artist-menu":"menu"},initialize:function(){this.artistsList||(this.artistsList=new app.ArtistCollection,this.artistsListView=new app.AristsListView({model:this.artistsList,className:"artist-list"}))},render:function(){this.$el.html(this.template(this.model.attributes)),$("#artist-meta",this.el).html(new app.ArtistSummaryView({model:this.model}).render().el),$(".artist-row").removeClass("active");var a=$(".artist-row-"+this.model.id);return a.length>0&&(a.addClass("active"),$("#sidebar-first .sidebar-content").scrollTo(a)),this},menu:function(a){a.stopPropagation(),a.preventDefault();var b=app.helpers.menuTemplates("artist",this.model.attributes);app.helpers.menuDialog(b)},playArtist:function(){var a=this.model.attributes;"local"==app.audioStreaming.getPlayer()?app.playlists.playlistAddItems("local","replace","artist",a.artistid):app.AudioController.playlistClearAdd("artistid",a.artistid,function(){app.AudioController.playPlaylistPosition(0,function(){app.AudioController.playlistRender()})})},addArtist:function(){var a=this.model.attributes;"local"==app.audioStreaming.getPlayer()?app.playlists.playlistAddItems("local","append","artist",a.artistid):app.AudioController.playlistAdd("artistid",a.artistid,function(){app.notification(a.artist+" added to the playlist"),app.AudioController.playlistRender()})},thumbsUp:function(a){var b=(this.model.attributes,this.model.attributes.artistid),c=app.playlists.isThumbsUp("artist",b)?"remove":"add",d=$(a.target).closest(".artist-actions");app.playlists.setThumbsUp(c,"artist",b),d.toggleClass("thumbs-up")},toggleFanart:function(a){$(a.target).parent().toggleClass("full-size")}}),app.ArtistSummaryView=Backbone.View.extend({events:{"click p.description":"expandDetail"},initialize:function(){this.model.on("change",this.render,this)},render:function(){this.$el.html(this.template(this.model.attributes));var a=this;return a.albumList=new app.AlbumCollection,a.albumList.fetch({id:this.model.attributes.artistid,type:"artist",success:function(b){a.albumsView=new app.AlbumsList({model:b,className:"album-list"}),$("#album-list").html(a.albumsView.render().el);var c=app.helpers.parseArtistSummary(b);$(".artist-list .active .artist-meta").html(c),""!==a.model.attributes.fanart}}),this},expandDetail:function(){$(".artist-detail").toggleClass("full")}}),app.ArtistsView=Backbone.View.extend({initialize:function(){},render:function(){return this.$el.html(this.template()),this.renderSidebar(),this.artistsRand=new app.ArtistCollection,this.artistsRand.fetch({type:"rand",success:function(a){this.artistsRandView=new app.AristsRandView({model:a,className:"rand-list"}),$("#main-content").html(this.artistsRandView.render().el),app.helpers.addFreewall("ul.rand-list")}}),this},renderSidebar:function(){0===$(".artist-list .artist").length&&(this.artistsList=new app.ArtistCollection,this.artistsList.fetch({success:function(a){this.artistsListView=new app.AristsListView({model:a,className:"artist-list swiper-wrapper"}),app.helpers.setFirstSidebarContent(this.artistsListView.render().el)}}))}}),app.AristsListView=Backbone.View.extend({tagName:"ul",className:"nav nav-list",initialize:function(){var a=this;this.model.on("reset",this.render,this),this.model.on("add",function(b){a.$el.append(new app.ArtistListItemView({model:b}).render().el)})},render:function(){return this.$el.empty(),_.each(this.model.models,function(a){this.$el.append(new app.ArtistListItemView({model:a}).render().el)
-},this),this}}),app.ArtistListItemView=Backbone.View.extend({tagName:"li",className:"artist",events:{"click .play-artist":"playArtist"},initialize:function(){this.model.on("change",this.render,this),this.model.on("destroy",this.close,this)},render:function(){var a=this.model.attributes;return a.subtext="undefined"!=typeof a.genre?a.genre.join(", "):"",this.$el.html(this.template(a)),this},playArtist:function(a){a.preventDefault();var b=this.model.attributes;"local"==app.audioStreaming.getPlayer()?app.playlists.playlistAddItems("local","replace","artist",b.artistid):app.AudioController.playlistClearAdd("artistid",b.artistid,function(){app.AudioController.playPlaylistPosition(0,function(){app.AudioController.playlistRender()})})}}),app.AristsRandView=Backbone.View.extend({tagName:"ul",className:"random-block",initialize:function(){var a=this;this.model.on("reset",this.render,this),this.model.on("add",function(b){a.$el.append(new app.ArtistLargeItemView({model:b}).render().el)})},render:function(){return this.$el.empty(),_.each(this.model.models,function(a){this.$el.append(new app.ArtistLargeItemView({model:a}).render().el)},this),this}}),app.ArtistLargeItemView=Backbone.View.extend({tagName:"li",className:"artist-item-large card card-large",initialize:function(){this.model.on("change",this.render,this),this.model.on("destroy",this.close,this)},events:{"click .artist-play":"playArtist","click .artist-add":"addArtist","click .artist-thumbsup":"thumbsUp","click .actions-wrapper":"viewArtist","click .artist-menu":"menu"},render:function(){var a=this.model.attributes;return a.title="undefined"!=typeof a.label?a.label:a.artist,a.url="#album/"+a.artistid,a.img=""!==a.fanart?a.fanart:a.thumbnail,this.$el.html(this.template(a)),app.helpers.isDefaultImage(a.img)||this.$el.addClass("has-thumb"),app.playlists.isThumbsUp("artist",a.artistid)&&this.$el.addClass("thumbs-up"),this},menu:function(a){a.stopPropagation(),a.preventDefault();var b=app.helpers.menuTemplates("artist",this.model.attributes);app.helpers.menuDialog(b)},playArtist:function(a){a.stopPropagation(),a.preventDefault();var b=this.model.attributes;"local"==app.audioStreaming.getPlayer()?app.playlists.playlistAddItems("local","replace","artist",b.artistid):app.AudioController.playlistClearAdd("artistid",b.artistid,function(){app.AudioController.playPlaylistPosition(0,function(){app.notification("Now playing "+b.artist),app.AudioController.playlistRender()})})},addArtist:function(a){a.stopPropagation(),a.preventDefault();var b=this.model.attributes;"local"==app.audioStreaming.getPlayer()?app.playlists.playlistAddItems("local","append","artist",b.artistid):app.AudioController.playlistAdd("artistid",b.artistid,function(){app.notification(b.artist+" added to the playlist"),app.AudioController.playlistRender()})},thumbsUp:function(a){a.stopPropagation(),a.preventDefault();var b=this.model.attributes,c=b.artistid,d=app.playlists.isThumbsUp("artist",c)?"remove":"add",e=$(a.target).closest(".card");app.playlists.setThumbsUp(d,"artist",c),e.toggleClass("thumbs-up")},viewArtist:function(a){a.stopPropagation(),window.location="#artist/"+this.model.attributes.artistid}}),app.ContactView=Backbone.View.extend({render:function(){return this.$el.html(this.template()),this}}),app.CustomPlaylistSongListView=Backbone.View.extend({tagName:"ul",className:"playlist-song-list",events:{"click .playlist-append":"appendPlaylist","click .playlist-replace":"replacePlaylist","click .playlist-browser-replace":"browserReplacePlaylist","click .playlist-delete":"deleteCustomListPlaylist","click .thumbsup-append":"appendThumbsup","click .thumbsup-replace":"replaceThumbsup","click .thumbsup-browser-replace":"browserReplacePlaylist"},initialize:function(){},render:function(){var a=app.helpers.arg();"playlist"==a[0]&&(this.list=app.playlists.getCustomPlaylist(a[1])),"thumbsup"==a[0]&&(this.list=app.playlists.getThumbsUp("song")),this.$el.empty();var b=0;_.each(this.model.models,function(a){a.attributes.list=this.list,a.attributes.position=b,this.$el.append(new app.CustomPlaylistSongView({model:a}).render().el),b++},this),this.playlistBinds();var c=app.playlists.getDropdown();return this.$el.prepend(c),this},playlistBinds:function(){var a=this;$sortableCustom=this.$el,$sortableCustom.sortable({placeholder:"playlist-item-placeholder",handle:".song-title",items:"> li",axis:"y",update:function(){var b=[],c="thumbsup"==app.helpers.arg(0)?"thumbsup":app.helpers.arg(1),d=$("ul.playlist-song-list, ul.song-thumbsup-list");d.find("div.playlist-item").each(function(c,d){var e=a.list.items[$(d).data("pos")];b.push(e)}),app.playlists.replaceCustomPlayList(c,b)}}).disableSelection()},appendPlaylist:function(a){a.preventDefault();var b=app.playlists.getCustomPlaylist(this.list.id);this.addCustomListToPlaylist(b.items),app.notification("Playlist updated")},replacePlaylist:function(a){a.preventDefault();var b=this.list.id,c=app.playlists.getCustomPlaylist(b);this.replacePlaylistItems(c.items)},browserReplacePlaylist:function(a){a.preventDefault(),"thumbsup"==app.helpers.arg(0)?app.playlists.playlistAddItems("local","replace","thumbsup","song"):app.playlists.playlistAddItems("local","replace","list",this.list.id)},deleteCustomListPlaylist:function(a){a.preventDefault();var b=this.list;app.helpers.confirm("Delete playlist for good? This cannot be undone",function(){app.playlists.deleteCustomPlaylist(b.id);var a=$("#content");a.find(".playlist-song-list").length>0&&a.html('Playlist removed
')})},appendThumbsup:function(a){a.preventDefault();var b=app.playlists.getThumbsUp("song");this.addCustomListToPlaylist(b.items),app.notification("Playlist updated")},replaceThumbsup:function(a){a.preventDefault();var b=app.playlists.getThumbsUp("song");this.replacePlaylistItems(b.items)},replacePlaylistItems:function(a){var b=this;app.helpers.confirm("Replace the current xbmc playlist with this list?",function(){app.AudioController.playlistClear(function(){b.addCustomListToPlaylist(a,function(){app.AudioController.playPlaylistPosition(0,function(){app.AudioController.playlistRender(),app.notification("Playlist updated and playing")})})})})},addCustomListToPlaylist:function(a,b){for(var c in a)"number"!=typeof a[c]&&(a[c]=a[c].file);app.AudioController.playlistAddMultiple("mixed",a,function(a){app.AudioController.playlistRender(),app.playlists.changePlaylistView("xbmc"),b&&b(a)})}}),app.CustomPlaylistSongSmallListView=Backbone.View.extend({tagName:"ul",className:"browser-playlist-song-list",render:function(){this.$el.empty();var a=0;return _.each(this.model.models,function(b){var c=b.attributes;c.pos=a,c.items=[],c.list="local",c.id||(c.id=c.songid),b.attributes=c,this.$el.append(new app.PlaylistItemView({model:c,className:"playlist-item browser-player"}).render().$el),a++},this),this.playlistBinds(),this},playlistBinds:function(){var a=this.$el,b=this;a.sortable({placeholder:"playlist-item-placeholder",handle:".playlist-play",items:"> li",axis:"y",update:function(){var a=[];b.$el.find("div.playlist-item").each(function(b,c){a.push($(c).data("id"))}),app.audioStreaming.sortableChangePlaylistPosition(a)}}).disableSelection()}}),app.CustomPlaylistSongView=Backbone.View.extend({tagName:"li",className:"song-row",events:{"dblclick .song-title":"loadSong","click .song-play":"playSong","click .song-add":"addSong","click .song-thumbsup":"thumbsUp","click .song-remove":"removeSong","click .song-menu":"menu"},initialize:function(){},render:function(){return"undefined"==typeof this.model.attributes.position?this:(app.playlists.isThumbsUp("song",this.model.attributes.songid)&&this.$el.addClass("thumbs-up"),this.$el.html(this.template(this.model.attributes)),this)},menu:function(){app.helpers.menuDialog(app.helpers.menuTemplates("song",this.model.attributes))},playSong:function(){var a=this.model.attributes,b=app.helpers.getSongKey(a);"local"==app.audioStreaming.getPlayer()?app.playlists.playlistAddItems("local","append","song",a.songid,function(){app.audioStreaming.playPosition(app.audioStreaming.playList.items.models.length-1)}):(app.playlists.changePlaylistView("xbmc"),app.AudioController.insertAndPlay(b.type,b.id,function(){app.notification(a.label+" added to the playlist"),app.AudioController.playlistRender()}))},addSong:function(){var a=this.model.attributes,b=app.helpers.getSongKey(a);"local"==app.audioStreaming.getPlayer()?app.playlists.playlistAddItems("local","append","song",a.songid,function(){}):app.AudioController.playlistAdd(b.type,b.id,function(){app.notification(a.label+" added to the playlist"),app.AudioController.playlistRender()})},thumbsUp:function(a){var b=this.model.attributes.songid,c=app.playlists.isThumbsUp("song",b)?"remove":"add",d=$(a.target).closest("li");app.playlists.setThumbsUp(c,"song",b),d.toggleClass("thumbs-up")},removeSong:function(a){var b=this.model.attributes.songid,c=this.model.attributes.list.id,d=$(a.target);app.playlists.deleteCustomPlaylistSong(c,b),d.closest("li").slideUp(function(){$(this).remove()})},downloadSong:function(a){var b=this.model.attributes.file;a.preventDefault(),app.AudioController.downloadFile(b,function(a){window.location=a})},addToCustomPlaylist:function(a){a.preventDefault();var b=this.model.attributes,c=app.helpers.getSongKey(b),d="file"==c.type?b:b.songid;app.playlists.saveCustomPlayListsDialog(c.type,[d])}}),app.FilesView=Backbone.View.extend({tagName:"ul",className:"files-list",initialize:function(){this.mixedView=new app.MixedView({model:{key:"filesPage"}})},events:{"click .entity-heading":"sidebarToggleContent"},render:function(){this.$el.empty();var a=$("#content"),b=this,c=$("#files-container",a),d=$(''),e=$(' ');return 0===c.length?(a.html(this.template(this.model)),_.each(this.model.models,function(a){e.append("heading"==a.attributes.type?b.mixedView.getHeading(a.attributes.id,a.attributes.id):new app.FileView({model:a}).render().el)}),app.helpers.setFirstSidebarContent(e)):(b.model.models.sort(function(a,b){return app.helpers.aphabeticalSort(a.attributes.title,b.attributes.title)}),_.each(this.model.models,function(a){""===a.attributes.filetype||"directory"==a.attributes.filetype?this.$el.append(new app.FileView({model:a}).render().el):d.append(new app.FileView({model:a}).render().el)},this),c.html(""!==d.html()?d:'
No media found in this folder
')),this},sidebarToggleContent:function(a){$(a.target)}}),app.FilesListView=Backbone.View.extend({tagName:"ul",className:"files-list",initialize:function(){},render:function(){return this.$el.empty(),this.model.models.sort(function(a,b){return app.helpers.aphabeticalSort(a.attributes.title,b.attributes.title)}),_.each(this.model.models,function(a){this.$el.append(new app.FileView({model:a}).render().el)},this),this}}),app.FileView=Backbone.View.extend({tagName:"li",className:"file-row",events:{"dblclick .file-item":"playDir","click .file-play":"playDir","click .file-type-directory":"clickDir","click .file-add":"addDir","click .file-menu":"menu"},initialize:function(){},render:function(){var a=this.model.attributes;return a.title=void 0===a.title?a.name:a.title,this.$el.html(this.template(a)),this.$el=app.addOns.invokeAll("postProcessFileView",this.$el,a),this},menu:function(a){a.preventDefault();var b=this.model.attributes,c=this;app.AudioController.downloadFile(b.file,function(a){"music"==b.sourcetype?(b.label=b.title,app.helpers.menuDialog(app.helpers.menuTemplates("song",b))):(b.downloadUrl=a,app.helpers.menuDialog(c.getVideoDialog(b)))})},getVideoDialog:function(a){return{title:a.label,key:"video",omitwrapper:!0,items:[{url:"#","class":"video-download",title:'
Download ',callback:function(){}},{url:"#","class":"video-stream",title:"Stream Video",callback:function(){app.VideoController.stream("html5",a)}}]}},clickDir:function(a){a.stopPropagation();var b=this.model.attributes,c=b.file,d=this,e=$(a.target).parent();app.addOns.invokeAll("clickDir",b),$("#sidebar-first li").removeClass("lowest"),e.addClass("loading"),app.cached.fileCollection=new app.FileCollection,app.cached.fileCollection.fetch({sourcetype:b.sourcetype,name:c,success:function(a){var c=new app.FilesView({model:a}).render().$el;0===d.$el.find("ul.files-list").length&&d.$el.append(c),e.addClass("lowest").removeClass("loading"),$("#folder-name").html(b.label)}})},fileGetTypeId:function(a){var b={key:"file",value:a.file};return("album"==a.type||"artist"==a.type||"song"==a.type||"movie"==a.type||"episode"==a.type)&&(b.key=a.type+"id",b.value=a.id),b},playDir:function(a){a.stopPropagation();var b=this.model.attributes,c=app[b.controller],d=this.fileGetTypeId(b);c.insertAndPlay(d.key,d.value,function(){app.notification(b.label+" added to the playlist"),c.playlistRender()})},addDir:function(a){a.stopPropagation();var b=this.model.attributes,c=this.fileGetTypeId(b),d=app[b.controller];d.playlistAdd(c.key,c.value,function(){app.notification(b.label+" added to the playlist"),d.playlistRender()})},downloadSong:function(a){var b=this.model.attributes.file;a.preventDefault(),app.AudioController.downloadFile(b,function(a){window.location=a})},addToCustomPlaylist:function(a){a.preventDefault();var b=this.model.attributes;app.playlists.saveCustomPlayListsDialog("file",[b])}}),app.HomeView=Backbone.View.extend({events:{"click #logo":"showMeBtnClick"},render:function(){return this.$el.html(this.template(this.model)),this},showMeBtnClick:function(){}}),app.MixedView=Backbone.View.extend({tagName:"div",className:"mixed-wrapper",entities:["artist","album","song","movie","tvshow"],icons:{music:"fa-music",video:"fa-film",song:"fa-music",artist:"fa-microphone",album:"fa-th-large",tvshow:"fa-desktop",movie:"fa-film"},initialize:function(){},events:{},render:function(){var a=this,b=a.model.key,c=$('
'),d="";return $.each(this.entities,function(e,f){var g=b+"-"+f+"s";if(void 0!==a.model.callbacks[f]){d='
'+a.getHeading(f,"Looking for "+f+"s","loading")+"
",c.append(d);var h=a.model.callbacks[f];h()}}),c.append('
'),this.$el.html(c),this},setCallbacks:function(a){this.model.callbacks=a},addEntity:function(a){-1==$.inArray(a,this.entities)&&this.entities.push(a)},renderPane:function(a,b,c){var d=this,e=d.model.key,f=$("#"+e+"-"+a+"s");if(f.empty(),0===b.models.length)this.noResult(a);else{f.html(this.getHeading(a,a+"s","has-results"));var g=new app[c]({model:b,className:a+"-"+e+"-list "+a+"-list"});f.append(g.render().$el),this.lazyLoadImages(f)}},noResult:function(a){$("#"+this.model.key+"-bottom").append(this.getHeading(a,"No "+a+" matches","no-result")),$("#"+this.model.key+"-"+a+"s").empty()},getHeading:function(a,b,c){return'
'+this.getLogo(a)+b+" "},getLogo:function(a){return'
'},lazyLoadImages:function(){$("img.content-lazy").each(function(a,b){$d=$(b),""!==$d.data("original")&&$d.attr("src",$d.data("original"))})}}),app.MoviesView=Backbone.View.extend({initialize:function(){},render:function(){return this}}),app.MovieListView=Backbone.View.extend({tagName:"ul",className:"video-list movie-page-list",initialize:function(){var a=this;this.model.on("reset",this.render,this),this.model.on("add",function(b){a.$el.append(new app.MovieListItemView({model:b}).render().el)})},events:{"click .next-page":"nextPage"},render:function(){return this.$el.empty(),_.each(this.model.models,function(a){this.$el.append(new app.MovieListItemView({model:a}).render().el)},this),void 0!==this.model.showNext&&this.model.showNext===!0&&(this.$el=app.pager.viewHelpers(this.$el,"movie")),this},nextPage:function(){var a=$(".next-page").last();app.pager.nextPage(a,"movie")},backFromMovie:function(a,b){var c=$(window);if(a===!0&&"undefined"!=typeof app.vars.backHash){var d=app.vars.backHash.split("/");"#movie"==d[0]&&(c.scrollTo($(".movie-row-"+d[1]),0,{offset:-200}),b=!0)}return b}}),app.MovieListItemView=Backbone.View.extend({tagName:"li",className:"movie-item-content",events:{"click .movie-play":"playMovie","click .movie-add":"addMovie","click .movie-thumbsup":"thumbsUp","click .movie-menu":"menu","click .actions-wrapper":"view","click .movie-watched":"toggleWatched"},initialize:function(){this.model.on("change",this.render,this),this.model.on("destroy",this.close,this)},render:function(){var a=this.model.attributes;return a.label?(a.type="movie",a.watched=app.VideoController.watchedStatus(a),a.thumbsup=app.playlists.isThumbsUp("movie",a.movieid),this.$el.html(this.template(a)),this):this},view:function(){document.location="#movie/"+this.model.attributes.movieid},menu:function(a){a.stopPropagation(),a.preventDefault();var b=app.helpers.menuTemplates("movie",this.model.attributes);app.helpers.menuDialog(b)},thumbsUp:function(a){a.stopPropagation(),a.preventDefault();var b=this.model.attributes,c=app.playlists.isThumbsUp("movie",b.movieid)?"remove":"add",d=$(a.target).closest(".movie-actions");app.playlists.setThumbsUp(c,"movie",b.movieid),d.toggleClass("thumbs-up")},playMovie:function(a){a.preventDefault(),a.stopPropagation(),app.VideoController.playVideoId(this.model.attributes.movieid,"movieid",function(){app.VideoController.playlistRender()})},addMovie:function(a){a.preventDefault(),a.stopPropagation(),app.VideoController.addToPlaylist(this.model.attributes.movieid,"movieid","add",function(){app.VideoController.playlistRender()})},toggleWatched:function(a){a.preventDefault(),a.stopPropagation();var b=$(a.target).closest(".card");this.model.attributes.playcount=b.hasClass("watched-yes")?1:0,app.VideoController.toggleWatched("movie",this.model.attributes,function(a){a===!0?b.addClass("watched-yes").removeClass("watched-no"):b.addClass("watched-no").removeClass("watched-yes")})}}),app.MovieView=Backbone.View.extend({allMovieCache:[],initialize:function(){var a=this,b=new app.MovieAllCollection;b.fetch({success:function(b){a.allMovieCache=b}})},events:{"click .library-back":"libraryBack","click .library-next":"libraryNext","click .movie-play":"playMovie","click .movie-add":"addMovie","click .movie-thumbsup":"thumbsUp","click .movie-stream":"stream","click .movie-menu":"menu"},render:function(){var a=this.model.attributes;return a.thumbsup=app.playlists.isThumbsUp("movie",a.movieid),this.$el.html(this.template(a)),_.defer(function(){var b=$("#fanart-background",this.$el),c=app.parseImage(a.fanart,"fanart");b.backstretch(c)}),this},libraryBack:function(a){a.preventDefault(),window.history.back()},libraryNext:function(a){a.preventDefault();var b=app.pager.libraryNav("movie",this.model.attributes.id,this.allMovieCache.models);b.next>0&&(document.location="#movie/"+b.next)},menu:function(a){a.stopPropagation(),a.preventDefault();var b=app.helpers.menuTemplates("movie",this.model.attributes);app.helpers.menuDialog(b)},thumbsUp:function(a){a.stopPropagation(),a.preventDefault();var b=this.model.attributes,c=app.playlists.isThumbsUp("movie",b.movieid)?"remove":"add",d=$(a.target).closest(".movie-actions");app.playlists.setThumbsUp(c,"movie",b.movieid),d.toggleClass("thumbs-up")},playMovie:function(a){a.preventDefault(),app.VideoController.playVideoId(this.model.attributes.movieid,"movieid",function(){app.VideoController.playlistRender()})},addMovie:function(a){a.preventDefault(),app.VideoController.addToPlaylist(this.model.attributes.movieid,"movieid","add",function(){app.VideoController.playlistRender()})},stream:function(a){a.preventDefault();var b=$(a.target).data("player");app.VideoController.stream(b,this.model.attributes)}}),app.playerStateView=Backbone.View.extend({initialize:function(){this.$body=$("body"),this.$nowPlaying=$("#now-playing")},render:function(){var a=app.playlists.getNowPlaying(),b=$(window),c=app.helpers.varGet("lastPlaying","");this.$songs=$(".song"),a.playingItemChanged=c!=a.item.file,a.status="notPlaying"==a.status?"stopped":app.helpers.exists(a.player.speed)&&0===a.player.speed?"paused":a.status,app.state=a.status,app.cached.nowPlaying=a,app.helpers.varSet("lastPlaying",void 0!==a.item?a.item.file:null),this.bodyClasses(),this.$songs.removeClass("playing-row"),"playing"==a.status||"paused"==a.status?(this.nowPlayingMinor(),a.playingItemChanged&&(this.nowPlayingMajor(),b.trigger("playingItemChange",a))):this.notPlaying(),this.playerCron(),b.trigger("playerUpdate",a)},bodyClasses:function(){var a=app.playlists.getNowPlaying();void 0===a.player&&(a.player={shuffled:!1,repeat:"off"}),this.$body.removeClass("playing").removeClass("paused").removeClass("notPlaying").removeClass("random-on").removeClass("random-off").removeClass("repeat-off").removeClass("repeat-all").removeClass("repeat-one").addClass(a.status).addClass("random-"+(a.player.shuffled===!0?"on":"off")).addClass("repeat-"+a.player.repeat),this.$body.removeClass(function(a,b){return(b.match(/\bactivePlayer\S+/g)||[]).join(" ")}).addClass("activePlayer-"+a.activePlayer)},nowPlayingMinor:function(){this.tagPlayingRow(),this.setTitle();{var a=app.playlists.getNowPlaying(),b=$("#time"),c=0,d=0,e=app.helpers.parseArtistsArray(a.item);$(".playlist .playing-row")}$(".playing-song-meta").html(e),app.shellView.$progressSlider.slider("value",a.player.percentage),1==a.activePlayer?(d=app.helpers.formatTime(a.player.totaltime),c=app.helpers.formatTime(a.player.time)):0===a.activePlayer&&(d=app.helpers.secToTime(parseInt(a.item.duration)),c=app.helpers.formatTime(a.player.time)),b.find(".time-cur").html(c),b.find(".time-total").html(d),"episode"==a.item.type&&app.VideoController.invalidateCache("episode")},nowPlayingMajor:function(){var a=app.playlists.getNowPlaying();if(this.$nowPlaying.find("#playing-thumb").css("background-image","url('"+app.parseImage(a.item.thumbnail)+"')"),1==app.cached.nowPlaying.activePlayer&&this.$nowPlaying.find("#playing-thumb").attr("#remote"),$(".playing-song-title").html(a.item.label).attr("title",a.item.album).attr("href","#album/"+a.item.albumid),"#"==location.hash||""===location.hash&&"xbmc"==app.audioStreaming.getPlayer()){var b=$(".backstretch img"),c=b.attr("src"),d=app.parseImage(a.item.fanart,"fanart");b.length>0&&c!=d&&$.backstretch(d)}$(".playing-fanart").css("background-image",'url("'+app.parseImage(a.item.fanart,"fanart")+'")');var e;e=0===app.playlists.getNowPlaying("activePlayer")?app.AudioController:app.VideoController,e.playlistRender(function(){$sb=$("#sidebar-second"),$(".playlist-pos-"+a.player.position,$sb).scrollTo($(".playing-row"),0,{offset:{top:-11}})})},tagPlayingRow:function(){var a=app.cached.nowPlaying;this.$songs.each(function(b,c){var d=$(c);void 0===a.item||d.attr("data-songid")!=a.item.id||d.hasClass("playlist-item")?d.hasClass("playlist-item")&&(d.data("id")!=a.player.position||d.parent().hasClass("browser-player")||d.data("playlistId")!=a.activePlayer||d.addClass("playing-row")):d.addClass("playing-row")})},setTitle:function(){var a=app.cached.nowPlaying,b=a.item.label;"xbmc"==app.audioStreaming.getPlayer()&&(document.title=("playing"==a.status?"▶ ":"")+(void 0!==b?b+" | ":"")+"Chorus.")},notPlaying:function(){var a=app.cached.nowPlaying;document.title="Chorus.",$(".playing-song-title").html("Nothing Playing"),$(".playing-song-meta").html(""),$("ul.playlist div.playlist-item.playing-row").removeClass("playing-row"),app.shellView.$progressSlider.slider("value",0),this.$nowPlaying.find("#playing-thumb").attr("src",app.parseImage("")).attr("title","").parent().attr("href","#albums");var b=$("#time");b.find(".time-cur").html("0"),b.find(".time-total").html("0:00"),app.shellView.$volumeSlider.slider("value",a.volume.volume)},playerCron:function(){var a=app.cached.nowPlaying,b=app.helpers.varGet("lastState",""),c="undefined"==typeof b||"undefined"==typeof b.volume,d={},e="",f="";$("a.ui-slider-handle",app.shellView.$volumeSlider).hasClass(".ui-slider-active")||(app.shellView.$volumeSlider.slider("value",a.volume.volume),0===a.volume.volume?$("body").addClass("muted"):$("body").removeClass("muted")),(c||"undefined"==typeof b.player||b.player.repeat!=a.player.repeat)&&(d=$(".player-repeat"),e=d.attr("title"),f="off"==a.player.repeat?"Repeat is off":"Currently repeating "+a.player.repeat,e!=f&&d.attr("title",f)),(c||b.player.shuffled!=a.player.shuffled)&&(d=$(".player-random"),e=d.attr("title"),f="Random is "+(a.player.shuffled===!0?"On":"Off"),e!=f&&d.attr("title",f)),app.helpers.varSet("lastState",a)}}),app.PlaylistView=Backbone.View.extend({tagName:"div",className:"playlist-wrapper",events:{"click .player-audio":"viewAudio","click .player-video":"viewVideo"},initialize:function(){},render:function(){this.$el.empty();var a=0,b=$('
'),c=$('
'),d="undefined"!=typeof this.model.playlistId?this.model.playlistId:0;return _.each(this.model.models,function(b){b.pos=a,a++,b.playlistId=d,c.append(new app.PlaylistItemView({model:b}).render().el)},this),this.$el.append(c),app.playlists.getThumbsUp(),b.append('
Audio '),b.append('
Video '),this.$el.prepend(b),this.$el.addClass("plid-"+d),$sortable=$("ul.playlist",this.$el),$sortable.sortable({placeholder:"playlist-item-placeholder",handle:".playlist-play",items:"> li",axis:"y",update:function(a,b){app.playlists.sortableChangePlaylistPosition(a,b)}}).disableSelection(),this},viewAudio:function(){app.AudioController.playlistRender()},viewVideo:function(){app.VideoController.playlistRender()}}),app.PlaylistItemView=Backbone.View.extend({tagName:"li",className:"playlist-item",events:{"dblclick .playlist-play":"playPosition","click .removebtn":"removePosition","click .playbtn":"playPosition","click .repeating":"cycleRepeat","click .playlist-song-thumbsup":"thumbsUp","click .playlist-song-menu":"menu"},initialize:function(){},render:function(){var a=this.model,b=app.playlists.getNowPlaying();return a.id="undefined"!=typeof a.id?a.id:"file",a.albumid="undefined"!=typeof a.albumid?a.albumid:"file",a.subLink=this.buildSubLink(a),a.url="file"!=a.albumid?"#album/"+a.albumid:app.helpers.buildUrl(a.type,a.id,a),this.$el.html(this.template(a)),"playing"!=b.status&&"paused"!=b.status||b.player.playlistid!=a.playlistId||b.player.position!=a.pos||$(".playlist-item",this.$el).addClass("playing-row"),"file"==this.model.id&&$(".song",this.$el).data("file",a.file),$(".song",this.$el).data("playlistId",a.playlistId),"file"!=this.model.id&&app.playlists.isThumbsUp("song",this.model.id)&&this.$el.addClass("thumbs-up"),this},menu:function(){app.helpers.menuDialog(1==this.model.playlistId?app.helpers.menuTemplates("movie",this.model):app.helpers.menuTemplates("song",this.model))},playPosition:function(){if("local"==this.model.list)app.audioStreaming.playPosition(this.model.pos);else{var a=1==this.model.playlistId?app.VideoController:app.AudioController;a.playPlaylistPosition(this.model.pos,function(){a.playlistRender()})}},removePosition:function(){if("local"==this.model.list)app.audioStreaming.deleteBrowserPlaylistSong(this.model.pos),app.audioStreaming.renderPlaylistItems();else{var a=1==this.model.playlistId?app.VideoController:app.AudioController;a.removePlaylistPosition(this.model.pos,function(){a.playlistRender()})}},cycleRepeat:function(){$("#footer").find(".player-repeat").trigger("click")},thumbsUp:function(a){a.stopPropagation();var b=this.model.id,c=1==this.model.playlistId?"video":"song",d=app.playlists.isThumbsUp(c,b)?"remove":"add",e=$(a.target).closest("li");app.playlists.setThumbsUp(d,c,b),e.toggleClass("thumbs-up")},buildSubLink:function(a){var b,c,d;if("song"==a.type){if(a.albumArtistString="undefined"!=typeof a.albumartist&&"undefined"!=typeof a.albumartist[0]?a.albumartist[0]:"",a.artistString="undefined"!=typeof a.artist&&"undefined"!=typeof a.artist[0]?a.artist[0]:"",d="Track: "+this.model.track+" Duration: "+app.helpers.secToTime(this.model.duration),b="#search/"+(""!==a.albumArtistString?a.albumArtistString:a.artistString),c=""!==a.artistString?a.artistString:a.albumArtistString,""===a.artistString&&""===a.albumArtistString)return""}else if("movie"==a.type)c=a.year,b="#movies/year/"+a.year,d="More movies from "+c;else{if("episode"!=a.type)return"";c="S"+a.season+" E"+a.episode+" - "+a.showtitle,b="#tvshow/"+a.tvshowid+"/"+a.season,d="More episodes from season"+a.season}return'
'+c+" "}}),app.PlaylistCustomListsView=Backbone.View.extend({tagName:"ul",className:"custom-lists",events:{"dblclick li":"replacePlaylist","click .name":"toggleDetail"},initialize:function(){},render:function(){this.$el.empty();var a=0;return _.each(this.model.models,function(b){b.pos=a,a++;var c=new app.PlaylistCustomListItemView({model:b}).render();this.$el.append(c.el)},this),this.$el.prepend('
Thumbs Up '),this},toggleDetail:function(a){var b=$(a.target),c=b.closest("li");c.hasClass("open")?c.removeClass("open"):(c.parent().find("li").removeClass("open"),c.addClass("open"))}}),app.PlaylistCustomListItemView=Backbone.View.extend({tagName:"li",className:"list-item",events:{"dblclick .name":"replacePlaylist"},initialize:function(){},render:function(){return this.$el.html(this.template(this.model.attributes)),this}}),app.RemoteView=Backbone.View.extend({tagName:"div",className:"xbmc-remote-wrapper",initialize:function(){},events:{"click .input-button":"inputButton","click .player-button":"playerButton","click .power-button":"powerButton"},render:function(){var a={playing:!1,item:{}};this.$el.html(this.template(a));var b=app.playlists.getNowPlaying();return $(".playing-fanart",this.$el).css("background-image",'url("'+app.parseImage(b.item.fanart,"fanart")+'")'),$(".fa",this.$el).disableSelection(),this},inputButton:function(a){var b=$(a.target),c=b.data("type");app.xbmcController.input(c)},playerButton:function(a){var b=$(a.target),c=b.data("type"),d=app.playlists.getNowPlaying();switch(c){case"Stop":app.xbmcController.command("Player.Stop",[d.activePlayer])}},powerButton:function(){app.helpers.menuDialog(this.powerDialogItems())},powerDialogItems:function(){return{title:"Power Down",key:"powerDown",omitwrapper:!0,items:[{url:"#","class":"xbmc-quit",title:"Quit XBMC",callback:function(){app.xbmcController.command("Application.Quit")}},{url:"#","class":"system-hibernate",title:"Hibernate",callback:function(){app.xbmcController.command("System.Hibernate")}},{url:"#","class":"system-reboot",title:"Reboot",callback:function(){app.xbmcController.command("System.Reboot")}},{url:"#","class":"system-shutdown",title:"Shutdown",callback:function(){app.xbmcController.command("System.Shutdown")}},{url:"#","class":"system-nothing",title:"None of the above",callback:function(){}}]}}}),app.searchView=Backbone.View.extend({initialize:function(){var a={key:"search",callbacks:{}};this.mixedView=new app.MixedView({model:a})},songsLoaded:!1,render:function(){var a=this.model.key,b=this;if(a.length>1){app.router.navigate("#search/"+a),app.shellView.selectMenuItem("search","no-sidebar");var c={song:function(){b.searchSongs(a)},artist:function(){b.searchArtists(a)},album:function(){b.searchAlbums(a)},tvshow:function(){b.searchTv(a)},movie:function(){b.searchMovies(a)},addon:function(){b.searchAddOns(a)}};b.mixedView.addEntity("addon"),b.mixedView.setCallbacks(c);var d=$("#content"),e=this.mixedView.render().$el;d.html(e),app.helpers.setTitle('
Search '),b.searchAddOns(a)}},searchAddOns:function(a){app.addOns.ready(function(){var b=$("#search-addons");b.html(app.addOns.invokeAll("searchAddons",b,a))})},searchArtists:function(a){this.searchSectionPreLoadRender(a,"artist","ArtistCollection","AristsRandView")},searchAlbums:function(a){this.searchSectionPreLoadRender(a,"album","AlbumsCollection","SmallAlbumsList")},searchMovies:function(a){var b=this,c=new app.MovieAllCollection;
-c.fetch({success:function(){b.searchSectionRender(a,"movie","MovieAllCollection","CustomMovieCollection","MovieListView")}})},searchTv:function(a){var b=this;b.searchSectionPreLoadRender(a,"tvshow","TvshowAllCollection","TvshowListView")},searchSongs:function(a){var b=this;b.songsLoaded===!0?b.searchSectionRender(a,"song","SongCollection","CustomSongCollection","SongListView"):app.store.libraryCall(function(){b.searchSectionRender(a,"song","SongCollection","CustomSongCollection","SongListView"),b.songsLoaded=!0},"songsReady")},stringMatchFilter:function(a,b){var c=a.attributes.label;return c.toLowerCase().indexOf(b.toLowerCase())>-1},searchSectionRender:function(a,b,c,d,e){var f=$("#search-"+b+"s"),g=this,h=[],i=b+"id";app.cached["search"+c]=new app[c],app.cached["search"+c].fetch({success:function(c){f.empty();var j=c.models.filter(function(b){return g.stringMatchFilter(b,a)});if(_.each(j,function(a){h.push(a.attributes[i])}),h.length>0){var k=new app[d];k.fetch({items:h,success:function(a){_.defer(function(){g.mixedView.renderPane(b,a,e)})}})}else _.defer(function(){g.mixedView.noResult(b)})}})},searchSectionPreLoadRender:function(a,b,c,d){var e=this,f=[];app.cached["search"+c]=new app[c],app.cached["search"+c].fetch({success:function(c){f=c.models.filter(function(b){return e.stringMatchFilter(b,a)}),c.models=f,_.defer(function(){e.mixedView.renderPane(b,c,d)})}})}}),app.ShellView=Backbone.View.extend({initialize:function(){var a=$(window),b=$("body"),c=this;app.cached.keyupTimeout=0,c.pageChange(location.hash,"#init"),a.bind("hashchange",function(a){var b=location.hash,d=app.vars.lastHash,e="undefined"==typeof d?"#":d;b!=e&&c.pageChange(b,e),app.vars.backHash=d,app.vars.lastHash=b,$(window).trigger("pageChange",[a,b,e])}),a.bind("scroll",function(){a.scrollTop()>50?b.addClass("fixed-header"):b.removeClass("fixed-header")})},render:function(){this.$el.html(this.template());return app.AudioController.playlistRender(),this.$progressSlider=$("#progress-bar",this.el),this.$progressSlider.slider({range:"min",value:0,min:0,max:100,stop:function(a,b){app.AudioController.seek(b.value)}}),this.$volumeSlider=$("#volume",this.el),this.$volumeSlider.slider({range:"min",value:0,min:0,max:100,stop:function(a,b){app.AudioController.setVolume(b.value)}}),$("img.content-lazy").lazyload({event:"contentLazy"}),app.AudioController.getNowPlayingSong(function(){setInterval(app.AudioController.updatePlayerState,5e3),app.notifications.init()},!0),this.$el.append((new app.RemoteView).render().$el),this},events:{"keyup #search":"onkeyupSearch","click #search-this":"search","keypress #search":"onkeypressSearch","click #logo":"home","click .player-prev":"playerPrev","click .player-next":"playerNext","click .player-play":"playerPlay","click .player-mute":"playerMute","click .player-repeat":"playerRepeat","click .player-random":"playerRandom","click .song-image":"remoteControl","click .playlist-primary-tab":"primaryTabClick","click .save-playlist":"savePlayList","click .clear-playlist":"clearPlaylist","click .refresh-playlist":"refreshPlaylist","click .new-custom-playlist":"newCustomPlaylist","click .about-dialog":"about","click .browser-view-xbmc":"viewXbmc","click .browser-view-local":"viewLocal","click .browser-player-play":"localTogglePlay","click .browser-player-prev":"localPrev","click .browser-player-next":"localNext","click .browser-player-repeat":"localRepeat","click .browser-player-random":"localRandom","click .browser-player-mute":"localMute","click .toggle-ss":"toggleSidebarSecondVisibility","click .toggle-vol":"toggleVolumeVisibility","click .toggle-search":"toggleSearchVisibility"},pageChange:function(){var a=app.helpers.arg(0);$("body").removeClass(function(a,b){return(b.match(/\bsection\S+/g)||[]).join(" ")}).addClass("section-"+a)},primaryTabClick:function(a){$thisTab=$(a.target),$thisTab.hasClass("playlist-primary-tab")||($thisTab=$thisTab.closest("li.playlist-primary-tab"));var b=$thisTab.data("pane");app.playlists.changePlaylistView(b),("xbmc"==b||"local"==b)&&app.settings.set("lastPlayer",b)},search:function(){var a=$("#search");app.cached.searchView=new app.searchView({model:{key:a.val()}}),app.cached.searchView.render()},onkeyupSearch:function(){var a=200;$("#search").keyup(function(){clearTimeout(app.cached.keyupTimeout),app.cached.keyupTimeout=setTimeout(function(){document.location="#search/"+encodeURIComponent($("#search").val())},a)})},onkeypressSearch:function(a){13===a.keyCode&&a.preventDefault()},selectMenuItem:function(a,b){var c=$("body"),d="undefined"!=typeof b&&"sidebar"==b?"open":"close";if(app.helpers.toggleSidebar(d),"home"==a)c.addClass("home");else switch($(".backstretch").length>0&&$(".backstretch").remove(),c.removeClass("home"),a){case"playlist":$("ul.custom-lists .custom-playlist-item").each(function(a,b){var c=$(b),d=c.parent();c.data("id")==app.helpers.arg(1)?d.addClass("open"):d.removeClass("open")});break;case"thumbsup":$(".custom-lists li").removeClass("open"),$(".thumbsup-link").addClass("open")}if(a){var e=$(".mainnav",this.el),f=e.find("li.nav-"+a);e.find("li").removeClass("active"),f.addClass("active")}},playerPrev:function(){app.AudioController.sendPlayerCommand("Player.GoTo","previous")},playerNext:function(){app.AudioController.sendPlayerCommand("Player.GoTo","next")},playerPlay:function(){app.AudioController.sendPlayerCommand("Player.PlayPause","toggle")},playerRepeat:function(){app.AudioController.sendPlayerCommand("Player.SetRepeat","cycle")},playerRandom:function(){app.AudioController.sendPlayerCommand("Player.SetShuffle","toggle")},remoteControl:function(a){"remote"==app.helpers.arg(0)?(a.preventDefault(),window.history.back()):document.location="#remote"},playerMute:function(){var a,b=this.$volumeSlider.slider("value"),c=$("body");b>0?(this.lastVol=b,app.AudioController.setVolume(0),this.$volumeSlider.slider("value",0),c.addClass("muted")):(a=app.helpers.exists(this.lastVol)&&this.lastVol>0?this.lastVol:50,app.AudioController.setVolume(a),this.$volumeSlider.slider("value",a),c.removeClass("muted"))},updateState:function(a){app.cached.playerState=new app.playerStateView({model:a}),app.cached.playerState.render()},savePlayList:function(a){a.preventDefault(),app.playlists.saveCustomPlayListsDialog(),app.playlists.changePlaylistView("lists")},refreshPlaylist:function(a){a.preventDefault(),this.getController().playlistRender()},newCustomPlaylist:function(a){a.preventDefault(),app.playlists.saveCustomPlayListsDialog("song",[])},clearPlaylist:function(a){a.preventDefault();var b=this.getController();b.playlistClear(function(){b.playlistRender()})},getController:function(){var a={};return a="local"==app.audioStreaming.getPlayer()?app.audioStreaming:$(".plid-1").length>0?app.VideoController:app.AudioController},about:function(a){a.preventDefault(),app.helpers.aboutDialog()},scanLibrary:function(){},viewXbmc:function(a){a.preventDefault(),app.audioStreaming.setPlayer("xbmc")},viewLocal:function(a){a.preventDefault(),app.audioStreaming.setPlayer("local")},localTogglePlay:function(a){a.preventDefault(),app.audioStreaming.togglePlay()},localPrev:function(a){a.preventDefault(),app.audioStreaming.prev()},localNext:function(a){a.preventDefault(),app.audioStreaming.next()},localRepeat:function(a){a.preventDefault(),app.audioStreaming.repeat()},localRandom:function(a){a.preventDefault(),app.audioStreaming.random()},localMute:function(a){a.preventDefault(),app.audioStreaming.mute()},toggleSidebarSecondVisibility:function(){$("body").toggleClass("ss-open")},toggleVolumeVisibility:function(){$("body").toggleClass("vol-open")},toggleSearchVisibility:function(){$("body").toggleClass("search-open")}}),app.SongListView=Backbone.View.extend({tagName:"ul",className:"song-list",initialize:function(){},render:function(){return this.$el.empty(),_.each(this.model.models,function(a){this.$el.append(new app.SongView({model:a}).render().$el)},this),this}}),app.SongView=Backbone.View.extend({tagName:"li",className:"song-row",events:{"dblclick .song-title":"playSong","click .song-play":"playSong","click .song-add":"addSong","click .song-thumbsup":"thumbsUp","click .song-menu":"menu"},initialize:function(){this.model.on("change",this.render,this),this.model.on("destroy",this.close,this)},render:function(){return app.playlists.isThumbsUp(this.model.attributes.songid)&&this.$el.addClass("thumbs-up"),this.$el.html(this.template(this.model.attributes)),this},menu:function(){app.helpers.menuDialog(app.helpers.menuTemplates("song",this.model.attributes))},playSong:function(){var a=this.model.attributes;"local"==app.audioStreaming.getPlayer()?app.playlists.playlistAddItems("local","append","song",a.songid,function(){app.audioStreaming.playPosition(app.audioStreaming.playList.items.models.length-1)}):(app.playlists.changePlaylistView("xbmc"),app.AudioController.insertAndPlay("songid",a.songid,function(){app.notification(a.label+" added to the playlist"),app.AudioController.playlistRender()}))},addSong:function(){var a=this.model.attributes;"local"==app.audioStreaming.getPlayer()?app.playlists.playlistAddItems("local","append","song",a.songid):app.AudioController.playlistAdd("songid",a.songid,function(){app.notification(a.label+" added to the playlist"),app.AudioController.playlistRender()})},thumbsUp:function(a){var b=this.model.attributes.songid,c=app.playlists.isThumbsUp("song",b)?"remove":"add",d=$(a.target).closest("li");app.playlists.setThumbsUp(c,"song",b),d.toggleClass("thumbs-up")}}),app.ThumbsupView=Backbone.View.extend({initialize:function(){var a={key:"thumbsup",callbacks:{}};this.mixedView=new app.MixedView({model:a})},songsLoaded:!1,render:function(){var a=this,b=app.playlists.isAnyThumbsUp();if(app.shellView.selectMenuItem("thumbsup","no-sidebar"),app.helpers.setTitle('
Thumbs Up'),b){var c={song:function(){a.getItems("song","CustomPlaylistSongListView")},artist:function(){a.getItems("artist","AristsRandView")},album:function(){a.getItems("album","SmallAlbumsList")},tvshow:function(){a.getItems("tvshow","TvshowListView")},movie:function(){a.getItems("movie","MovieListView")}};a.mixedView.setCallbacks(c),this.$el.html(this.mixedView.render().$el)}else{var d='
Click a thumb to start';this.$el.html(d)}return this},getItems:function(a,b){var c=this,d=new app.ThumbsUpCollection;d.fetch({name:a,success:function(d){_.defer(function(){0===d.models.length?c.mixedView.noResult(a):c.mixedView.renderPane(a,d,b)})}})}}),app.TvshowsView=Backbone.View.extend({initialize:function(){},render:function(){return this}}),app.TvshowListView=Backbone.View.extend({tagName:"ul",className:"video-list tvshow-page-list",initialize:function(){var a=this;this.model.on("reset",this.render,this),this.model.on("add",function(b){a.$el.append(new app.TvshowListItemView({model:b}).render().el)})},events:{"click .next-page":"nextPage"},render:function(){return this.$el.empty(),_.each(this.model.models,function(a){this.$el.append(new app.TvshowListItemView({model:a}).render().el)},this),this.$el.find("img").lazyload({threshold:200}),this},nextPage:function(a){app.pager.nextPage($(a.target),"tvshow")},backFromTvshow:function(a,b){var c=$(window);if(a===!0&&"undefined"!=typeof app.vars.backHash){var d=app.vars.backHash.split("/");"#tvshow"==d[0]&&(c.scrollTo($(".tvshow-row-"+d[1]),0,{offset:-200}),b=!0)}return b}}),app.TvshowListItemView=Backbone.View.extend({tagName:"li",className:"tvshow-item-content",events:{"click .tvshow-play":"playTvshow","click .tvshow-add":"add","click .tvshow-thumbsup":"thumbsUp","click .actions-wrapper":"view"},initialize:function(){this.model.on("change",this.render,this),this.model.on("destroy",this.close,this)},render:function(){this.model.attributes.type="tvshow";var a=this.model.attributes;return a.label?(a.watched=app.VideoController.watchedStatus(a),a.thumbsup=app.playlists.isThumbsUp("tvshow",a.tvshowid),this.$el.html(this.template(a)),this):this},view:function(){document.location="#tvshow/"+this.model.attributes.tvshowid},add:function(a){a.preventDefault(),a.stopPropagation();var b=this.model.attributes;app.VideoController.tvshowAdd(b,function(){app.VideoController.playlistRender()})},play:function(a){a.preventDefault(),a.stopPropagation();var b=this.model.attributes;app.VideoController.tvshowPlay(b,function(){app.VideoController.playlistRender()})},thumbsUp:function(a){a.preventDefault(),a.stopPropagation();var b=this.model.attributes,c=app.playlists.isThumbsUp("tvshow",b.tvshowid)?"remove":"add",d=$(a.target).closest(".tvshow-actions");app.playlists.setThumbsUp(c,"tvshow",b.tvshowid),d.toggleClass("thumbs-up")}}),app.TvshowView=Backbone.View.extend({allTvshowCache:[],initialize:function(){var a=this,b=new app.TvshowAllCollection;b.fetch({success:function(b){a.allTvshowCache=b}})},events:{"click .library-back":"libraryBack","click .library-next":"libraryNext","click .tvshow-play":"play","click .tvshow-add":"add","click .tvshow-thumbsup":"thumbsUp","click .tv-stream":"stream","click .tvshow-menu":"menu"},render:function(){var a=this.model.attributes,b=this;return a.type=void 0!==a.type?a.type:"tvshow",a.thumbsup=app.playlists.isThumbsUp("tvshow",a.tvshowid),this.$el.html(this.template(a)),_.defer(function(){var b=$("#fanart-background",this.$el),c=app.parseImage(a.fanart,"fanart");b.backstretch(c)}),"tvshow"==a.type&&a.seasons.length>0&&(app.cached.tvSeasonListView=new app.TvSeasonListView({model:a.seasons}),$("#seasons",b.$el).html(app.cached.tvSeasonListView.render().$el)),("season"==a.type||"episode"==a.type)&&(app.cached.tvepisodeCollection=new app.TvepisodeCollection,app.cached.tvepisodeCollection.fetch({tvshowid:a.tvshowid,season:a.season,success:function(c){c.length>0&&(app.cached.tvSeasonListView=new app.TvSeasonListView({model:c}),$("#seasons",b.$el).html(app.cached.tvSeasonListView.render().$el).addClass("episodes"),"episode"==a.type&&$(".row-episode-"+a.episodeid,b.$el).addClass("active"))}})),this},libraryBack:function(a){a.preventDefault(),window.history.back()},libraryNext:function(a){a.preventDefault();var b=app.pager.libraryNav("tvshow",this.model.attributes.tvshowid,this.allTvshowCache.models);b.next>0&&(document.location="#tvshow/"+b.next)},menu:function(a){a.stopPropagation(),a.preventDefault();var b=app.helpers.menuTemplates("tvshow",this.model.attributes);app.helpers.menuDialog(b)},thumbsUp:function(a){a.stopPropagation(),a.preventDefault();var b=this.model.attributes,c=app.playlists.isThumbsUp("tvshow",b.tvshowid)?"remove":"add",d=$(a.target).closest(".tvshow-actions");app.playlists.setThumbsUp(c,"tvshow",b.tvshowid),d.toggleClass("thumbs-up")},play:function(a){a.preventDefault(),a.stopPropagation(),app.VideoController.tvshowPlay(this.model.attributes,function(){app.VideoController.playlistRender()})},add:function(a){a.preventDefault(),a.stopPropagation(),app.VideoController.tvshowAdd(this.model.attributes,function(){app.VideoController.playlistRender()})},stream:function(a){a.preventDefault();var b=$(a.target).data("player");app.VideoController.stream(b,this.model.attributes)}}),app.TvSeasonListView=Backbone.View.extend({tagName:"ul",className:"video-list tvseason-page-list",initialize:function(){},render:function(){return this.$el.empty(),this.model.models.sort(function(a,b){return""!==a.attributes.episodeid?app.helpers.aphabeticalSort(a.attributes.episode,b.attributes.episode):app.helpers.aphabeticalSort(a.attributes.season,b.attributes.season)}),_.each(this.model.models,function(a){a.attributes.type=""!==a.attributes.episodeid?"episode":"season",this.$el.append(new app.TvSeasonListItemView({model:a}).render().el)},this),this}}),app.TvSeasonListItemView=Backbone.View.extend({tagName:"li",className:"tv-item-content",events:{"click .actions-wrapper":"view","click .tv-play":"play","click .tv-watched":"toggleWatched","click .tv-add":"add"},initialize:function(){this.model.on("change",this.render,this),this.model.on("destroy",this.close,this)},render:function(){var a=this.model.attributes,b="episode"==a.type;return a.watched=app.VideoController.watchedStatus(a),a.subText=b?"Episode "+a.episode:a.episode+" Episodes",a.label=b&&""!==a.title?a.title:a.label,this.$el.html(this.template(a)),this},view:function(){document.location=this.model.attributes.url},play:function(a){a.preventDefault(),a.stopPropagation(),app.VideoController.tvshowPlay(this.model.attributes,function(){app.VideoController.playlistRender()})},add:function(a){a.preventDefault(),a.stopPropagation(),app.VideoController.tvshowAdd(this.model.attributes,function(){app.VideoController.playlistRender()})},toggleWatched:function(a){a.preventDefault(),a.stopPropagation();var b=$(a.target).closest(".card");this.model.attributes.playcount=b.hasClass("watched-yes")?1:0,app.VideoController.toggleWatched("episode",this.model.attributes,function(a){a===!0?b.addClass("watched-yes").removeClass("watched-no"):b.addClass("watched-no").removeClass("watched-yes")})}}),app.XbmcView=Backbone.View.extend({tagName:"div",className:"xbmc-page",initialize:function(){},render:function(){var a={jsonrpc:"An interface to deal directly with the xbmc jsonrpc",storage:"Local Storage Data Dump",changelog:"Updates to Chorus"};switch(this.model){case"jsonrpc":return this.$el=(new app.XbmcJSONrpcView).render().$el,this;case"storage":return this.$el=(new app.XbmcLocalDumpView).render().$el,this;case"changelog":return this.$el=(new app.XbmcChorusChangeLog).render().$el,this}this.$el=$('
');for(var b in a){var c=$("
").append('").append(""+a[b]+"
");this.$el.append(c)}return this}}),app.XbmcLocalDumpView=Backbone.View.extend({tagName:"div",className:"xbmc-page",initialize:function(){},render:function(){var a=[app.playlists.storageKeyLists,app.playlists.storageKeyThumbsUp],b=this;return this.$el.empty(),$(a).each(function(a,c){var d=$("");d.prependTo(""+c+" "),app.storageController.getStorage(c,function(a){console.log(a);var e={};e[c]=a,d.html(JSON.stringify(e,null,4)),b.$el.append(d)})}),this}}),app.XbmcChorusChangeLog=Backbone.View.extend({tagName:"div",className:"xbmc-page changelog",render:function(){var a=this;return this.$el.html("Loading ChangeLog"),$.get("changelog.txt",function(b){a.$el.html(app.nl2br(b)),app.helpers.setTitle('XBMC Chorus ChangeLog')}),this}}),app.XbmcJSONrpcView=Backbone.View.extend({tagName:"div",className:"xbmc-page",events:{"change #method":"changeMethod","click #doit":"executeQuery"},initialize:function(){},render:function(){app.helpers.setTitle('XBMC jsonRPC'),this.$el.empty();var a='JSONrpc tester Use this to test out commands on the api, be careful - you could break something
Method: Loading... Loading
Result ';return this.$el.html(a),this.$select=$("#method",this.$el),this.$res=$("#result",this.$el),this.$params=$("#params",this.$el),this.executeForm(),this},executeForm:function(){var a=this;app.xbmcController.command("JSONRPC.Introspect",[],function(b){app.cached.Introspect=b.result,a.$select.empty();for(var c in b.result.methods)a.$select.append($("",{value:c,text:c}));console.log(b),a.$res.html(JSON.stringify(b,null,4)),a.changeMethod(),a.$select.chosen({search_contains:!0})})},changeMethod:function(){var a=this.$select.val(),b=app.cached.Introspect.methods[a];this.$params.empty(),$("#description",this.$el).html(b.description),$("#method-name",this.$el).html(a);for(var c in b.params){var d=b.params[c],e=$("
"),f={};d.$ref&&(d.type=app.cached.Introspect.types[d.$ref]),d.type="undefined"==typeof d.type?"":d.type;var g=("undefined"==typeof d.description?"":d.description+"\n\r")+(""!==d.type?JSON.stringify(d.type,null,2):"");if("undefined"!=typeof d.type.enums&&d.type.enums.length>0){f=$("");for(var h in d.type.enums)f.append($("",{value:d.type.enums[h],text:d.type.enums[h]}));f.addClass("select")}else f=$(" ",{type:"text",value:"",placeholder:d.default});f.addClass("paramEl"),e.append($(""+d.name+(d.required?"*":"")+(this.isEncoded("t",d,f)?" (JSON Encoded)":"")+" ")).append(f).append($(""+g+" ")).addClass("param "+(d.required?"required":"")),this.$params.append(e)}var i=$("
").addClass("param actions").append('Execute ');this.$params.append(i),this.$res.html(JSON.stringify(b,null,4))},executeQuery:function(){var a=$("#params .paramEl"),b=this.$select.val(),c=app.cached.Introspect.methods[b],d=[],e=this;a.each(function(a,b){var f=$(b).val(),g=c.params[a];console.log(f),e.isEncoded(f,g,$(b))&&(f=$.parseJSON(f),console.log(f)),f.length>0&&d.push(f)}),console.log(d),app.xbmcController.command(b,d,function(a){console.log(a),e.$res.html(JSON.stringify(a,null,4)).removeClass("error"),$.scrollTo(e.$res)},function(a){e.$res.html(JSON.stringify(a,null,4)).addClass("error"),$.scrollTo(e.$res)})},isEncoded:function(a,b,c){return console.log(b),"integer"==b.type.type?!1:!c.hasClass("select")&&""!==a&&("object"==typeof b.type||"array"==b.type)}}),app.addOns.addon.pluginaudiosoundcloud={waitTime:4e3,getAddon:function(){return app.addOns.getAddon("pluginaudiosoundcloud")},getSearchPath:function(){return"plugin://plugin.audio.soundcloud/SearchTracks?url=plugin%3A%2F%2Fmusic%2FSoundCloud%2Ftracks%2Fsearch&oauth_token=&mode=13"},parseFileRecord:function(a){return app.addOns.addon.pluginaudiosoundcloud.isSoundCloud(a)&&(a.file=a.file.replace("plugin://plugin.audio.soundcloud/","plugin://plugin.audio.soundcloud/"+encodeURIComponent(a.label))),a},clickDir:function(a){return app.addOns.addon.pluginaudiosoundcloud.isSoundCloud(a)&&"Search"==a.title&&app.addOns.addon.pluginaudiosoundcloud.doSearchDialog(),a},postProcessFileView:function(a,b){var c=app.addOns.addon.pluginaudiosoundcloud;if(c.isSoundCloud(b)){var d=c.getAddon();if(b.file==d.file){var e=$(".file-actions",a);e.html(' '),$("#soundcloudSearch",e).on("click",function(a){a.stopPropagation(),c.doSearchDialog();var b=c.getSearchPath();app.cached.fileCollection=new app.FileCollection,app.cached.fileCollection.fetch({sourcetype:"music",name:b,success:function(a){app.cached.filesSearchView=new app.FilesView({model:a}).render()}})}),a.find(".file-item").addClass("show-actions")}}return a},searchAddons:function(a,b){var c=$("
"),d=app.addOns.addon.pluginaudiosoundcloud,e=$("",{"class":"addon-box",id:"sc-search"}),f=(d.getAddon(),$(d.searchHeading("SoundCloud search for:
"+b+" ","soundcloud"))),g=d.cache("get",b,!1);return g!==!1?(c.html(g.render().$el),c.prepend(f)):(e.append(d.searchHeading("Search SoundCloud for:
"+b+" ","soundcloud can-click")),c.append(e),$("#sc-search",c).on("click",function(){c.html($(d.searchHeading("Searching SoundCloud for:
"+b+" ","loading"))),d.getSearchResults(b,function(a){c.html(a.render().$el),c.prepend(f),d.cache("set",b,a)})})),c},searchHeading:function(a,b){var c='
';return'
'+c+a+" "},cache:function(a,b,c){switch("undefined"==typeof app.cached.soundCloudSearch&&(app.cached.soundCloudSearch={}),a){case"get":return"undefined"==typeof app.cached.soundCloudSearch[b]?c:app.cached.soundCloudSearch[b];case"set":return app.cached.soundCloudSearch[b]=c,app.cached.soundCloudSearch[b]}},doSearchDialog:function(){app.helpers.prompt("What do you want to search for?",function(a){app.xbmcController.command("Input.SendText",[a],function(){$("#folder-name").html('Search for "'+a+'"');var b="Searching for "+a;$("#files-container").html('
'+b+"
")})})},getSearchResults:function(a,b){var c=app.addOns.addon.pluginaudiosoundcloud.getSearchPath(),d=$(window);app.cached.fileCollection=new app.FileCollection,app.cached.fileCollection.fetch({sourcetype:"music",name:c,success:function(a){app.cached.fileListView=new app.FilesListView({model:a}),b(app.cached.fileListView)}}),app.notifications.wsActive?d.bind("Input.OnInputRequested",function(){app.xbmcController.command("Input.SendText",[a],function(){}),d.unbind("Input.OnInputRequested")}):window.setTimeout(function(){app.xbmcController.command("Input.SendText",[a],function(){})},app.addOns.addon.pluginaudiosoundcloud.waitTime)},isSoundCloud:function(a){return-1!=a.file.indexOf("plugin.audio.soundcloud")}};
\ No newline at end of file
+},this),this}}),app.ArtistListItemView=Backbone.View.extend({tagName:"li",className:"artist",events:{"click .play-artist":"playArtist"},initialize:function(){this.model.on("change",this.render,this),this.model.on("destroy",this.close,this)},render:function(){var a=this.model.attributes;return a.subtext="undefined"!=typeof a.genre?a.genre.join(", "):"",this.$el.html(this.template(a)),this},playArtist:function(a){a.preventDefault();var b=this.model.attributes;"local"==app.audioStreaming.getPlayer()?app.playlists.playlistAddItems("local","replace","artist",b.artistid):app.AudioController.playlistClearAdd("artistid",b.artistid,function(){app.AudioController.playPlaylistPosition(0,function(){app.AudioController.playlistRender()})})}}),app.AristsRandView=Backbone.View.extend({tagName:"ul",className:"random-block",initialize:function(){var a=this;this.model.on("reset",this.render,this),this.model.on("add",function(b){a.$el.append(new app.ArtistLargeItemView({model:b}).render().el)})},render:function(){return this.$el.empty(),_.each(this.model.models,function(a){this.$el.append(new app.ArtistLargeItemView({model:a}).render().el)},this),this}}),app.ArtistLargeItemView=Backbone.View.extend({tagName:"li",className:"artist-item-large card card-large",initialize:function(){this.model.on("change",this.render,this),this.model.on("destroy",this.close,this)},events:{"click .artist-play":"playArtist","click .artist-add":"addArtist","click .artist-thumbsup":"thumbsUp","click .actions-wrapper":"viewArtist","click .artist-menu":"menu"},render:function(){var a=this.model.attributes;return a.title="undefined"!=typeof a.label?a.label:a.artist,a.url="#album/"+a.artistid,a.img=""!==a.fanart?a.fanart:a.thumbnail,this.$el.html(this.template(a)),app.helpers.isDefaultImage(a.img)||this.$el.addClass("has-thumb"),app.playlists.isThumbsUp("artist",a.artistid)&&this.$el.addClass("thumbs-up"),this},menu:function(a){a.stopPropagation(),a.preventDefault();var b=app.helpers.menuTemplates("artist",this.model.attributes);app.helpers.menuDialog(b)},playArtist:function(a){a.stopPropagation(),a.preventDefault();var b=this.model.attributes;"local"==app.audioStreaming.getPlayer()?app.playlists.playlistAddItems("local","replace","artist",b.artistid):app.AudioController.playlistClearAdd("artistid",b.artistid,function(){app.AudioController.playPlaylistPosition(0,function(){app.notification("Now playing "+b.artist),app.AudioController.playlistRender()})})},addArtist:function(a){a.stopPropagation(),a.preventDefault();var b=this.model.attributes;"local"==app.audioStreaming.getPlayer()?app.playlists.playlistAddItems("local","append","artist",b.artistid):app.AudioController.playlistAdd("artistid",b.artistid,function(){app.notification(b.artist+" added to the playlist"),app.AudioController.playlistRender()})},thumbsUp:function(a){a.stopPropagation(),a.preventDefault();var b=this.model.attributes,c=b.artistid,d=app.playlists.isThumbsUp("artist",c)?"remove":"add",e=$(a.target).closest(".card");app.playlists.setThumbsUp(d,"artist",c),e.toggleClass("thumbs-up")},viewArtist:function(a){a.stopPropagation(),window.location="#artist/"+this.model.attributes.artistid}}),app.ContactView=Backbone.View.extend({render:function(){return this.$el.html(this.template()),this}}),app.CustomPlaylistSongListView=Backbone.View.extend({tagName:"ul",className:"playlist-song-list",events:{"click .playlist-append":"appendPlaylist","click .playlist-replace":"replacePlaylist","click .playlist-browser-replace":"browserReplacePlaylist","click .playlist-delete":"deleteCustomListPlaylist","click .thumbsup-append":"appendThumbsup","click .thumbsup-replace":"replaceThumbsup","click .thumbsup-browser-replace":"browserReplacePlaylist"},initialize:function(){},render:function(){var a=app.helpers.arg();"playlist"==a[0]&&(this.list=app.playlists.getCustomPlaylist(a[1])),"thumbsup"==a[0]&&(this.list=app.playlists.getThumbsUp("song")),this.$el.empty();var b=0;_.each(this.model.models,function(a){a.attributes.list=this.list,a.attributes.position=b,this.$el.append(new app.CustomPlaylistSongView({model:a}).render().el),b++},this),this.playlistBinds();var c=app.playlists.getDropdown();return this.$el.prepend(c),this},playlistBinds:function(){var a=this;$sortableCustom=this.$el,$sortableCustom.sortable({placeholder:"playlist-item-placeholder",handle:".song-title",items:"> li",axis:"y",update:function(){var b=[],c="thumbsup"==app.helpers.arg(0)?"thumbsup":app.helpers.arg(1),d=$("ul.playlist-song-list, ul.song-thumbsup-list");d.find("div.playlist-item").each(function(c,d){var e=a.list.items[$(d).data("pos")];b.push(e)}),app.playlists.replaceCustomPlayList(c,b)}}).disableSelection()},appendPlaylist:function(a){a.preventDefault();var b=app.playlists.getCustomPlaylist(this.list.id);this.addCustomListToPlaylist(b.items),app.notification("Playlist updated")},replacePlaylist:function(a){a.preventDefault();var b=this.list.id,c=app.playlists.getCustomPlaylist(b);this.replacePlaylistItems(c.items)},browserReplacePlaylist:function(a){a.preventDefault(),"thumbsup"==app.helpers.arg(0)?app.playlists.playlistAddItems("local","replace","thumbsup","song"):app.playlists.playlistAddItems("local","replace","list",this.list.id)},deleteCustomListPlaylist:function(a){a.preventDefault();var b=this.list;app.helpers.confirm("Delete playlist for good? This cannot be undone",function(){app.playlists.deleteCustomPlaylist(b.id);var a=$("#content");a.find(".playlist-song-list").length>0&&a.html('
Playlist removed
')})},appendThumbsup:function(a){a.preventDefault();var b=app.playlists.getThumbsUp("song");this.addCustomListToPlaylist(b.items),app.notification("Playlist updated")},replaceThumbsup:function(a){a.preventDefault();var b=app.playlists.getThumbsUp("song");this.replacePlaylistItems(b.items)},replacePlaylistItems:function(a){var b=this;app.helpers.confirm("Replace the current xbmc playlist with this list?",function(){app.AudioController.playlistClear(function(){b.addCustomListToPlaylist(a,function(){app.AudioController.playPlaylistPosition(0,function(){app.AudioController.playlistRender(),app.notification("Playlist updated and playing")})})})})},addCustomListToPlaylist:function(a,b){for(var c in a)"number"!=typeof a[c]&&(a[c]=a[c].file);app.AudioController.playlistAddMultiple("mixed",a,function(a){app.AudioController.playlistRender(),app.playlists.changePlaylistView("xbmc"),b&&b(a)})}}),app.CustomPlaylistSongSmallListView=Backbone.View.extend({tagName:"ul",className:"browser-playlist-song-list",render:function(){this.$el.empty();var a=0;return _.each(this.model.models,function(b){var c=b.attributes;c.pos=a,c.items=[],c.list="local",c.id||(c.id=c.songid),b.attributes=c,this.$el.append(new app.PlaylistItemView({model:c,className:"playlist-item browser-player"}).render().$el),a++},this),this.playlistBinds(),this},playlistBinds:function(){var a=this.$el,b=this;a.sortable({placeholder:"playlist-item-placeholder",handle:".playlist-play",items:"> li",axis:"y",update:function(){var a=[];b.$el.find("div.playlist-item").each(function(b,c){a.push($(c).data("id"))}),app.audioStreaming.sortableChangePlaylistPosition(a)}}).disableSelection()}}),app.CustomPlaylistSongView=Backbone.View.extend({tagName:"li",className:"song-row",events:{"dblclick .song-title":"loadSong","click .song-play":"playSong","click .song-add":"addSong","click .song-thumbsup":"thumbsUp","click .song-remove":"removeSong","click .song-menu":"menu"},initialize:function(){},render:function(){return"undefined"==typeof this.model.attributes.position?this:(app.playlists.isThumbsUp("song",this.model.attributes.songid)&&this.$el.addClass("thumbs-up"),this.$el.html(this.template(this.model.attributes)),this)},menu:function(){app.helpers.menuDialog(app.helpers.menuTemplates("song",this.model.attributes))},playSong:function(){var a=this.model.attributes,b=app.helpers.getSongKey(a);"local"==app.audioStreaming.getPlayer()?app.playlists.playlistAddItems("local","append","song",a.songid,function(){app.audioStreaming.playPosition(app.audioStreaming.playList.items.models.length-1)}):(app.playlists.changePlaylistView("xbmc"),app.AudioController.insertAndPlay(b.type,b.id,function(){app.notification(a.label+" added to the playlist"),app.AudioController.playlistRender()}))},addSong:function(){var a=this.model.attributes,b=app.helpers.getSongKey(a);"local"==app.audioStreaming.getPlayer()?app.playlists.playlistAddItems("local","append","song",a.songid,function(){}):app.AudioController.playlistAdd(b.type,b.id,function(){app.notification(a.label+" added to the playlist"),app.AudioController.playlistRender()})},thumbsUp:function(a){var b=this.model.attributes.songid,c=app.playlists.isThumbsUp("song",b)?"remove":"add",d=$(a.target).closest("li");app.playlists.setThumbsUp(c,"song",b),d.toggleClass("thumbs-up")},removeSong:function(a){var b=this.model.attributes.songid,c=this.model.attributes.list.id,d=$(a.target);app.playlists.deleteCustomPlaylistSong(c,b),d.closest("li").slideUp(function(){$(this).remove()})},downloadSong:function(a){var b=this.model.attributes.file;a.preventDefault(),app.AudioController.downloadFile(b,function(a){window.location=a})},addToCustomPlaylist:function(a){a.preventDefault();var b=this.model.attributes,c=app.helpers.getSongKey(b),d="file"==c.type?b:b.songid;app.playlists.saveCustomPlayListsDialog(c.type,[d])}}),app.FilesView=Backbone.View.extend({tagName:"ul",className:"files-list",initialize:function(){this.mixedView=new app.MixedView({model:{key:"filesPage"}})},events:{"click .entity-heading":"sidebarToggleContent"},render:function(){this.$el.empty();var a=$("#content"),b=this,c=$("#files-container",a),d=$('
'),e=$('
');return 0===c.length?(a.html(this.template(this.model)),_.each(this.model.models,function(a){e.append("heading"==a.attributes.type?b.mixedView.getHeading(a.attributes.id,a.attributes.id):new app.FileView({model:a}).render().el)}),app.helpers.setFirstSidebarContent(e)):(b.model.models.sort(function(a,b){return app.helpers.aphabeticalSort(a.attributes.title,b.attributes.title)}),_.each(this.model.models,function(a){""===a.attributes.filetype||"directory"==a.attributes.filetype?this.$el.append(new app.FileView({model:a}).render().el):d.append(new app.FileView({model:a}).render().el)},this),c.html(""!==d.html()?d:'No media found in this folder
')),this},sidebarToggleContent:function(a){$(a.target)}}),app.FilesListView=Backbone.View.extend({tagName:"ul",className:"files-list",initialize:function(){},render:function(){return this.$el.empty(),this.model.models.sort(function(a,b){return app.helpers.aphabeticalSort(a.attributes.title,b.attributes.title)}),_.each(this.model.models,function(a){this.$el.append(new app.FileView({model:a}).render().el)},this),this}}),app.FileView=Backbone.View.extend({tagName:"li",className:"file-row",events:{"dblclick .file-item":"playDir","click .file-play":"playDir","click .file-type-directory":"clickDir","click .file-add":"addDir","click .file-menu":"menu"},initialize:function(){},render:function(){var a=this.model.attributes;return a.title=void 0===a.title?a.name:a.title,this.$el.html(this.template(a)),this.$el=app.addOns.invokeAll("postProcessFileView",this.$el,a),this},menu:function(a){a.preventDefault();var b=this.model.attributes,c=this;app.AudioController.downloadFile(b.file,function(a){"music"==b.sourcetype?(b.label=b.title,app.helpers.menuDialog(app.helpers.menuTemplates("song",b))):(b.downloadUrl=a,app.helpers.menuDialog(c.getVideoDialog(b)))})},getVideoDialog:function(a){return{title:a.label,key:"video",omitwrapper:!0,items:[{url:"#","class":"video-download",title:'Download ',callback:function(){}},{url:"#","class":"video-stream",title:"Stream Video",callback:function(){app.VideoController.stream("html5",a)}}]}},clickDir:function(a){a.stopPropagation();var b=this.model.attributes,c=b.file,d=this,e=$(a.target).parent();app.addOns.invokeAll("clickDir",b),$("#sidebar-first li").removeClass("lowest"),e.addClass("loading"),app.cached.fileCollection=new app.FileCollection,app.cached.fileCollection.fetch({sourcetype:b.sourcetype,name:c,success:function(a){var c=new app.FilesView({model:a}).render().$el;0===d.$el.find("ul.files-list").length&&d.$el.append(c),e.addClass("lowest").removeClass("loading"),$("#folder-name").html(b.label)}})},fileGetTypeId:function(a){var b={key:"file",value:a.file};return("album"==a.type||"artist"==a.type||"song"==a.type||"movie"==a.type||"episode"==a.type)&&(b.key=a.type+"id",b.value=a.id),b},playDir:function(a){a.stopPropagation();var b=this.model.attributes,c=app[b.controller],d=this.fileGetTypeId(b);c.insertAndPlay(d.key,d.value,function(){app.notification(b.label+" added to the playlist"),c.playlistRender()})},addDir:function(a){a.stopPropagation();var b=this.model.attributes,c=this.fileGetTypeId(b),d=app[b.controller];d.playlistAdd(c.key,c.value,function(){app.notification(b.label+" added to the playlist"),d.playlistRender()})},downloadSong:function(a){var b=this.model.attributes.file;a.preventDefault(),app.AudioController.downloadFile(b,function(a){window.location=a})},addToCustomPlaylist:function(a){a.preventDefault();var b=this.model.attributes;app.playlists.saveCustomPlayListsDialog("file",[b])}}),app.HomeView=Backbone.View.extend({events:{"click #logo":"showMeBtnClick"},render:function(){return this.$el.html(this.template(this.model)),this},showMeBtnClick:function(){}}),app.MixedView=Backbone.View.extend({tagName:"div",className:"mixed-wrapper",entities:["artist","album","song","movie","tvshow"],icons:{music:"fa-music",video:"fa-film",song:"fa-music",artist:"fa-microphone",album:"fa-th-large",tvshow:"fa-desktop",movie:"fa-film"},initialize:function(){},events:{},render:function(){var a=this,b=a.model.key,c=$('
'),d="";return $.each(this.entities,function(e,f){var g=b+"-"+f+"s";if(void 0!==a.model.callbacks[f]){d=''+a.getHeading(f,"Looking for "+f+"s","loading")+"
",c.append(d);var h=a.model.callbacks[f];h()}}),c.append('
'),this.$el.html(c),this},setCallbacks:function(a){this.model.callbacks=a},addEntity:function(a){-1==$.inArray(a,this.entities)&&this.entities.push(a)},renderPane:function(a,b,c){var d=this,e=d.model.key,f=$("#"+e+"-"+a+"s");if(f.empty(),0===b.models.length)this.noResult(a);else{f.html(this.getHeading(a,a+"s","has-results"));var g=new app[c]({model:b,className:a+"-"+e+"-list "+a+"-list"});f.append(g.render().$el),this.lazyLoadImages(f)}},noResult:function(a){$("#"+this.model.key+"-bottom").append(this.getHeading(a,"No "+a+" matches","no-result")),$("#"+this.model.key+"-"+a+"s").empty()},getHeading:function(a,b,c){return''+this.getLogo(a)+b+" "},getLogo:function(a){return' '},lazyLoadImages:function(){$("img.content-lazy").each(function(a,b){$d=$(b),""!==$d.data("original")&&$d.attr("src",$d.data("original"))})}}),app.MoviesView=Backbone.View.extend({initialize:function(){},render:function(){return this}}),app.MovieListView=Backbone.View.extend({tagName:"ul",className:"video-list movie-page-list",initialize:function(){var a=this;this.model.on("reset",this.render,this),this.model.on("add",function(b){a.$el.append(new app.MovieListItemView({model:b}).render().el)})},events:{"click .next-page":"nextPage"},render:function(){return this.$el.empty(),_.each(this.model.models,function(a){this.$el.append(new app.MovieListItemView({model:a}).render().el)},this),void 0!==this.model.showNext&&this.model.showNext===!0&&(this.$el=app.pager.viewHelpers(this.$el,"movie")),this},nextPage:function(){var a=$(".next-page").last();app.pager.nextPage(a,"movie")},backFromMovie:function(a,b){var c=$(window);if(a===!0&&"undefined"!=typeof app.vars.backHash){var d=app.vars.backHash.split("/");"#movie"==d[0]&&(c.scrollTo($(".movie-row-"+d[1]),0,{offset:-200}),b=!0)}return b}}),app.MovieListItemView=Backbone.View.extend({tagName:"li",className:"movie-item-content",events:{"click .movie-play":"playMovie","click .movie-add":"addMovie","click .movie-thumbsup":"thumbsUp","click .movie-menu":"menu","click .actions-wrapper":"view","click .movie-watched":"toggleWatched"},initialize:function(){this.model.on("change",this.render,this),this.model.on("destroy",this.close,this)},render:function(){var a=this.model.attributes;return a.label?(a.type="movie",a.watched=app.VideoController.watchedStatus(a),a.thumbsup=app.playlists.isThumbsUp("movie",a.movieid),this.$el.html(this.template(a)),this):this},view:function(){document.location="#movie/"+this.model.attributes.movieid},menu:function(a){a.stopPropagation(),a.preventDefault();var b=app.helpers.menuTemplates("movie",this.model.attributes);app.helpers.menuDialog(b)},thumbsUp:function(a){a.stopPropagation(),a.preventDefault();var b=this.model.attributes,c=app.playlists.isThumbsUp("movie",b.movieid)?"remove":"add",d=$(a.target).closest(".movie-actions");app.playlists.setThumbsUp(c,"movie",b.movieid),d.toggleClass("thumbs-up")},playMovie:function(a){a.preventDefault(),a.stopPropagation(),app.VideoController.playVideoId(this.model.attributes.movieid,"movieid",function(){app.VideoController.playlistRender()})},addMovie:function(a){a.preventDefault(),a.stopPropagation(),app.VideoController.addToPlaylist(this.model.attributes.movieid,"movieid","add",function(){app.VideoController.playlistRender()})},toggleWatched:function(a){a.preventDefault(),a.stopPropagation();var b=$(a.target).closest(".card");this.model.attributes.playcount=b.hasClass("watched-yes")?1:0,app.VideoController.toggleWatched("movie",this.model.attributes,function(a){a===!0?b.addClass("watched-yes").removeClass("watched-no"):b.addClass("watched-no").removeClass("watched-yes")})}}),app.MovieView=Backbone.View.extend({allMovieCache:[],initialize:function(){var a=this,b=new app.MovieAllCollection;b.fetch({success:function(b){a.allMovieCache=b}})},events:{"click .library-back":"libraryBack","click .library-next":"libraryNext","click .movie-play":"playMovie","click .movie-add":"addMovie","click .movie-thumbsup":"thumbsUp","click .movie-stream":"stream","click .movie-menu":"menu"},render:function(){var a=this.model.attributes;return a.thumbsup=app.playlists.isThumbsUp("movie",a.movieid),this.$el.html(this.template(a)),_.defer(function(){var b=$("#fanart-background",this.$el),c=app.parseImage(a.fanart,"fanart");b.backstretch(c)}),this},libraryBack:function(a){a.preventDefault(),window.history.back()},libraryNext:function(a){a.preventDefault();var b=app.pager.libraryNav("movie",this.model.attributes.id,this.allMovieCache.models);b.next>0&&(document.location="#movie/"+b.next)},menu:function(a){a.stopPropagation(),a.preventDefault();var b=app.helpers.menuTemplates("movie",this.model.attributes);app.helpers.menuDialog(b)},thumbsUp:function(a){a.stopPropagation(),a.preventDefault();var b=this.model.attributes,c=app.playlists.isThumbsUp("movie",b.movieid)?"remove":"add",d=$(a.target).closest(".movie-actions");app.playlists.setThumbsUp(c,"movie",b.movieid),d.toggleClass("thumbs-up")},playMovie:function(a){a.preventDefault(),app.VideoController.playVideoId(this.model.attributes.movieid,"movieid",function(){app.VideoController.playlistRender()})},addMovie:function(a){a.preventDefault(),app.VideoController.addToPlaylist(this.model.attributes.movieid,"movieid","add",function(){app.VideoController.playlistRender()})},stream:function(a){a.preventDefault();var b=$(a.target).data("player");app.VideoController.stream(b,this.model.attributes)}}),app.playerStateView=Backbone.View.extend({initialize:function(){this.$body=$("body"),this.$nowPlaying=$("#now-playing")},render:function(){var a=app.playlists.getNowPlaying(),b=$(window),c=app.helpers.varGet("lastPlaying","");this.$songs=$(".song"),a.playingItemChanged=c!=a.item.file,a.status="notPlaying"==a.status?"stopped":app.helpers.exists(a.player.speed)&&0===a.player.speed?"paused":a.status,app.state=a.status,app.cached.nowPlaying=a,app.helpers.varSet("lastPlaying",void 0!==a.item?a.item.file:null),this.bodyClasses(),this.$songs.removeClass("playing-row"),"playing"==a.status||"paused"==a.status?(this.nowPlayingMinor(),a.playingItemChanged&&(this.nowPlayingMajor(),b.trigger("playingItemChange",a))):this.notPlaying(),this.playerCron(),b.trigger("playerUpdate",a)},bodyClasses:function(){var a=app.playlists.getNowPlaying();void 0===a.player&&(a.player={shuffled:!1,repeat:"off"}),this.$body.removeClass("playing").removeClass("paused").removeClass("notPlaying").removeClass("random-on").removeClass("random-off").removeClass("repeat-off").removeClass("repeat-all").removeClass("repeat-one").addClass(a.status).addClass("random-"+(a.player.shuffled===!0?"on":"off")).addClass("repeat-"+a.player.repeat),this.$body.removeClass(function(a,b){return(b.match(/\bactivePlayer\S+/g)||[]).join(" ")}).addClass("activePlayer-"+a.activePlayer)},nowPlayingMinor:function(){this.tagPlayingRow(),this.setTitle();{var a=app.playlists.getNowPlaying(),b=$("#time"),c=0,d=0,e=app.helpers.parseArtistsArray(a.item);$(".playlist .playing-row")}$(".playing-song-meta").html(e),app.shellView.$progressSlider.slider("value",a.player.percentage),1==a.activePlayer?(d=app.helpers.formatTime(a.player.totaltime),c=app.helpers.formatTime(a.player.time)):0===a.activePlayer&&(d=app.helpers.formatTime(app.helpers.secToTime(parseInt(a.item.duration))),c=app.helpers.formatTime(a.player.time)),b.find(".time-cur").html(c),b.find(".time-total").html(d),"episode"==a.item.type&&app.VideoController.invalidateCache("episode")},nowPlayingMajor:function(){var a=app.playlists.getNowPlaying();if(this.$nowPlaying.find("#playing-thumb").css("background-image","url('"+app.parseImage(a.item.thumbnail)+"')"),1==app.cached.nowPlaying.activePlayer&&this.$nowPlaying.find("#playing-thumb").attr("#remote"),$(".playing-song-title").html(a.item.label).attr("title",a.item.album).attr("href","#album/"+a.item.albumid),"#"==location.hash||""===location.hash&&"xbmc"==app.audioStreaming.getPlayer()){var b=$(".backstretch img"),c=b.attr("src"),d=app.parseImage(a.item.fanart,"fanart");b.length>0&&c!=d&&$.backstretch(d)}$(".playing-fanart").css("background-image",'url("'+app.parseImage(a.item.fanart,"fanart")+'")');var e;e=0===app.playlists.getNowPlaying("activePlayer")?app.AudioController:app.VideoController,e.playlistRender(function(){$sb=$("#sidebar-second"),$(".playlist-pos-"+a.player.position,$sb).scrollTo($(".playing-row"),0,{offset:{top:-11}})})},tagPlayingRow:function(){var a=app.cached.nowPlaying;this.$songs.each(function(b,c){var d=$(c);void 0===a.item||d.attr("data-songid")!=a.item.id||d.hasClass("playlist-item")?d.hasClass("playlist-item")&&(d.data("id")!=a.player.position||d.parent().hasClass("browser-player")||d.data("playlistId")!=a.activePlayer||d.addClass("playing-row")):d.addClass("playing-row")})},setTitle:function(){var a=app.cached.nowPlaying,b=a.item.label;"xbmc"==app.audioStreaming.getPlayer()&&(document.title=("playing"==a.status?"▶ ":"")+(void 0!==b?b+" | ":"")+"Chorus.")},notPlaying:function(){var a=app.cached.nowPlaying;document.title="Chorus.",$(".playing-song-title").html("Nothing Playing"),$(".playing-song-meta").html(""),$("ul.playlist div.playlist-item.playing-row").removeClass("playing-row"),app.shellView.$progressSlider.slider("value",0),this.$nowPlaying.find("#playing-thumb").attr("src",app.parseImage("")).attr("title","").parent().attr("href","#albums");var b=$("#time");b.find(".time-cur").html("0"),b.find(".time-total").html("0:00"),app.shellView.$volumeSlider.slider("value",a.volume.volume)},playerCron:function(){var a=app.cached.nowPlaying,b=app.helpers.varGet("lastState",""),c="undefined"==typeof b||"undefined"==typeof b.volume,d={},e="",f="";$("a.ui-slider-handle",app.shellView.$volumeSlider).hasClass(".ui-slider-active")||(app.shellView.$volumeSlider.slider("value",a.volume.volume),0===a.volume.volume?$("body").addClass("muted"):$("body").removeClass("muted")),(c||"undefined"==typeof b.player||b.player.repeat!=a.player.repeat)&&(d=$(".player-repeat"),e=d.attr("title"),f="off"==a.player.repeat?"Repeat is off":"Currently repeating "+a.player.repeat,e!=f&&d.attr("title",f)),(c||b.player.shuffled!=a.player.shuffled)&&(d=$(".player-random"),e=d.attr("title"),f="Random is "+(a.player.shuffled===!0?"On":"Off"),e!=f&&d.attr("title",f)),app.helpers.varSet("lastState",a)}}),app.PlaylistView=Backbone.View.extend({tagName:"div",className:"playlist-wrapper",events:{"click .player-audio":"viewAudio","click .player-video":"viewVideo"},initialize:function(){},render:function(){this.$el.empty();var a=0,b=$(''),c=$(''),d="undefined"!=typeof this.model.playlistId?this.model.playlistId:0;return _.each(this.model.models,function(b){b.pos=a,a++,b.playlistId=d,c.append(new app.PlaylistItemView({model:b}).render().el)},this),this.$el.append(c),app.playlists.getThumbsUp(),b.append('Audio '),b.append('Video '),this.$el.prepend(b),this.$el.addClass("plid-"+d),$sortable=$("ul.playlist",this.$el),$sortable.sortable({placeholder:"playlist-item-placeholder",handle:".playlist-play",items:"> li",axis:"y",update:function(a,b){app.playlists.sortableChangePlaylistPosition(a,b)}}).disableSelection(),this},viewAudio:function(){app.AudioController.playlistRender()},viewVideo:function(){app.VideoController.playlistRender()}}),app.PlaylistItemView=Backbone.View.extend({tagName:"li",className:"playlist-item",events:{"dblclick .playlist-play":"playPosition","click .removebtn":"removePosition","click .playbtn":"playPosition","click .repeating":"cycleRepeat","click .playlist-song-thumbsup":"thumbsUp","click .playlist-song-menu":"menu"},initialize:function(){},render:function(){var a=this.model,b=app.playlists.getNowPlaying();return a.id="undefined"!=typeof a.id?a.id:"file",a.albumid="undefined"!=typeof a.albumid?a.albumid:"file",a.subLink=this.buildSubLink(a),a.url="file"!=a.albumid?"#album/"+a.albumid:app.helpers.buildUrl(a.type,a.id,a),this.$el.html(this.template(a)),"playing"!=b.status&&"paused"!=b.status||b.player.playlistid!=a.playlistId||b.player.position!=a.pos||$(".playlist-item",this.$el).addClass("playing-row"),"file"==this.model.id&&$(".song",this.$el).data("file",a.file),$(".song",this.$el).data("playlistId",a.playlistId),"file"!=this.model.id&&app.playlists.isThumbsUp("song",this.model.id)&&this.$el.addClass("thumbs-up"),this},menu:function(){app.helpers.menuDialog(1==this.model.playlistId?app.helpers.menuTemplates("movie",this.model):app.helpers.menuTemplates("song",this.model))},playPosition:function(){if("local"==this.model.list)app.audioStreaming.playPosition(this.model.pos);else{var a=1==this.model.playlistId?app.VideoController:app.AudioController;a.playPlaylistPosition(this.model.pos,function(){a.playlistRender()})}},removePosition:function(){if("local"==this.model.list)app.audioStreaming.deleteBrowserPlaylistSong(this.model.pos),app.audioStreaming.renderPlaylistItems();else{var a=1==this.model.playlistId?app.VideoController:app.AudioController;a.removePlaylistPosition(this.model.pos,function(){a.playlistRender()})}},cycleRepeat:function(){$("#footer").find(".player-repeat").trigger("click")},thumbsUp:function(a){a.stopPropagation();var b=this.model.id,c=1==this.model.playlistId?"video":"song",d=app.playlists.isThumbsUp(c,b)?"remove":"add",e=$(a.target).closest("li");app.playlists.setThumbsUp(d,c,b),e.toggleClass("thumbs-up")},buildSubLink:function(a){var b,c,d;if("song"==a.type){if(a.albumArtistString="undefined"!=typeof a.albumartist&&"undefined"!=typeof a.albumartist[0]?a.albumartist[0]:"",a.artistString="undefined"!=typeof a.artist&&"undefined"!=typeof a.artist[0]?a.artist[0]:"",d="Track: "+this.model.track+" Duration: "+app.helpers.formatTime(app.helpers.secToTime(this.model.duration)),b="#search/"+(""!==a.albumArtistString?a.albumArtistString:a.artistString),c=""!==a.artistString?a.artistString:a.albumArtistString,""===a.artistString&&""===a.albumArtistString)return""}else if("movie"==a.type)c=a.year,b="#movies/year/"+a.year,d="More movies from "+c;else{if("episode"!=a.type)return"";c="S"+a.season+" E"+a.episode+" - "+a.showtitle,b="#tvshow/"+a.tvshowid+"/"+a.season,d="More episodes from season"+a.season}return''+c+" "}}),app.PlaylistCustomListsView=Backbone.View.extend({tagName:"ul",className:"custom-lists",events:{"dblclick li":"replacePlaylist","click .name":"toggleDetail"},initialize:function(){},render:function(){this.$el.empty();var a=0;return _.each(this.model.models,function(b){b.pos=a,a++;var c=new app.PlaylistCustomListItemView({model:b}).render();this.$el.append(c.el)},this),this.$el.prepend('Thumbs Up '),this},toggleDetail:function(a){var b=$(a.target),c=b.closest("li");c.hasClass("open")?c.removeClass("open"):(c.parent().find("li").removeClass("open"),c.addClass("open"))}}),app.PlaylistCustomListItemView=Backbone.View.extend({tagName:"li",className:"list-item",events:{"dblclick .name":"replacePlaylist"},initialize:function(){},render:function(){return this.$el.html(this.template(this.model.attributes)),this}}),app.RemoteView=Backbone.View.extend({tagName:"div",className:"xbmc-remote-wrapper",initialize:function(){},events:{"click .input-button":"inputButton","click .player-button":"playerButton","click .power-button":"powerButton"},render:function(){var a={playing:!1,item:{}};this.$el.html(this.template(a));var b=app.playlists.getNowPlaying();return $(".playing-fanart",this.$el).css("background-image",'url("'+app.parseImage(b.item.fanart,"fanart")+'")'),$(".fa",this.$el).disableSelection(),this},inputButton:function(a){var b=$(a.target),c=b.data("type");app.xbmcController.input(c)},playerButton:function(a){var b=$(a.target),c=b.data("type"),d=app.playlists.getNowPlaying();switch(c){case"Stop":app.xbmcController.command("Player.Stop",[d.activePlayer])}},powerButton:function(){app.helpers.menuDialog(this.powerDialogItems())},powerDialogItems:function(){return{title:"Power Down",key:"powerDown",omitwrapper:!0,items:[{url:"#","class":"xbmc-quit",title:"Quit XBMC",callback:function(){app.xbmcController.command("Application.Quit")}},{url:"#","class":"system-hibernate",title:"Hibernate",callback:function(){app.xbmcController.command("System.Hibernate")}},{url:"#","class":"system-reboot",title:"Reboot",callback:function(){app.xbmcController.command("System.Reboot")}},{url:"#","class":"system-shutdown",title:"Shutdown",callback:function(){app.xbmcController.command("System.Shutdown")}},{url:"#","class":"system-nothing",title:"None of the above",callback:function(){}}]}}}),app.searchView=Backbone.View.extend({initialize:function(){var a={key:"search",callbacks:{}};this.mixedView=new app.MixedView({model:a})},songsLoaded:!1,render:function(){var a=this.model.key,b=this;if(a.length>1){app.router.navigate("#search/"+a),app.shellView.selectMenuItem("search","no-sidebar");var c={song:function(){b.searchSongs(a)},artist:function(){b.searchArtists(a)},album:function(){b.searchAlbums(a)},tvshow:function(){b.searchTv(a)},movie:function(){b.searchMovies(a)},addon:function(){b.searchAddOns(a)}};b.mixedView.addEntity("addon"),b.mixedView.setCallbacks(c);var d=$("#content"),e=this.mixedView.render().$el;d.html(e),app.helpers.setTitle('Search '),b.searchAddOns(a)}},searchAddOns:function(a){app.addOns.ready(function(){var b=$("#search-addons");b.html(app.addOns.invokeAll("searchAddons",b,a))})},searchArtists:function(a){this.searchSectionPreLoadRender(a,"artist","ArtistCollection","AristsRandView")},searchAlbums:function(a){this.searchSectionPreLoadRender(a,"album","AlbumsCollection","SmallAlbumsList")
+},searchMovies:function(a){var b=this,c=new app.MovieAllCollection;c.fetch({success:function(){b.searchSectionRender(a,"movie","MovieAllCollection","CustomMovieCollection","MovieListView")}})},searchTv:function(a){var b=this;b.searchSectionPreLoadRender(a,"tvshow","TvshowAllCollection","TvshowListView")},searchSongs:function(a){var b=this;b.songsLoaded===!0?b.searchSectionRender(a,"song","SongCollection","CustomSongCollection","SongListView"):app.store.libraryCall(function(){b.searchSectionRender(a,"song","SongCollection","CustomSongCollection","SongListView"),b.songsLoaded=!0},"songsReady")},stringMatchFilter:function(a,b){var c=a.attributes.label;return c.toLowerCase().indexOf(b.toLowerCase())>-1},searchSectionRender:function(a,b,c,d,e){var f=$("#search-"+b+"s"),g=this,h=[],i=b+"id";app.cached["search"+c]=new app[c],app.cached["search"+c].fetch({success:function(c){f.empty();var j=c.models.filter(function(b){return g.stringMatchFilter(b,a)});if(_.each(j,function(a){h.push(a.attributes[i])}),h.length>0){var k=new app[d];k.fetch({items:h,success:function(a){_.defer(function(){g.mixedView.renderPane(b,a,e)})}})}else _.defer(function(){g.mixedView.noResult(b)})}})},searchSectionPreLoadRender:function(a,b,c,d){var e=this,f=[];app.cached["search"+c]=new app[c],app.cached["search"+c].fetch({success:function(c){f=c.models.filter(function(b){return e.stringMatchFilter(b,a)}),c.models=f,_.defer(function(){e.mixedView.renderPane(b,c,d)})}})}}),app.ShellView=Backbone.View.extend({initialize:function(){var a=$(window),b=$("body"),c=this;app.cached.keyupTimeout=0,c.pageChange(location.hash,"#init"),a.bind("hashchange",function(a){var b=location.hash,d=app.vars.lastHash,e="undefined"==typeof d?"#":d;b!=e&&c.pageChange(b,e),app.vars.backHash=d,app.vars.lastHash=b,$(window).trigger("pageChange",[a,b,e])}),a.bind("scroll",function(){a.scrollTop()>50?b.addClass("fixed-header"):b.removeClass("fixed-header")})},render:function(){this.$el.html(this.template());return app.AudioController.playlistRender(),this.$progressSlider=$("#progress-bar",this.el),this.$progressSlider.slider({range:"min",value:0,min:0,max:100,stop:function(a,b){app.AudioController.seek(b.value)}}),this.$volumeSlider=$("#volume",this.el),this.$volumeSlider.slider({range:"min",value:0,min:0,max:100,stop:function(a,b){app.AudioController.setVolume(b.value)}}),$("img.content-lazy").lazyload({event:"contentLazy"}),app.AudioController.getNowPlayingSong(function(){setInterval(app.AudioController.updatePlayerState,5e3),app.notifications.init()},!0),this.$el.append((new app.RemoteView).render().$el),this},events:{"keyup #search":"onkeyupSearch","click #search-this":"search","keypress #search":"onkeypressSearch","click #logo":"home","click .player-prev":"playerPrev","click .player-next":"playerNext","click .player-play":"playerPlay","click .player-mute":"playerMute","click .player-repeat":"playerRepeat","click .player-random":"playerRandom","click .song-image":"remoteControl","click .playlist-primary-tab":"primaryTabClick","click .save-playlist":"savePlayList","click .clear-playlist":"clearPlaylist","click .refresh-playlist":"refreshPlaylist","click .new-custom-playlist":"newCustomPlaylist","click .about-dialog":"about","click .browser-view-xbmc":"viewXbmc","click .browser-view-local":"viewLocal","click .browser-player-play":"localTogglePlay","click .browser-player-prev":"localPrev","click .browser-player-next":"localNext","click .browser-player-repeat":"localRepeat","click .browser-player-random":"localRandom","click .browser-player-mute":"localMute","click .toggle-ss":"toggleSidebarSecondVisibility","click .toggle-vol":"toggleVolumeVisibility","click .toggle-search":"toggleSearchVisibility"},pageChange:function(){var a=app.helpers.arg(0);$("body").removeClass(function(a,b){return(b.match(/\bsection\S+/g)||[]).join(" ")}).addClass("section-"+a)},primaryTabClick:function(a){$thisTab=$(a.target),$thisTab.hasClass("playlist-primary-tab")||($thisTab=$thisTab.closest("li.playlist-primary-tab"));var b=$thisTab.data("pane");app.playlists.changePlaylistView(b),("xbmc"==b||"local"==b)&&app.settings.set("lastPlayer",b)},search:function(){var a=$("#search");app.cached.searchView=new app.searchView({model:{key:a.val()}}),app.cached.searchView.render()},onkeyupSearch:function(){var a=200;$("#search").keyup(function(){clearTimeout(app.cached.keyupTimeout),app.cached.keyupTimeout=setTimeout(function(){document.location="#search/"+encodeURIComponent($("#search").val())},a)})},onkeypressSearch:function(a){13===a.keyCode&&a.preventDefault()},selectMenuItem:function(a,b){var c=$("body"),d="undefined"!=typeof b&&"sidebar"==b?"open":"close";if(app.helpers.toggleSidebar(d),"home"==a)c.addClass("home");else switch($(".backstretch").length>0&&$(".backstretch").remove(),c.removeClass("home"),a){case"playlist":$("ul.custom-lists .custom-playlist-item").each(function(a,b){var c=$(b),d=c.parent();c.data("id")==app.helpers.arg(1)?d.addClass("open"):d.removeClass("open")});break;case"thumbsup":$(".custom-lists li").removeClass("open"),$(".thumbsup-link").addClass("open")}if(a){var e=$(".mainnav",this.el),f=e.find("li.nav-"+a);e.find("li").removeClass("active"),f.addClass("active")}},playerPrev:function(){app.AudioController.sendPlayerCommand("Player.GoTo","previous")},playerNext:function(){app.AudioController.sendPlayerCommand("Player.GoTo","next")},playerPlay:function(){app.AudioController.sendPlayerCommand("Player.PlayPause","toggle")},playerRepeat:function(){app.AudioController.sendPlayerCommand("Player.SetRepeat","cycle")},playerRandom:function(){app.AudioController.sendPlayerCommand("Player.SetShuffle","toggle")},remoteControl:function(a){"remote"==app.helpers.arg(0)?(a.preventDefault(),window.history.back()):document.location="#remote"},playerMute:function(){var a,b=this.$volumeSlider.slider("value"),c=$("body");b>0?(this.lastVol=b,app.AudioController.setVolume(0),this.$volumeSlider.slider("value",0),c.addClass("muted")):(a=app.helpers.exists(this.lastVol)&&this.lastVol>0?this.lastVol:50,app.AudioController.setVolume(a),this.$volumeSlider.slider("value",a),c.removeClass("muted"))},updateState:function(a){app.cached.playerState=new app.playerStateView({model:a}),app.cached.playerState.render()},savePlayList:function(a){a.preventDefault(),app.playlists.saveCustomPlayListsDialog(),app.playlists.changePlaylistView("lists")},refreshPlaylist:function(a){a.preventDefault(),this.getController().playlistRender()},newCustomPlaylist:function(a){a.preventDefault(),app.playlists.saveCustomPlayListsDialog("song",[])},clearPlaylist:function(a){a.preventDefault();var b=this.getController();b.playlistClear(function(){b.playlistRender()})},getController:function(){var a={};return a="local"==app.audioStreaming.getPlayer()?app.audioStreaming:$(".plid-1").length>0?app.VideoController:app.AudioController},about:function(a){a.preventDefault(),app.helpers.aboutDialog()},scanLibrary:function(){},viewXbmc:function(a){a.preventDefault(),app.audioStreaming.setPlayer("xbmc")},viewLocal:function(a){a.preventDefault(),app.audioStreaming.setPlayer("local")},localTogglePlay:function(a){a.preventDefault(),app.audioStreaming.togglePlay()},localPrev:function(a){a.preventDefault(),app.audioStreaming.prev()},localNext:function(a){a.preventDefault(),app.audioStreaming.next()},localRepeat:function(a){a.preventDefault(),app.audioStreaming.repeat()},localRandom:function(a){a.preventDefault(),app.audioStreaming.random()},localMute:function(a){a.preventDefault(),app.audioStreaming.mute()},toggleSidebarSecondVisibility:function(){$("body").toggleClass("ss-open")},toggleVolumeVisibility:function(){$("body").toggleClass("vol-open")},toggleSearchVisibility:function(){$("body").toggleClass("search-open")}}),app.SongListView=Backbone.View.extend({tagName:"ul",className:"song-list",initialize:function(){},render:function(){return this.$el.empty(),_.each(this.model.models,function(a){this.$el.append(new app.SongView({model:a}).render().$el)},this),this}}),app.SongView=Backbone.View.extend({tagName:"li",className:"song-row",events:{"dblclick .song-title":"playSong","click .song-play":"playSong","click .song-add":"addSong","click .song-thumbsup":"thumbsUp","click .song-menu":"menu"},initialize:function(){this.model.on("change",this.render,this),this.model.on("destroy",this.close,this)},render:function(){return app.playlists.isThumbsUp(this.model.attributes.songid)&&this.$el.addClass("thumbs-up"),this.$el.html(this.template(this.model.attributes)),this},menu:function(){app.helpers.menuDialog(app.helpers.menuTemplates("song",this.model.attributes))},playSong:function(){var a=this.model.attributes;"local"==app.audioStreaming.getPlayer()?app.playlists.playlistAddItems("local","append","song",a.songid,function(){app.audioStreaming.playPosition(app.audioStreaming.playList.items.models.length-1)}):(app.playlists.changePlaylistView("xbmc"),app.AudioController.insertAndPlay("songid",a.songid,function(){app.notification(a.label+" added to the playlist"),app.AudioController.playlistRender()}))},addSong:function(){var a=this.model.attributes;"local"==app.audioStreaming.getPlayer()?app.playlists.playlistAddItems("local","append","song",a.songid):app.AudioController.playlistAdd("songid",a.songid,function(){app.notification(a.label+" added to the playlist"),app.AudioController.playlistRender()})},thumbsUp:function(a){var b=this.model.attributes.songid,c=app.playlists.isThumbsUp("song",b)?"remove":"add",d=$(a.target).closest("li");app.playlists.setThumbsUp(c,"song",b),d.toggleClass("thumbs-up")}}),app.ThumbsupView=Backbone.View.extend({initialize:function(){var a={key:"thumbsup",callbacks:{}};this.mixedView=new app.MixedView({model:a})},songsLoaded:!1,render:function(){var a=this,b=app.playlists.isAnyThumbsUp();if(app.shellView.selectMenuItem("thumbsup","no-sidebar"),app.helpers.setTitle(' Thumbs Up'),b){var c={song:function(){a.getItems("song","CustomPlaylistSongListView")},artist:function(){a.getItems("artist","AristsRandView")},album:function(){a.getItems("album","SmallAlbumsList")},tvshow:function(){a.getItems("tvshow","TvshowListView")},movie:function(){a.getItems("movie","MovieListView")}};a.mixedView.setCallbacks(c),this.$el.html(this.mixedView.render().$el)}else{var d='
Click a thumb to start ';this.$el.html(d)}return this},getItems:function(a,b){var c=this,d=new app.ThumbsUpCollection;d.fetch({name:a,success:function(d){_.defer(function(){0===d.models.length?c.mixedView.noResult(a):c.mixedView.renderPane(a,d,b)})}})}}),app.TvshowsView=Backbone.View.extend({initialize:function(){},render:function(){return this}}),app.TvshowListView=Backbone.View.extend({tagName:"ul",className:"video-list tvshow-page-list",initialize:function(){var a=this;this.model.on("reset",this.render,this),this.model.on("add",function(b){a.$el.append(new app.TvshowListItemView({model:b}).render().el)})},events:{"click .next-page":"nextPage"},render:function(){return this.$el.empty(),_.each(this.model.models,function(a){this.$el.append(new app.TvshowListItemView({model:a}).render().el)},this),this.$el.find("img").lazyload({threshold:200}),this},nextPage:function(a){app.pager.nextPage($(a.target),"tvshow")},backFromTvshow:function(a,b){var c=$(window);if(a===!0&&"undefined"!=typeof app.vars.backHash){var d=app.vars.backHash.split("/");"#tvshow"==d[0]&&(c.scrollTo($(".tvshow-row-"+d[1]),0,{offset:-200}),b=!0)}return b}}),app.TvshowListItemView=Backbone.View.extend({tagName:"li",className:"tvshow-item-content",events:{"click .tvshow-play":"playTvshow","click .tvshow-add":"add","click .tvshow-thumbsup":"thumbsUp","click .actions-wrapper":"view"},initialize:function(){this.model.on("change",this.render,this),this.model.on("destroy",this.close,this)},render:function(){this.model.attributes.type="tvshow";var a=this.model.attributes;return a.label?(a.watched=app.VideoController.watchedStatus(a),a.thumbsup=app.playlists.isThumbsUp("tvshow",a.tvshowid),this.$el.html(this.template(a)),this):this},view:function(){document.location="#tvshow/"+this.model.attributes.tvshowid},add:function(a){a.preventDefault(),a.stopPropagation();var b=this.model.attributes;app.VideoController.tvshowAdd(b,function(){app.VideoController.playlistRender()})},play:function(a){a.preventDefault(),a.stopPropagation();var b=this.model.attributes;app.VideoController.tvshowPlay(b,function(){app.VideoController.playlistRender()})},thumbsUp:function(a){a.preventDefault(),a.stopPropagation();var b=this.model.attributes,c=app.playlists.isThumbsUp("tvshow",b.tvshowid)?"remove":"add",d=$(a.target).closest(".tvshow-actions");app.playlists.setThumbsUp(c,"tvshow",b.tvshowid),d.toggleClass("thumbs-up")}}),app.TvshowView=Backbone.View.extend({allTvshowCache:[],initialize:function(){var a=this,b=new app.TvshowAllCollection;b.fetch({success:function(b){a.allTvshowCache=b}})},events:{"click .library-back":"libraryBack","click .library-next":"libraryNext","click .tvshow-play":"play","click .tvshow-add":"add","click .tvshow-thumbsup":"thumbsUp","click .tv-stream":"stream","click .tvshow-menu":"menu"},render:function(){var a=this.model.attributes,b=this;return a.type=void 0!==a.type?a.type:"tvshow",a.thumbsup=app.playlists.isThumbsUp("tvshow",a.tvshowid),this.$el.html(this.template(a)),_.defer(function(){var b=$("#fanart-background",this.$el),c=app.parseImage(a.fanart,"fanart");b.backstretch(c)}),"tvshow"==a.type&&a.seasons.length>0&&(app.cached.tvSeasonListView=new app.TvSeasonListView({model:a.seasons}),$("#seasons",b.$el).html(app.cached.tvSeasonListView.render().$el)),("season"==a.type||"episode"==a.type)&&(app.cached.tvepisodeCollection=new app.TvepisodeCollection,app.cached.tvepisodeCollection.fetch({tvshowid:a.tvshowid,season:a.season,success:function(c){c.length>0&&(app.cached.tvSeasonListView=new app.TvSeasonListView({model:c}),$("#seasons",b.$el).html(app.cached.tvSeasonListView.render().$el).addClass("episodes"),"episode"==a.type&&$(".row-episode-"+a.episodeid,b.$el).addClass("active"))}})),this},libraryBack:function(a){a.preventDefault(),window.history.back()},libraryNext:function(a){a.preventDefault();var b=app.pager.libraryNav("tvshow",this.model.attributes.tvshowid,this.allTvshowCache.models);b.next>0&&(document.location="#tvshow/"+b.next)},menu:function(a){a.stopPropagation(),a.preventDefault();var b=app.helpers.menuTemplates("tvshow",this.model.attributes);app.helpers.menuDialog(b)},thumbsUp:function(a){a.stopPropagation(),a.preventDefault();var b=this.model.attributes,c=app.playlists.isThumbsUp("tvshow",b.tvshowid)?"remove":"add",d=$(a.target).closest(".tvshow-actions");app.playlists.setThumbsUp(c,"tvshow",b.tvshowid),d.toggleClass("thumbs-up")},play:function(a){a.preventDefault(),a.stopPropagation(),app.VideoController.tvshowPlay(this.model.attributes,function(){app.VideoController.playlistRender()})},add:function(a){a.preventDefault(),a.stopPropagation(),app.VideoController.tvshowAdd(this.model.attributes,function(){app.VideoController.playlistRender()})},stream:function(a){a.preventDefault();var b=$(a.target).data("player");app.VideoController.stream(b,this.model.attributes)}}),app.TvSeasonListView=Backbone.View.extend({tagName:"ul",className:"video-list tvseason-page-list",initialize:function(){},render:function(){return this.$el.empty(),this.model.models.sort(function(a,b){return""!==a.attributes.episodeid?app.helpers.aphabeticalSort(a.attributes.episode,b.attributes.episode):app.helpers.aphabeticalSort(a.attributes.season,b.attributes.season)}),_.each(this.model.models,function(a){a.attributes.type=""!==a.attributes.episodeid?"episode":"season",this.$el.append(new app.TvSeasonListItemView({model:a}).render().el)},this),this}}),app.TvSeasonListItemView=Backbone.View.extend({tagName:"li",className:"tv-item-content",events:{"click .actions-wrapper":"view","click .tv-play":"play","click .tv-watched":"toggleWatched","click .tv-add":"add"},initialize:function(){this.model.on("change",this.render,this),this.model.on("destroy",this.close,this)},render:function(){var a=this.model.attributes,b="episode"==a.type;return a.watched=app.VideoController.watchedStatus(a),a.subText=b?"Episode "+a.episode:a.episode+" Episodes",a.label=b&&""!==a.title?a.title:a.label,this.$el.html(this.template(a)),this},view:function(){document.location=this.model.attributes.url},play:function(a){a.preventDefault(),a.stopPropagation(),app.VideoController.tvshowPlay(this.model.attributes,function(){app.VideoController.playlistRender()})},add:function(a){a.preventDefault(),a.stopPropagation(),app.VideoController.tvshowAdd(this.model.attributes,function(){app.VideoController.playlistRender()})},toggleWatched:function(a){a.preventDefault(),a.stopPropagation();var b=$(a.target).closest(".card");this.model.attributes.playcount=b.hasClass("watched-yes")?1:0,app.VideoController.toggleWatched("episode",this.model.attributes,function(a){a===!0?b.addClass("watched-yes").removeClass("watched-no"):b.addClass("watched-no").removeClass("watched-yes")})}}),app.XbmcView=Backbone.View.extend({tagName:"div",className:"xbmc-page",initialize:function(){},render:function(){var a={jsonrpc:"An interface to deal directly with the xbmc jsonrpc",storage:"Local Storage Data Dump",changelog:"Updates to Chorus"};switch(this.model){case"jsonrpc":return this.$el=(new app.XbmcJSONrpcView).render().$el,this;case"storage":return this.$el=(new app.XbmcLocalDumpView).render().$el,this;case"changelog":return this.$el=(new app.XbmcChorusChangeLog).render().$el,this}this.$el=$('');for(var b in a){var c=$("").append('").append(""+a[b]+"
");this.$el.append(c)}return this}}),app.XbmcLocalDumpView=Backbone.View.extend({tagName:"div",className:"xbmc-page",initialize:function(){},render:function(){var a=[app.playlists.storageKeyLists,app.playlists.storageKeyThumbsUp],b=this;return this.$el.empty(),$(a).each(function(a,c){var d=$("");d.prependTo(""+c+" "),app.storageController.getStorage(c,function(a){console.log(a);var e={};e[c]=a,d.html(JSON.stringify(e,null,4)),b.$el.append(d)})}),this}}),app.XbmcChorusChangeLog=Backbone.View.extend({tagName:"div",className:"xbmc-page changelog",render:function(){var a=this;return this.$el.html("Loading ChangeLog"),$.get("changelog.txt",function(b){a.$el.html(app.nl2br(b)),app.helpers.setTitle('XBMC Chorus ChangeLog')}),this}}),app.XbmcJSONrpcView=Backbone.View.extend({tagName:"div",className:"xbmc-page",events:{"change #method":"changeMethod","click #doit":"executeQuery"},initialize:function(){},render:function(){app.helpers.setTitle('XBMC jsonRPC'),this.$el.empty();var a='JSONrpc tester Use this to test out commands on the api, be careful - you could break something
Method: Loading... Loading
Result ';return this.$el.html(a),this.$select=$("#method",this.$el),this.$res=$("#result",this.$el),this.$params=$("#params",this.$el),this.executeForm(),this},executeForm:function(){var a=this;app.xbmcController.command("JSONRPC.Introspect",[],function(b){app.cached.Introspect=b.result,a.$select.empty();for(var c in b.result.methods)a.$select.append($("",{value:c,text:c}));console.log(b),a.$res.html(JSON.stringify(b,null,4)),a.changeMethod(),a.$select.chosen({search_contains:!0})})},changeMethod:function(){var a=this.$select.val(),b=app.cached.Introspect.methods[a];this.$params.empty(),$("#description",this.$el).html(b.description),$("#method-name",this.$el).html(a);for(var c in b.params){var d=b.params[c],e=$("
"),f={};d.$ref&&(d.type=app.cached.Introspect.types[d.$ref]),d.type="undefined"==typeof d.type?"":d.type;var g=("undefined"==typeof d.description?"":d.description+"\n\r")+(""!==d.type?JSON.stringify(d.type,null,2):"");if("undefined"!=typeof d.type.enums&&d.type.enums.length>0){f=$("");for(var h in d.type.enums)f.append($("",{value:d.type.enums[h],text:d.type.enums[h]}));f.addClass("select")}else f=$(" ",{type:"text",value:"",placeholder:d.default});f.addClass("paramEl"),e.append($(""+d.name+(d.required?"*":"")+(this.isEncoded("t",d,f)?" (JSON Encoded)":"")+" ")).append(f).append($(""+g+" ")).addClass("param "+(d.required?"required":"")),this.$params.append(e)}var i=$("
").addClass("param actions").append('Execute ');this.$params.append(i),this.$res.html(JSON.stringify(b,null,4))},executeQuery:function(){var a=$("#params .paramEl"),b=this.$select.val(),c=app.cached.Introspect.methods[b],d=[],e=this;a.each(function(a,b){var f=$(b).val(),g=c.params[a];console.log(f),e.isEncoded(f,g,$(b))&&(f=$.parseJSON(f),console.log(f)),f.length>0&&d.push(f)}),console.log(d),app.xbmcController.command(b,d,function(a){console.log(a),e.$res.html(JSON.stringify(a,null,4)).removeClass("error"),$.scrollTo(e.$res)},function(a){e.$res.html(JSON.stringify(a,null,4)).addClass("error"),$.scrollTo(e.$res)})},isEncoded:function(a,b,c){return console.log(b),"integer"==b.type.type?!1:!c.hasClass("select")&&""!==a&&("object"==typeof b.type||"array"==b.type)}}),app.addOns.addon.pluginaudiosoundcloud={waitTime:4e3,getAddon:function(){return app.addOns.getAddon("pluginaudiosoundcloud")},getSearchPath:function(){return"plugin://plugin.audio.soundcloud/SearchTracks?url=plugin%3A%2F%2Fmusic%2FSoundCloud%2Ftracks%2Fsearch&oauth_token=&mode=13"},parseFileRecord:function(a){return app.addOns.addon.pluginaudiosoundcloud.isSoundCloud(a)&&(a.file=a.file.replace("plugin://plugin.audio.soundcloud/","plugin://plugin.audio.soundcloud/"+encodeURIComponent(a.label))),a},clickDir:function(a){return app.addOns.addon.pluginaudiosoundcloud.isSoundCloud(a)&&"Search"==a.title&&app.addOns.addon.pluginaudiosoundcloud.doSearchDialog(),a},postProcessFileView:function(a,b){var c=app.addOns.addon.pluginaudiosoundcloud;if(c.isSoundCloud(b)){var d=c.getAddon();if(b.file==d.file){var e=$(".file-actions",a);e.html(' '),$("#soundcloudSearch",e).on("click",function(a){a.stopPropagation(),c.doSearchDialog();var b=c.getSearchPath();app.cached.fileCollection=new app.FileCollection,app.cached.fileCollection.fetch({sourcetype:"music",name:b,success:function(a){app.cached.filesSearchView=new app.FilesView({model:a}).render()}})}),a.find(".file-item").addClass("show-actions")}}return a},searchAddons:function(a,b){var c=$("
"),d=app.addOns.addon.pluginaudiosoundcloud,e=$("",{"class":"addon-box",id:"sc-search"}),f=(d.getAddon(),$(d.searchHeading("SoundCloud search for:
"+b+" ","soundcloud"))),g=d.cache("get",b,!1);return g!==!1?(c.html(g.render().$el),c.prepend(f)):(e.append(d.searchHeading("Search SoundCloud for:
"+b+" ","soundcloud can-click")),c.append(e),$("#sc-search",c).on("click",function(){c.html($(d.searchHeading("Searching SoundCloud for:
"+b+" ","loading"))),d.getSearchResults(b,function(a){c.html(a.render().$el),c.prepend(f),d.cache("set",b,a)})})),c},searchHeading:function(a,b){var c='
';return'
'+c+a+" "},cache:function(a,b,c){switch("undefined"==typeof app.cached.soundCloudSearch&&(app.cached.soundCloudSearch={}),a){case"get":return"undefined"==typeof app.cached.soundCloudSearch[b]?c:app.cached.soundCloudSearch[b];case"set":return app.cached.soundCloudSearch[b]=c,app.cached.soundCloudSearch[b]}},doSearchDialog:function(){app.helpers.prompt("What do you want to search for?",function(a){app.xbmcController.command("Input.SendText",[a],function(){$("#folder-name").html('Search for "'+a+'"');var b="Searching for "+a;$("#files-container").html('
'+b+"
")})})},getSearchResults:function(a,b){var c=app.addOns.addon.pluginaudiosoundcloud.getSearchPath(),d=$(window);app.cached.fileCollection=new app.FileCollection,app.cached.fileCollection.fetch({sourcetype:"music",name:c,success:function(a){app.cached.fileListView=new app.FilesListView({model:a}),b(app.cached.fileListView)}}),app.notifications.wsActive?d.bind("Input.OnInputRequested",function(){app.xbmcController.command("Input.SendText",[a],function(){}),d.unbind("Input.OnInputRequested")}):window.setTimeout(function(){app.xbmcController.command("Input.SendText",[a],function(){})},app.addOns.addon.pluginaudiosoundcloud.waitTime)},isSoundCloud:function(a){return-1!=a.file.indexOf("plugin.audio.soundcloud")}};
\ No newline at end of file
diff --git a/dist/theme/css/styles.css b/dist/theme/css/styles.css
index 112d77e..a895458 100644
--- a/dist/theme/css/styles.css
+++ b/dist/theme/css/styles.css
@@ -580,7 +580,7 @@ h4 {
.loading-box {
font-size: 30px;
color: #6e7374;
- background: #fafafa url('../images/loading-box-bg.jpg?1390099084') 0 bottom repeat-x;
+ background: #fafafa url('../images/loading-box-bg.jpg?1397051872') 0 bottom repeat-x;
padding: 40px 10px 40px 10px;
width: 70%;
margin: 80px auto 0 auto;
@@ -695,7 +695,7 @@ input[type="text"] {
}
.ui-dialog .ui-dialog-titlebar-close:hover .ui-icon-closethick, .ui-dialog .ui-dialog-titlebar-close:focus .ui-icon-closethick,
.ui-dialog .ui-dialog-titlebar-close .ui-icon-closethick:hover {
- background-image: url('../images/ui-icons_888888_256x240.png?1371898626');
+ background-image: url('../images/ui-icons_888888_256x240.png?1397051872');
}
.ui-dialog .ui-dialog-titlebar,
.ui-dialog .form-text,
@@ -1216,7 +1216,7 @@ input[type="text"] {
opacity: 0.5;
}
.entity-heading.loading {
- background: #fafafa url('../images/loading-box-bg.jpg?1390099084') 0 bottom repeat-x;
+ background: #fafafa url('../images/loading-box-bg.jpg?1397051872') 0 bottom repeat-x;
animation: wave 16s infinite linear;
-webkit-animation: wave 16s infinite linear;
}
@@ -1679,7 +1679,7 @@ body.fixed-header #search-box {
color: #444;
}
#sidebar-first .file-lists li.loading {
- background-image: url('../images/loader.gif?1387808230');
+ background-image: url('../images/loader.gif?1397051872');
background-position: 98% 6px;
background-repeat: no-repeat;
}
@@ -2515,14 +2515,14 @@ body.notconnected #header #logo {
border-bottom-color: #511e14 !important;
}
body.notconnected .track.playing-row {
- background-image: url('../images/icons/row-pause.png?1378549596') !important;
+ background-image: url('../images/icons/row-pause.png?1397051872') !important;
}
body .player-play .fa-pause {
display: none;
margin-top: 3px;
}
body.paused .playing-row .song-tracknum, body.playing .playing-row .song-tracknum {
- background: url('../images/row-playing.gif?1378547169') 50% 50% no-repeat;
+ background: url('../images/row-playing.gif?1397051872') 50% 50% no-repeat;
text-indent: -999999px;
}
body.playing .player-play .fa-pause {
@@ -2545,10 +2545,10 @@ body.playing #progress-bar.ui-slider .ui-slider-range {
border-top: 3px solid #f39c12;
}
body.paused .playing-row .song-tracknum {
- background: url('../images/icons/row-pause.png?1378549596') 50% 50% no-repeat;
+ background: url('../images/icons/row-pause.png?1397051872') 50% 50% no-repeat;
}
body.paused ul.playlist .playing-row {
- background-image: url('../images/icons/row-pause.png?1378549596');
+ background-image: url('../images/icons/row-pause.png?1397051872');
}
body.muted #footer .footer-right .actions-wrapper .fa-volume-up {
display: block;
@@ -2591,7 +2591,7 @@ body.player-view-local.fixed-header #page-header {
background: rgba(72, 78, 80, 0.97);
}
body.browser-playing .browser-playlist-song-list div.playlist-item.browser-playing-row {
- background-image: url('../images/row-playing.gif?1378547169');
+ background-image: url('../images/row-playing.gif?1397051872');
}
body.browser-playing #browser-player-footer .footer-left .fa-play {
display: none;
@@ -3505,7 +3505,7 @@ body.section-thumbsup .playlist-song-list li .song-actions-wrapper .btn.song-rem
color: #6e7374;
}
.album-row .album-info {
- background: url('../images/loading-box-bg.jpg?1390099084') 0 bottom repeat-x;
+ background: url('../images/loading-box-bg.jpg?1397051872') 0 bottom repeat-x;
color: #6e7374;
border-bottom: 3px solid #eee;
}
@@ -4146,7 +4146,7 @@ body.section-thumbsup .playlist-song-list li .song-actions-wrapper .btn.song-rem
transition: all 0.3s linear;
height: 80px;
background: #eeeff0;
- background: url('../images/row-playing.gif?1378547169') 0px 0px no-repeat;
+ background: url('../images/row-playing.gif?1397051872') 0px 0px no-repeat;
padding-right: 75px;
background-color: #eeeeee;
}
diff --git a/src/js/utils.js b/src/js/utils.js
index fbc6f57..cd58215 100755
--- a/src/js/utils.js
+++ b/src/js/utils.js
@@ -252,7 +252,7 @@ $(document).ready(function(){
var minutes = parseInt( totalSec / 60 ) % 60;
var seconds = totalSec % 60;
- return { hours: hours, minutes: minutes, seconds: seconds }
+ return { hours: hours, minutes: minutes, seconds: seconds };
};
diff --git a/webinterface.chorus.0.3.3.zip b/webinterface.chorus.0.3.4.zip
similarity index 95%
rename from webinterface.chorus.0.3.3.zip
rename to webinterface.chorus.0.3.4.zip
index 0f39d9a..9651b45 100644
Binary files a/webinterface.chorus.0.3.3.zip and b/webinterface.chorus.0.3.4.zip differ