var Audio = new Class({
	initialize: function() {
		var opener = $('videopen2');
		if (opener) {
			opener.addEvent('click', this.showVideo.bind(this));
			$('vidclose').addEvent('click', this.hideVideo);
		}
		var buyAlb = $('buyAlbum');
		if (buyAlb) {
			buyAlb.addEvent('click', this.buyAlb.bind(this));
		}
	},
	buyAlb : function () {
		tanx.moodal.openWindow('album.php');
	},
	showVideo : function(e) {
		e.stopPropagation();
		var vid = $('tanxvideo');
		vid.removeClass('hidden');
		var wcord = window.getCoordinates();
		var vcord = vid.getCoordinates();
		var x = (wcord.width-vcord.width)/2;
		var y = (wcord.height-vcord.height)/2;
		vid.setPosition(x, y);
		vcord = vid.getCoordinates();
		
		if (!this.player.hasClass('opaque'))
			this.pauseSong();
		
		vid.drag = new Drag.Move(vid, {container : document.body.getElement('div.lay-top')});
		
		return false;
	},
	hideVideo : function() {
		var vid = $('tanxvideo');
		//$$('div.vidshade').destroy();
		vid.addClass('hidden');
		vid.drag = null;
	},
	resize : function() {
		this.positionSongs();
		if (this.started == null) {
			this.started = true;
			this.startPlayer();
			this.startSongs();
		}
	},
	positionSongs : function() {
		var place = $('tanx-playlist').getCoordinates();
		var offset = 3;
		
		$$('div.tanx-song').each(function(song) {
			var ssize = song.getSize();
			offset += ssize.y;

			song.setCoordinates(place.left, place.top+place.height - offset, null, null);
			
			if (song.hasClass('selected')) {
				var pos = song.getCoordinates();
				this.player.setStyle('top', pos.top);
				this.player.setStyle('left', pos.left+pos.width+15);
				var pco = this.player.getCoordinates();
				this.player.getPrevious().setCoordinates(pco.left, pco.top, pco.width, pco.height);
				var st = this.player.getPrevious().getPrevious(); var sb = st.getPrevious(); var sl = sb.getPrevious(); var sr = sl.getPrevious();
				st.setCoordinates(pco.left, pco.top-4, pco.width, 4);
				sb.setCoordinates(pco.left, pco.top+pco.height, pco.width, 4);
				sl.setCoordinates(pco.left-4, pco.top, 4, pco.height);
				sr.setCoordinates(pco.left+pco.width, pco.top, 4, pco.height);
			}
		}.bind(this));
		
		var shade = $('tanx-playlist').getPrevious();
		
		var x = place.left-4;
		var y = place.top+place.height-offset-4;
		var w = 190;
		var h = offset+4;
		shade.setCoordinates(x, y, w, h);
		
		
		var st = shade.getPrevious(); var sb = st.getPrevious(); var sl = sb.getPrevious(); var sr = sl.getPrevious();
		
		st.setCoordinates(x, y-4, w, 4);
		sb.setCoordinates(x, y+h, w, 4);
		sl.setCoordinates(x-4, y, 4, h);
		sr.setCoordinates(x+w, y, 4, h);
		
	},
	startPlayer : function() {
		this.playlist = new Playlist();
		this.player = $('wxp-top');
	
	    this.player.getElement('.wxp-pause').addEvent('click', function() { this.pauseSong(); }.bind(this)
		);
		this.player.getElement('.wxp-play').addEvent('click', function() { this.resumeSong(); }.bind(this)
		);
	    
	    this.player.getElement('.wxp-seekbar').addEvent('click', function(e) {
	        var coords = e.target.getCoordinates();
	        var ms = ((e.page.x - coords.left)/coords.width)*this.playlist.duration();
	        this.playlist.jumpTo(ms);
	        
			var plb = this.player.getElement('.wxp-play');
			if (!plb.hasClass('hidden')) {
				plb.addClass('hidden');
				this.player.getElement('.wxp-pause').removeClass('hidden');
			}

	    }.bind(this));
	    
	    $('wxp-openrate').addEvent('click', function(e) { this.openSongInfo(1); }.bind(this));
	    $('wxp-openlyrics').addEvent('click', function(e) { this.openSongInfo(2); }.bind(this));
	},
	startSongs : function() {
		var sst = function(song) {
			song.fx = new Fx.Morph(song, {duration:300, wait:false});
			 
			
			
			song.addEvent('mouseenter', function(e) {
				var t = e.target;
				if (!t.hasClass('tanx-song'))
					t = t.getParent();
				if (!t.hasClass('selected'))
					t.fx.start({'width': 175, 'border-color': '#000000', 'color' : '#ffd582'});
			});
		 	song.addEvent('mouseleave', function(e) {
				var t = e.target;
				if (!t.hasClass('tanx-song'))
					t = t.getParent();
				if (!t.hasClass('selected'))
					t.fx.start({'width': 150, 'border-color' : '#5d1a1a', 'color' : '#f59c66'});
			});
			song.addEvent('click', function(event) {
				this.playSong(event);
			}.bind(this));
		}.bind(this);
		$$('div.tanx-song').each(sst);
	},
	pauseSong : function () {
		this.playlist.pauseSounds();
		this.player.getElement('.wxp-pause').addClass('hidden');
		this.player.getElement('.wxp-play').removeClass('hidden');
	},
	resumeSong : function () {
		this.playlist.resumeSounds();
		this.player.getElement('.wxp-play').addClass('hidden');
		this.player.getElement('.wxp-pause').removeClass('hidden');

	},
	openSongInfo : function (tab) {
		tanx.moodal.openWindow('song.php?songid='+this.playEl.get('wx-id')+'&tab='+tab);
	},
	playSong : function (event) {
		var element = $(event.target);
		if (!element.hasClass('tanx-song'))
			element = element.getParent('.tanx-song');
		this.playEl = element;
		
		// remove previous 'selected' class
		$$('div.tanx-song').each(
			function (el) {
				if (element != el && el.hasClass('selected')) {
					var si = el.getElement('div.songinfo');
						if (si) si.destroy();
					el.removeClass('selected');
					el.fx.start({'width': 150, 'border-color' : '#5d1a1a', 'color' : '#f59c66'});
				}
			}.bind(element)
		);
		
		var plb = this.player.getElement('.wxp-play');
		// switch player buttons
		if (!plb.hasClass('hidden')) {
			plb.addClass('hidden');
			this.player.getElement('.wxp-pause').removeClass('hidden');
		}
		var sPlayed = this.playEl.get('wx-played');
		var sRateAvg = this.playEl.get('wx-rateavg');
		var sRates = this.playEl.get('wx-rates');
		
		$('wxp-played').set('text', sPlayed);
		$('wxp-rates').set('text', sRates);
		
		var rateCountEl = $('wxp-ratetext');
		var rtxt = rateCountEl.get('wx-text');
		var pos = rtxt ? rtxt.indexOf('|') : false;
		if (pos != -1) {
			var sfs = rtxt.substring(pos+1).split(',');
			rtxt = rtxt.substring(0, pos);
			if (sRates == 1) {
				rtxt = rtxt + sfs[0];
			} else if (sRates > 1 && sRates < 5) {
				rtxt = rtxt + sfs[1];
			} else {
				rtxt = rtxt + sfs[2];
			}
		} else {
			if (sRates == 1)
				rtxt = rtxt.substring(0, rtxt.length-1);
		}
		rateCountEl.set('text', rtxt);
		
		var rbase = Math.floor(sRateAvg);
		var rsub = sRateAvg.substring(1);
		if (rsub.length < 1 && rbase > 0) rsub = '.0';
		if (rbase > 0) {
			$('wxp-rateavg').set('html', '<div class="smrate r'+rbase+'"> '+rbase+'<span class="smrsub">'+rsub+'</span> </div>');
			$('wxp-rateavg').setStyle('display','block');
		} else {
			$('wxp-rateavg').setStyle('display','none');
		}
		
		
		
		if (!element.hasClass('selected')) {
			element.addClass('selected');
			var info = new Element('div', {'class' : 'songinfo'});
			info.set('text', 'i');
			//info.inject(element, 'top');
			info.addEvent('click', function(e) {
				//tanx.moodal.openWindow('song.php?songid='+this.getParent().get('wx-id'));
				return false;
			});
		}
		var pos = element.getCoordinates();
		
		var ptop = pos.top;
		if (ptop > 170) ptop = 170;
		if (this.player.hasClass('opaque')) {
			this.player.setStyle('top', ptop);
			this.player.setStyle('left', pos.left+pos.width+30);
			
			var pco = this.player.getCoordinates();
			
			this.player.getPrevious().setCoordinates(pco.left, pco.top, pco.width, pco.height);

			var st = this.player.getPrevious().getPrevious(); var sb = st.getPrevious(); var sl = sb.getPrevious(); var sr = sl.getPrevious();
			st.setCoordinates(pco.left, pco.top-4, pco.width, 4);
			sb.setCoordinates(pco.left, pco.top+pco.height, pco.width, 4);
			sl.setCoordinates(pco.left-4, pco.top, 4, pco.height);
			sr.setCoordinates(pco.left+pco.width, pco.top, 4, pco.height);
			
			new Fx.Tween(this.player, {duration:350, property: 'opacity'}).start(0, 1);
			new Fx.Tween(this.player.getPrevious(), {duration:1800, property: 'opacity'}).start(0, 0.5);
			new Fx.Tween(st, {duration:1800, property: 'opacity'}).start(0, 1);
			new Fx.Tween(sb, {duration:1800, property: 'opacity'}).start(0, 1);
			new Fx.Tween(sl, {duration:1800, property: 'opacity'}).start(0, 1);
			new Fx.Tween(sr, {duration:1800, property: 'opacity'}).start(0, 1);
			this.player.removeClass('opaque');
			
			$$('div.wxp-position').setStyle('width', '2px');
		} else {
			if (this.player.mover == null)
				this.player.mover = new Fx.Tween(this.player, {duration:400});
			if (this.player.getPrevious().mover == null) this.player.getPrevious().mover = new Fx.Tween(this.player.getPrevious(), {duration:400});
			
			var st = this.player.getPrevious().getPrevious(); var sb = st.getPrevious(); var sl = sb.getPrevious(); var sr = sl.getPrevious();
			if (st.mover == null) st.mover = new Fx.Tween(st, {duration:400});
			if (sb.mover == null) sb.mover = new Fx.Tween(sb, {duration:400});
			if (sl.mover == null) sl.mover = new Fx.Tween(sl, {duration:400});
			if (sr.mover == null) sr.mover = new Fx.Tween(sr, {duration:400});
			
			
			
			this.player.mover.start('top', this.player.getCoordinates().top, ptop);
			this.player.getPrevious().mover.start('top', this.player.getCoordinates().top, ptop);
			st.mover.start('top', st.getCoordinates().top, ptop-4);
			sb.mover.start('top', sb.getCoordinates().top, ptop+sl.getCoordinates().height);
			sl.mover.start('top', sl.getCoordinates().top, ptop);
			sr.mover.start('top', sr.getCoordinates().top, ptop);

			
		}
		
		var songid = element.get('wx-id');
	    var options = {
	            'onRegister': function() { },
	            'onLoad': function() { },
	            'onPause': function() { },
	            'onPlay': function() { /* this.el.addClass('playing'); */ },
	            'onStop': function() { /*alert ('stop');*/ },
	            'onProgress': function(loaded, total) {
	                var percent = (loaded / total).round(2);
	                this.player.getElement('.wxp-seekbar').setStyle('width', 100*percent);
	            }.bind(this),
	            'onPosition': function(position,duration) {
	            	
	                var percent = (position/duration).round(2);
	                this.player.getElement('.wxp-position').setStyle('left', 100*percent);

					var pm = Math.floor(position/60);
					var dm = Math.floor(duration/60);
					var ps = (position-pm*60);
					var ds = (duration-dm*60);
					var d = this.playEl.get('wx-dur');
					if ((""+ps).length == 1) ps = "0"+ps;
					if ((""+ds).length == 1) ds = "0"+ds;
					//var info = pm+":"+ps+" / "+dm+":"+ds;
					var info = pm+":"+ps+" / "+d;
					if (position == 0) info = "";
					this.player.getElement('.wxp-info').set('text', info);
					
					if (position == duration) {
						this.randomNext();
					}
	            }.bind(this),
	            'onID3': function(key, value) { }
	            
	        };
	    this.playlist.stopSounds();
		this.playlist.playSound('stream.php?songid='+songid, options);
	},
	randomNext : function () {
		var songs = $$('div.tanx-song');
		while (true) {
			var next = songs[Math.floor(Math.random()*songs.length)];
			if (next != this.playEl) break;
		}
		next.fx.start({'width': 175, 'border-color': '#000000', 'color' : '#ffb552'});
		this.playSong({target: next});
	},
	introChain : function( ) {

	}

});