var ENVIRONMENT = 'live';

var Class={create:function(){return function(){this.initialize.apply(this,arguments);}}}
Object.extend=function(destination,source){for(property in source)destination[property]=source[property];return destination;}
Function.prototype.bind=function(object){var __method=this;return function(){return __method.apply(object,arguments);}}
Function.prototype.bindAsEventListener=function(object){var __method=this;return function(event){__method.call(object,event||window.event);}}
function $(){if(arguments.length==1)return get$(arguments[0]);var elements=[];$c(arguments).each(function(el){elements.push(get$(el));});return elements;function get$(el){if(typeof el=='string')el=document.getElementById(el);return el;}}
if(!window.Element)var Element=new Object();Object.extend(Element,{remove:function(element){element=$(element);element.parentNode.removeChild(element);},hasClassName:function(element,className){element=$(element);if(!element)return;var hasClass=false;element.className.split(' ').each(function(cn){if(cn==className)hasClass=true;});return hasClass;},addClassName:function(element,className){element=$(element);Element.removeClassName(element,className);element.className+=' '+className;},removeClassName:function(element,className){element=$(element);if(!element)return;var newClassName='';element.className.split(' ').each(function(cn,i){if(cn!=className){if(i>0)newClassName+=' ';newClassName+=cn;}});element.className=newClassName;},cleanWhitespace:function(element){element=$(element);$c(element.childNodes).each(function(node){if(node.nodeType==3&&!/\S/.test(node.nodeValue))Element.remove(node);});},find:function(element,what){element=$(element)[what];while(element.nodeType!=1)element=element[what];return element;}});var Position={cumulativeOffset:function(element){var valueT=0,valueL=0;do{valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;element=element.offsetParent;}while(element);return[valueL,valueT];}};document.getElementsByClassName=function(className){var children=document.getElementsByTagName('*')||document.all;var elements=[];$c(children).each(function(child){if(Element.hasClassName(child,className))elements.push(child);});return elements;}
Array.prototype.iterate=function(func){for(var i=0;i<this.length;i++)func(this[i],i);}
if(!Array.prototype.each)Array.prototype.each=Array.prototype.iterate;function $c(array){var nArray=[];for(var i=0;i<array.length;i++)nArray.push(array[i]);return nArray;}
var Fx=fx={};Fx.Base=function(){};Fx.Base.prototype={setOptions:function(options){this.options=Object.extend({onStart:function(){},onComplete:function(){},transition:Fx.Transitions.sineInOut,duration:500,unit:'px',wait:true,fps:50},options||{});},step:function(){var time=new Date().getTime();if(time<this.time+this.options.duration){this.cTime=time-this.time;this.setNow();}else{setTimeout(this.options.onComplete.bind(this,this.element),10);this.clearTimer();this.now=this.to;}
this.increase();},setNow:function(){this.now=this.compute(this.from,this.to);},compute:function(from,to){var change=to-from;return this.options.transition(this.cTime,from,change,this.options.duration);},clearTimer:function(){clearInterval(this.timer);this.timer=null;return this;},_start:function(from,to){if(!this.options.wait)this.clearTimer();if(this.timer)return;setTimeout(this.options.onStart.bind(this,this.element),10);this.from=from;this.to=to;this.time=new Date().getTime();this.timer=setInterval(this.step.bind(this),Math.round(1000/this.options.fps));return this;},custom:function(from,to){return this._start(from,to);},set:function(to){this.now=to;this.increase();return this;},hide:function(){return this.set(0);},setStyle:function(e,p,v){if(p=='opacity'){if(v==0&&e.style.visibility!="hidden")e.style.visibility="hidden";else if(e.style.visibility!="visible")e.style.visibility="visible";if(window.ActiveXObject)e.style.filter="alpha(opacity="+v*100+")";e.style.opacity=v;}else e.style[p]=v+this.options.unit;}};Fx.Style=Class.create();Fx.Style.prototype=Object.extend(new Fx.Base(),{initialize:function(el,property,options){this.element=$(el);this.setOptions(options);this.property=property.camelize();},increase:function(){this.setStyle(this.element,this.property,this.now);}});Fx.Styles=Class.create();Fx.Styles.prototype=Object.extend(new Fx.Base(),{initialize:function(el,options){this.element=$(el);this.setOptions(options);this.now={};},setNow:function(){for(p in this.from)this.now[p]=this.compute(this.from[p],this.to[p]);},custom:function(obj){if(this.timer&&this.options.wait)return;var from={};var to={};for(p in obj){from[p]=obj[p][0];to[p]=obj[p][1];}
return this._start(from,to);},increase:function(){for(var p in this.now)this.setStyle(this.element,p,this.now[p]);}});Fx.Transitions={linear:function(t,b,c,d){return c*t/d+b;},sineInOut:function(t,b,c,d){return-c/2*(Math.cos(Math.PI*t/d)-1)+b;}};
Fx.Scroll=Class.create();Fx.Scroll.prototype=Object.extend(new Fx.Base(),{initialize:function(el,options){this.element=$(el);this.setOptions(options);this.element.style.overflow='hidden';},down:function(){return this.custom(this.element.scrollTop,this.element.scrollHeight-this.element.offsetHeight);},up:function(){return this.custom(this.element.scrollTop,0);},increase:function(){this.element.scrollTop=this.now;}});Fx.Color=Class.create();Fx.Color.prototype=Object.extend(new Fx.Base(),{initialize:function(el,property,options){this.element=$(el);this.setOptions(options);this.property=property.camelize();this.now=[];},custom:function(from,to){return this._start(from.hexToRgb(true),to.hexToRgb(true));},setNow:function(){[0,1,2].each(function(i){this.now[i]=Math.round(this.compute(this.from[i],this.to[i]));}.bind(this));},increase:function(){this.element.style[this.property]="rgb("+this.now[0]+","+this.now[1]+","+this.now[2]+")";}});Object.extend(String.prototype,{rgbToHex:function(array){var rgb=this.match(new RegExp('([\\d]{1,3})','g'));if(rgb[3]==0)return'transparent';var hex=[];for(var i=0;i<3;i++){var bit=(rgb[i]-0).toString(16);hex.push(bit.length==1?'0'+bit:bit);}
var hexText='#'+hex.join('');if(array)return hex;else return hexText;},hexToRgb:function(array){var hex=this.match(new RegExp('^[#]{0,1}([\\w]{1,2})([\\w]{1,2})([\\w]{1,2})$'));var rgb=[];for(var i=1;i<hex.length;i++){if(hex[i].length==1)hex[i]+=hex[i];rgb.push(parseInt(hex[i],16));}
var rgbText='rgb('+rgb.join(',')+')';if(array)return rgb;else return rgbText;}});
Fx.Height=Class.create();Fx.Height.prototype=Object.extend(new Fx.Base(),{initialize:function(el,options){this.element=$(el);this.setOptions(options);this.element.style.overflow='hidden';},toggle:function(){if(this.element.offsetHeight>0)return this.custom(this.element.offsetHeight,0);else return this.custom(0,this.element.scrollHeight);},show:function(){return this.set(this.element.scrollHeight);},increase:function(){this.setStyle(this.element,'height',this.now);}});Fx.Width=Class.create();Fx.Width.prototype=Object.extend(new Fx.Base(),{initialize:function(el,options){this.element=$(el);this.setOptions(options);this.element.style.overflow='hidden';this.iniWidth=this.element.offsetWidth;},toggle:function(){if(this.element.offsetWidth>0)return this.custom(this.element.offsetWidth,0);else return this.custom(0,this.iniWidth);},show:function(){return this.set(this.iniWidth);},increase:function(){this.setStyle(this.element,'width',this.now);}});Fx.Opacity=Class.create();Fx.Opacity.prototype=Object.extend(new Fx.Base(),{initialize:function(el,options){this.element=$(el);this.setOptions(options);this.now=1;},toggle:function(){if(this.now>0)return this.custom(1,0);else return this.custom(0,1);},show:function(){return this.set(1);},increase:function(){this.setStyle(this.element,'opacity',this.now);}});
ajax=Class.create();ajax.prototype={initialize:function(url,options){this.transport=this.getTransport();this.postBody=options.postBody||'';this.method=options.method||'post';this.onComplete=options.onComplete||null;this.update=$(options.update)||null;this.request(url);},request:function(url){this.transport.open(this.method,url,true);this.transport.onreadystatechange=this.onStateChange.bind(this);if(this.method=='post'){this.transport.setRequestHeader('Content-type','application/x-www-form-urlencoded');if(this.transport.overrideMimeType)this.transport.setRequestHeader('Connection','close');}
this.transport.send(this.postBody);},onStateChange:function(){if(this.transport.readyState==4&&this.transport.status==200){if(this.onComplete)
setTimeout(function(){this.onComplete(this.transport);}.bind(this),10);if(this.update)
setTimeout(function(){this.update.innerHTML=this.transport.responseText;}.bind(this),10);this.transport.onreadystatechange=function(){};}},getTransport:function(){if(window.ActiveXObject)return new ActiveXObject('Microsoft.XMLHTTP');else if(window.XMLHttpRequest)return new XMLHttpRequest();else return false;}};
var downloadForm=null;function acceptDownload(form,id,type){downloadForm=form;var url='/ajaxApprover.php';var pars='?id='+id+'&type='+type;var tmp=new ajax(url+pars,{method:'get',onComplete:processDownload});}
function processDownload(request){eval("var data = "+request.responseText);if(data.error=='login'){if(confirm(data.message)){parent.site.location='http://'+document.location.host+'/user/register.php';}}else if(data.retry==1){alert(data.message);downloadForm.jsAccept.value=data.type;downloadForm.submit();}else if(data.retry==0){if(confirm(data.message)){if(ENVIRONMENT=='beta'){alert("Download af musik er deaktiveret under demonstrationen. \nPå live sitet ville filen downloade nu.");}else{downloadForm.jsAccept.value=data.type;downloadForm.submit();}}}}
var favList=Array();function addFavorite(id,type){if(document.getElementById('favoriteList')){if(document.getElementById('favoriteEmpty'))
$('favoriteList').removeChild($('favoriteEmpty'));lastFav=document.createElement("span");lastFav.setAttribute("class","miniimgdiv");lastFav.innerHTML='<img alt="" class="miniimg" style="background:##E2E8E7;border:0px" src="/img/loading.gif" />';$('favoriteList').appendChild(lastFav);favList.unshift(lastFav);}
var url='/ajaxApprover.php';var pars='?id='+id+'&type='+type;new ajax(url+pars,{method:'get',onComplete:injectFavorite});}
function injectFavorite(request){eval("var data = "+request.responseText);var newFav=favList.pop();if(data.error=='login'){if(confirm(data.message)){parent.site.location='http://'+document.location.host+'/user/register.php';}}else if(data.error=='duplicate'&&document.getElementById('favoriteList')){$('favoriteList').removeChild(newFav);}else if(data.type=="song"||data.type=="album"){if(document.getElementById('favoriteList')){newFav.setAttribute("class","miniimgdiv");if(data.type=="song"){newFav.innerHTML='<a name="'+data.trackName+'" onmouseover="document.getElementById(\'profilinfo\').innerHTML=this.name;" onmouseout="document.getElementById(\'profilinfo\').innerHTML=\'<br />&nbsp;\';" href="/song.php?id='+data.trackId+'"><img alt="" class="miniimg" src="'+data.trackPicture+'" /></a>';}else{newFav.innerHTML='<a name="'+data.trackName+'" onmouseover="document.getElementById(\'profilinfo\').innerHTML=this.name;" onmouseout="document.getElementById(\'profilinfo\').innerHTML=\'<br />&nbsp;\';" href="/album.php?id='+data.trackId+'"><img alt="" class="miniimgalbum" src="'+data.trackPicture+'" /></a>';}
$('favoriteList').appendChild(newFav);}}}
function toggle(obj){var el=document.getElementById(obj);if(el.style.display!='none'){el.style.display='none';}
else{el.style.display='';}}
function togglePriority(className){var faders=Array();document.getElementsByClassName(className).each(function(el,i){faders[i]=new Fx.Height(el,{duration:250});});for(var i=0;i<faders.length;i++){faders[i].toggle();}
eval('toggleState.'+className+'*=-1');return eval('toggleState.'+className+'==1');}
function clearDefaultText(e){var target=window.event?window.event.srcElement:e?e.target:null;if(!target)return;if(target.value==target.defaultText){target.value='';}}
function replaceDefaultText(e){var target=window.event?window.event.srcElement:e?e.target:null;if(!target)return;if(target.value==''&&target.defaultText){target.value=target.defaultText;}}
var currentImg=0;function nextImage(imgId){var nextImg=currentImg+1;if(nextImg>imglist.length-1){nextImg=0;}
document.getElementById("photo").src=imglist[nextImg].substring(0,imglist[nextImg].lastIndexOf(","));document.getElementById("photolink").setAttribute("href","/pictures/"+imglist[nextImg].substring(imglist[nextImg].lastIndexOf(",")+1));if(document.getElementById("pictureType")){document.getElementById("pictureType").innerHTML=typelist[nextImg];}
currentImg=nextImg;}
function prevImage(imgId){var prevImg=currentImg-1;if(prevImg<0)
prevImg=imglist.length-1;document.getElementById("photo").src=imglist[prevImg].substring(0,imglist[prevImg].lastIndexOf(","));document.getElementById("photolink").setAttribute("href","/pictures/"+imglist[prevImg].substring(imglist[prevImg].lastIndexOf(",")+1));if(document.getElementById("pictureType")){document.getElementById("pictureType").innerHTML=typelist[prevImg];}
currentImg=prevImg;}
function showImage(imgId){tmp=window.open("pictures/"+imglist[currentImg].substring(imglist[currentImg].lastIndexOf(",")+1),'huu','width=400,height=400');}
function addLoadEvent(func)
{var oldonload=window.onload;if(typeof window.onload!='function'){window.onload=func;}else{window.onload=function(){oldonload();func();}}}
function getElementsByClass(searchClass,node,tag){var classElements=new Array();if(node==null)
node=document;if(tag==null)
tag='*';var els=node.getElementsByTagName(tag);var elsLen=els.length;var pattern=new RegExp('(^|\\s)'+searchClass+'(\\s|$)');for(i=0,j=0;i<elsLen;i++){if(pattern.test(els[i].className)){classElements[j]=els[i];j++;}}
return classElements;}
function addEvent(obj,type,fn){if(obj.addEventListener){obj.addEventListener(type,fn,false);EventCache.add(obj,type,fn);}
else if(obj.attachEvent){obj["e"+type+fn]=fn;obj[type+fn]=function(){obj["e"+type+fn](window.event);}
obj.attachEvent("on"+type,obj[type+fn]);EventCache.add(obj,type,fn);}
else{obj["on"+type]=obj["e"+type+fn];}}
var EventCache=function(){var listEvents=[];return{listEvents:listEvents,add:function(node,sEventName,fHandler){listEvents.push(arguments);},flush:function(){var i,item;for(i=listEvents.length-1;i>=0;i=i-1){item=listEvents[i];if(item[0].removeEventListener){item[0].removeEventListener(item[1],item[2],item[3]);};if(item[1].substring(0,2)!="on"){item[1]="on"+item[1];};if(item[0].detachEvent){item[0].detachEvent(item[1],item[2]);};item[0][item[1]]=null;};}};}();