if(!window.$)document.write('<script src="/js/jquery-1.4.4.min.js" charset="utf-8"><\/scr'+'ipt>');
if(!Array.prototype.forEach){Array.prototype.forEach=function(f,obj){var l=this.length;for(var i=0;i<l;i++){f.call(obj,this[i],i,this);}};}
if(!Array.prototype.some){Array.prototype.some=function(fn,thisObj){var scope=thisObj||window;for(var i=0,j=this.length;i<j;++i){if(fn.call(scope,this[i],i,this)){return true;}}return false;};}
if(!Array.prototype.filter){Array.prototype.filter=function(fn,thisObj){var scope=thisObj||window;var a = [];for(vari=0,j=this.length;i<j;++i){if(!fn.call(scope,this[i],i,this)){continue;}a.push(this[i]);}return a;};} 

function g(o){return document.getElementById(o);}
var lr={
	js:function(src,id,fun,chr){var o=g(id);if(o){if(o.removeNode){o.removeNode(true)}else{o.parentNode.removeChild(o)}}
		var j=document.createElement('script');j.charset=(!chr)?'gb2312':chr;j.src=src;j.id=id;
		j.onreadystatechange=function(){
			if(j.readyState=="complete" || j.readyState=='loaded'){
			j.onreadystatechange=null;
				if(typeof(fun)=='string'){
					fun!='' && eval('('+fun+')');
				}else{
					fun && fun();//eval('('++')');
				}
			}
		};
		document.getElementsByTagName('head')[0].appendChild(j);
	},
	isStr:function(p){return typeof(p)=='string'},
	getText:function(o){return (o.innerText||o.textContent);},
	urlEncode:function(p,t){return (t)?decodeURIComponent(p):encodeURIComponent(p.replace(/\+/g," "));},
	getHost:function(_u,_n){
		return (_n)?'http:\/\/'+_u.split('/')[2]+'/.../'+_u.split('/')[_u.split('/').length-1].split('?')[0]:'http://'+_u.split('/')[2];
	},
	copy:function(s){window.clipboardData.setData('text',s)},
	saveFile:function(a){
		var w=window.open('');w.document.open('text/html','utf-8');w.document.write(a);w.document.close();w.document.charset="utf-8";w.document.execCommand('SaveAs',true,'我听过的歌曲列表.txt');
	},
	getParameter:function(name,cancelBubble){
		var r = new RegExp("(\\?|#|&)"+name+"=([^&#]*)(&|#|$)");var m=location.href.match(r);if((!m || m=="") && !cancelBubble)m=top.location.href.match(r);return (!m?"":m[2]);
	},
	ifmOpen:function(fid,uri,fstr){
		if(g(fid).src.indexOf(fstr)<0)g(fid).src=uri;
	},
	tag:function(tagName, prop){
        var t=document.createElement(tagName);
        if(prop===null)return t;
        for(var p in prop){
            if(p=="class"){t.className = prop[p];}else if(p == "style"){for(s in prop[p]){t.style[s] = prop[p][s];}       
            }else if(p==="innerHTML"){t.innerHTML = prop[p];}else if(prop[p] === "event"){for(e in prop[p]){t.setAttribute([e], prop[p][e]);}
            }else if(p === "appendTo"){prop[p].appendChild(t);
            }else if(p === "append"){t.appendChild(prop[p]);
            }else{t.setAttribute([p], prop[p]);}
        }
        return t;
    },
	log:function(m){window.console && console.log(m)},
	getTag:function(o){return o.tagName.toLowerCase()},
	attr:function(o,n,v){if(v){o.setAttribute(n,v)}else{return o.getAttribute(n)}}
};

(function(k){var isiPad = (!!/\((iPhone|iPad|iPod)/i.test(navigator.userAgent));var i,f,d,j,h=[],a,n,m,c,b,e,l,g=this;k.$E=k.$E||{};i=k.$E;if(document.addEventListener){f=function(r,q,z){if(j["on"+q]){j["on"+q](r,q,z);return;}var t=false;if(!r){lr.log("targetModel undefined:"+q+z);}if(r.length && r.length>1){ 
for(var y=0;y<r.length;++y){$E.on(r[y],q,z);}return}if(!r._eventTypes){r._eventTypes={};}if(!r._eventTypes[q]){r._eventTypes[q]=[];}r.addEventListener(q,z,false);var o=r._eventTypes[q];for(var p=0;p<o.length;p++){if(o[p]==z){t=true;}}if(!t){o.push(z);}};d=function(z,r,t){if(j["off"+r]){j["off"+r](z,r,t);return;}if(r){if(z.length && z.length>1){ 
for(var y=0;y<z.length;++y){$E.off(z[y],r,t);}return}if(t){z.removeEventListener(r,t,false);if(z._eventTypes&&z._eventTypes[r]){var o=z._eventTypes[r];for(var q=0;q<o.length;q++){if(o[q]===t){o[q]=null;o.splice(q,1);break;}}}}else{if(z._eventTypes&&z._eventTypes[r]){var o=z._eventTypes[r];for(var q=0;q<o.length;q++){z.removeEventListener(r,o[q],false);}z._eventTypes[r]=[];}}}else{if(z._eventTypes){var u=z._eventTypes;for(var v in u){var o=z._eventTypes[v];for(var q=0;q<o.length;q++){z.removeEventListener(v,o[q],false);}}u={};}}};}else{if(document.attachEvent){f=function(q,p,z){
if(q.length && q.length>1){ 
for(var y=0;y<q.length;++y){$E.on(q[y],p,z);}return}
if(j["on"+p]){j["on"+p](q,p,z);return;}if(i._find(arguments)!=-1){return;}var t=function(x){if(!x){x=window.event;}var w={_event:x,type:x.type,target:x.srcElement,currentTarget:q,relatedTarget:x.fromElement?x.fromElement:x.toElement,eventPhase:(x.srcElement==q)?2:3,clientX:x.clientX,clientY:x.clientY,screenX:x.screenX,screenY:x.screenY,layerX:x.offsetX,layerY:x.offsetY,pageX:x.clientX+document.body.scrollLeft,pageY:x.clientY+document.body.scrollTop,altKey:x.altKey,ctrlKey:x.ctrlKey,shiftKey:x.shiftKey,charCode:x.keyCode,keyCode:x.keyCode,stopPropagation:function(){this._event.cancelBubble=true;},preventDefault:function(){this._event.returnValue=false;}};if(Function.prototype.call){z.call(q,w);}else{q._currentHandler=z;q._currentHandler(w);q._currentHandler=null;}};q.attachEvent("on"+p,t);var r={element:q,eventType:p,handler:z,wrappedEvent:t};var u=q.document||q;var o=u.parentWindow;var v=i._uid();if(!o._allHandlers){o._allHandlers={};}o._allHandlers[v]=r;if(!q._handlers){q._handlers=[];}q._handlers.push(v);if(!o._onunloadEventRegistered){o._onunloadEventRegistered=true;o.attachEvent("onunload",i._removeAllEvents);}};d=function(z,o,y){if(j["off"+o]){j["off"+o](z,o,y);return;}var q=i._find(arguments);if(q==-1){return;}var v=z.document||z;var x=v.parentWindow;for(var r=0;r<q.length;r++){var t=q[r];var p=z._handlers[t];var u=x._allHandlers[p];z.detachEvent("on"+u.eventType,u.wrappedEvent);z._handlers[t]=null;z._handlers.splice(t,1);delete x._allHandlers[p];}if(z._handlers&&z._handlers.length==0){z._handlers=null;}};i._find=function(x){var t=x[0],o=x[1],z=x[2],p=t._handlers;if(!p){return -1;}var v=t.document||t;var y=v.parentWindow;var r=[];if(x.length===3){for(var z=p.length-1;z>=0;z--){var q=p[z];var u=y._allHandlers[q];if(u.eventType==o&&u.handler==z){r.push(z);return r;}}}else{if(x.length===2){for(var z=p.length-1;z>=0;z--){var q=p[z];var u=y._allHandlers[q];if(u.eventType==o){r.push(z);}}if(r.length>0){return r;}}else{if(x.length===1){for(var z=p.length-1;z>=0;z--){r.push(z);}if(r.length>0){return r;}}}}return -1;};i._removeAllEvents=function(){var q,o=this;for(q in o._allHandlers){var p=o._allHandlers[q];p.element.detachEvent("on"+p.eventType,p.wrappedEvent);p.element._handlers=null;delete o._allHandlers[q];}};i._counter=0;i._uid=function(){return"h"+i._counter++;};}}j={oncustomdrag:function(r,o,x){var v,u,w=false,q;var p=function(y){var z;q=y;if(isiPad){y.stopPropagation();z=y.touches[0];v=z.pageX;u=z.pageY;}else{y.stopPropagation();y.preventDefault();v=y.clientX;u=y.clientY;}w=false;if(isiPad){i.addEventListener(document,"touchmove",t);i.addEventListener(r,"touchend",z);}else{i.addEventListener(document,"mousemove",t);}};var t=function(A){var z,C,B;A.stopPropagation();if(isiPad){B=A.changedTouches[0];z=B.pageX;C=B.pageY;}else{z=A.clientX;C=A.clientY;}if(Math.abs(v-z)+Math.abs(u-C)>2){if(isiPad){i.removeEventListener(document,"touchmove",t);i.removeEventListener(r,"touchend",z);}else{i.removeEventListener(document,"mousemove",t);}if(o=="customdrag"&&!w){x.call(r,q);w=true;}}else{}};var z=function(y){if(isiPad){i.removeEventListener(document,"touchmove",t);if(!w){}else{y.stopPropagation();y.preventDefault();}}else{i.removeEventListener(document,"mousemove",t);if(!w){}}};if(isiPad){i.addEventListener(r,"touchstart",p);}else{i.addEventListener(r,"mousedown",p);i.addEventListener(r,"mouseup",z);}h.push({element:r,eventType:o,handler:x,actions:[p,z]});},offcustomdrag:function(q,p,r){for(var o in h){if(h[o].handler==r&&h[o].element==q&&h[o].eventType==p){if(isiPad){i.removeEventListener(q,"touchstart",h[o].actions[0]);i.removeEventListener(q,"touchend",h[o].actions[1]);}else{i.removeEventListener(q,"mousedown",h[o].actions[0]);i.removeEventListener(q,"mouseup",h[o].actions[1]);}}}},oncustomclick:function(r,o,w){var u,t,v=false,q;var p=function(x){var y;if(isiPad){y=x.changedTouches[0];u=y.pageX;t=y.pageY;}else{u=x.clientX;t=x.clientY;}x.preventDefault();x.stopPropagation();q=x;};var z=function(A){var C;if(isiPad){C=A.changedTouches[0];var z=C.pageX;var B=C.pageY;}else{var z=A.clientX;var B=A.clientY;}if(Math.abs(u-z)+Math.abs(t-B)<10){v=false;lr.log("customclick");if(o=="customclick"){w.call(r,q);}}else{}};if(isiPad){i.addEventListener(r,"touchstart",p);i.addEventListener(r,"touchend",z);}else{i.addEventListener(r,"mousedown",p);i.addEventListener(r,"mouseup",z);}h.push({element:r,eventType:o,handler:w,actions:[p,z]});},offcustomclick:function(q,p,r){for(var o in h){if(h[o].handler==r&&h[o].element==q&&h[o].eventType==p){if(isiPad){i.removeEventListener(q,"touchstart",h[o].actions[0]);i.removeEventListener(q,"touchend",h[o].actions[1]);}else{i.removeEventListener(q,"mousedown",h[o].actions[0]);i.removeEventListener(q,"mouseup",h[o].actions[1]);}}}}};a=function(o){if(a.done){return o();}if(a.timer){a.ready.push(o);}else{a.ready=[o];i.on(window,"load",n);a.timer=window.setInterval(n,300);}};n=function(){if(a.done){return true;}if(document&&document.getElementsByTagName&&document.getElementById&&document.body){a.done=true;window.clearInterval(a.timer);a.timer=null;for(var o=0;o<a.ready.length;o++){a.ready[o]();}a.ready=null;return true;}};m=function(){this.subscribers=[];};m.prototype.subscribe=function(o){var p=this.subscribers.some(function(q){return q===o;});if(!p){this.subscribers.push(o);}return o;};m.prototype.deliver=function(o){this.subscribers.forEach(function(p){p(o);});};m.prototype.unsubscribe=function(o){this.subscribers=this.subscribers.filter(function(p){return p!==o;});return o;};c=function(p,z,t){var o,u,q,r;if(t){z="on"+z;if(!!!p._$events){p._$events={};}if(!p._$events[z]){p._$events[z]=[];}o=p._$events[z];u=o.length;q=-1;for(r=0;r<u;r++){if(o[r]===t){q=r;break;}}if(q===-1){o.push(t);}}else{lr.log(">>> 添加的观察者方法不存在："+p+z+t);}};b=function(r){var q=r.targetModel;var o=r.eventMapping;for(var p in o){c(q,p,o[p]);}};e=function(q,z,t){var p,r;z="on"+z;var o=true;if(q._$events&&q._$events[z]){p=q._$events[z];if(p.length>0){for(r=0;r<p.length;r++){if(p[r].apply(q,[t])){}else{o=false;}}}}else{}return o;};l=function(p,t,u){var z,q,o,v,r=p._$events;if(u){if(r){t="on"+t;o=r[t];if(o){v=o.length;for(z=0;z<v;z++){if(o[z]==u){o[z]=null;o.splice(z,1);break;}}}}}else{if(t){if(r){t="on"+t;o=r[t];if(o){v=o.length;for(z=0;z<v;z++){o[z]=null;}delete r[t];}}}else{if(p){if(r){for(z in r){delete r[z];}delete p._$events;}}}}};i.addEventListener=f;i.removeEventListener=d;i.on=i.addEventListener;i.off=i.removeEventListener;i.onDomReady=a;i.Publish=m;i.addObserver=c;i.addObservers=b;i.notifyObservers=e;i.removeObserver=l;})(window);

if(!Array.prototype.lastIndexOf){Array.prototype.lastIndexOf=function(obj,fromIndex){if(fromIndex==null){fromIndex=this.length-1;}else if(fromIndex<0){fromIndex=Math.max(0,this.length+fromIndex);}for(var i=fromIndex;i>=0;i--){if(this[i]===obj){return i;}}return -1;};}

function noBubble(e){if(!e)e=window.event;if(e.stopPropagation){e.stopPropagation();}else{e.cancelBubble = true;};}
function returnFalse(e){if(e&&e.preventDefault){e.preventDefault();}else{window.event.returnValue = false;};return false;}

function getTop(o){var t=o.offsetTop;while(o=o.offsetParent)t+=o.offsetTop;return(t);}
function getLeft(o){var t=o.offsetLeft;while(o=o.offsetParent)t+=o.offsetLeft;return(t);}

Function.prototype.bind=function(){var __method = this;var args = Array.prototype.slice.call(arguments);var object=args.shift();return function() {return __method.apply(object,args.concat(Array.prototype.slice.call(arguments)));}}
var E={};
E.apply=function(handler, args){return function(evt){E.event=evt?evt:window.event;handler.apply(null, args);};}
E.add=function(o,t,f){
if(o instanceof Array){return o.forEach(function(el){E.add(el,t,f)});}
if(o.addEventListener){o.addEventListener(t,f,false);}else if(o.attachEvent){o.attachEvent("on" + t, f);}else{o["on" + t] = f;}};
E.formatEvent=function(e){if(typeof e.charCode=="undefined"){e.charCode=(e.type=="keypress")?e.keyCode:0;e.isChar=(e.charCode > 0);}
if(e.srcElement && !e.target){e.eventPhase=2;e.pageX=e.clientX+document.body.scrollLeft;e.pageY=e.clientY+document.body.scrollTop;
if(!e.preventDefault){e.preventDefault=function(){this.returnValue=false;};}
if(e.type=="mouseout"){e.relatedTarget = e.toElement;}else if(e.type=="mouseover"){e.relatedTarget=e.fromElement;}
if(!e.stopPropagation){e.stopPropagation=function(){this.cancelBubble=true;};};e.target=e.srcElement;e.time=(new Date).getTime();}
return e;
}
E.getEv=function(){if(window.event){return this.formatEvent(window.event);}else{return E.getEv.arguments[0];}}
E.getEl=function(){return (window.event)?E.getEv().srcElement:E.getEv(E.getEl.arguments[0]).target;}

function hasClass(e,c){return e.className.match(new RegExp('(\\s|^)'+c+'(\\s|$)'));}
function addClass(e,c){if(!this.hasClass(e,c))e.className+=" "+c;}
function removeClass(e,c){if(hasClass(e,c)){var reg = new RegExp('(\\s|^)'+c+'(\\s|$)');e.className=e.className.replace(reg,' ');}}

var Cookies = {
	add:function(_sn, value){
     var argv = arguments;
     var argc = arguments.length;
     var expires = (argc > 2) ? argv[2] : null;
     var path = (argc > 3) ? argv[3] : '/';
     var domain = (argc > 4) ? argv[4] : null;
     var secure = (argc > 5) ? argv[5] : false;
	var expires = new Date();
		expires.setTime(expires.getTime() + 12 * 30 * 24 * 60 * 60 * 1000);

     document.cookie = _sn + "=" + escape (value) +
       ((expires == null) ? "" : ("; expires=" + expires.toGMTString())) +
       ((path == null) ? "" : ("; path=" + path)) +
       ((domain == null) ? "" : ("; domain=" + domain)) +
       ((secure == true) ? "; secure" : "");
},
read : function(_sn){
    var arg = _sn + "=";
    var alen = arg.length;
    var clen = document.cookie.length;
    var i = 0;
    var j = 0;
    while(i < clen){
        j = i + alen;
        if (document.cookie.substring(i, j) == arg)
            return Cookies.getCookieVal(j);
        i = document.cookie.indexOf(" ", i) + 1;
        if(i == 0)
            break;
    }
    return null;
},
clear:function(_sn) {
  if(Cookies.read(_sn)){
    var expdate = new Date(); 
    expdate.setTime(expdate.getTime() - (86400 * 1000 * 1)); 
    Cookies.add(_sn, "", expdate); 
  }
},getCookieVal : function(offset){
   var endstr = document.cookie.indexOf(";", offset);
   if(endstr == -1){
       endstr = document.cookie.length;
   }
   return unescape(document.cookie.substring(offset, endstr));
},toJs : function(_sn,obj){
	var _o = (Cookies.read(_sn))?Cookies.read(_sn):'[';
	var _s = [];
	var _t = [];
	
	for(var p in obj)
	{
		_s.push(p+':"'+obj[p]+'"'); 
		_t.push(p+':""');
	}
	var _e = (Cookies.read(_sn))?'':'{'+_t.join(',')+'}];';
	var _r = new RegExp('{'+_t.join(',')+'}];');
	_o = _o.replace(_r,'')

	if(_o.indexOf(_s.join(','))==-1)
	{
		_o += '{'+ _s.join(',')+'}'+',{'+_t.join(',')+'}];';
		Cookies.clear(_sn);
		Cookies.add(_sn,_o,3000);
	}
}}

if(!String.prototype.trim){
	String.prototype.trim = function(){var str = this.replace(/^(\s|\u00A0)+/,'');
	for(var i = str.length - 1; i >= 0; i--){
		if(/\S/.test(str.charAt(i))){
			str = str.substring(0, i + 1);
			break;
		}
	}
	return str;}
}
