var Download = Class.create(
{
	initialize: function(id)
	{
		this.id		= id;
		this.what	= ($$('#content h1 span b')[0] ? ($$('#content h1 span b')[0].innerHTML=='Stream'?'stream':'dl') : 'dl');
		
		if($('requestTicket'))
			$('requestTicket').observe('click', this.request.bind(this)).wrap('div').setStyle({position:'relative'}).id = 'dlall';
	},
	
	request: function()
	{
		var c = $('dlall');
		
		c.setStyle({height:c.down('img').getHeight()+'px'});
		c.down('img').replace('<img style="margin-top:20px" src = "img/load/arbig.gif" />');
		
		new Ajax.Request('james/ticket/'+this.what+'/'+this.id, {onComplete:function(t){
			var r = t.responseText.evalJSON();
		
			if(r.err)
				return this.ticketError(r.err);

			this.wait = parseInt(r.wait);
			this.url  = r.url;

			if(this.what == 'stream')
			{
				this.height = r.height;
				this.flash	= r.flash;
			}
			
			c.down('img').remove();
			
			c.insert({top:'<div style="float:right;margin-right:70px;position:relative;display:none;color:#a6a3eb">' +
				'	<img src="img/elem/dlprem_en.jpg" onclick="cFoyer.registerPrem()" style="cursor:pointer;margin-top:-31px" /><br />' +
				'	<h2>&hellip;Or buy a Premium account<br />and download instantly with full speed</h2>' +
				'</div>' +
				'<table style="display:none;float:left;width:400px;margin-left:70px;color:#a6a3eb">' +
				'	<tr>' +
				'		<td style="height:162px;width:118px;vertical-align:middle"><img src="img/elem/clock.jpg" /></td>' +
				'		<td style="vertical-align:top">' +
				'			<div style="margin:40px auto 0 auto">' +
				'				<div id="min" style="margin:0;color:#160250;font-size:42px;height:44px;text-shadow:#8492d8 2px 2px 2px;"><b>&hellip;</b>&nbsp;<span>Minuten</span></div>' +
				'				<div id="sec" style="margin:0;color:#4321a5;font-size:32px;text-shadow:#8492d8 1px 1px 1px;"><b>&hellip;</b>&nbsp;<span>Seconds</span></div>' +
				'			</div>' +
				'		</td>' +
				'	</tr>' +
				'	<tr>'+
				'		<td colspan="2" style="padding-top:10px"><h2 id="dlwait">Please be patient for a while&hellip;</h2></td>' +
				'	</tr>' +
				'</table>'}).down('div').appear({delay:2.5,duration:.5});
			c.down('table').appear({duration:4,delay:.5});
			
			if(r.wait > 1800)
			{
				c.morph('height:320px', {duration:.45});
				c.insert({top:'<div style="margin:-5px 0 32px 0" id="dllimit"><img src="img/elem/limit_en.png" class="link" onclick="cFoyer.registerPrem()" /></div>'});
				$('dllimit').pulsate();
			}
			else
				c.morph('height:213px', {duration:.45});
			
			this.countDown(r.wait);
		}.bind(this)});
	},
	
	ticketError: function(err)
	{
		var c = $('dlall');
		c.morph('height:505px', {delay:2.5,duration:.5});
		c.down('img').replace('<div class="mtbl" style="display:none">' +
			'	<img src="img/elem/mtbl_bluebg_en.jpg" onclick="cFoyer.registerPrem()" style="cursor:pointer" />' +
			'	<div style="position:relative;margin-top:15px;text-align:center;width:550px;font-size:14px">' +
			'		Please choose the type of your membership.<br />' +
			'		<small style="color:#aaa9ee">Subsequently you\'ll receive further informations &amp; are able to complete the registration process.</small>' +
			'		'+(($('status') && $('status').value=='free')?'':'<h1 id="free" style="position:absolute;top:0;right:-95px"><img src="img/sym/globe.png" style="vertical-align:bottom" /> <span class="link" onclick="cFoyer.registerFree()" style="text-shadow:#5855aa 2px 1px 2px">Free</span></h1>') +
			'		<h1 id="prem" style="position:absolute;top:0;right:-300px"><img src="img/sym/crown.png" style="vertical-align:bottom" /> <span class="link" onclick="cFoyer.registerPrem()" style="text-shadow:#5855aa 2px 1px 2px">Premium</span></h1>' +
			'	</div>' +
			'</div>');
		c.down('div.mtbl').appear({delay:2.5});
		switch(err)
		{
			case 'limit-dl':
				c.insert({top:'<div style="display:none;margin:5px 0 20px 0" id="dllimit"><img src="img/elem/limit_en.png" class="link" onclick="cFoyer.registerPrem()" /></div>'});
			break;
			
			case 'limit-parallel':
				c.insert({top:'<div style="display:none;margin:5px 0 20px 0" id="dllimit"><img src="img/elem/limit_parallel_en.png" class="link" onclick="cFoyer.registerPrem()" /></div>'});
			break;
		}
		$('dllimit').appear({duration:.5}).pulsate({delay:.5,pulses:2});
		return;
		c.next('p').fade({duration:3});
	},
	
	countDown: function(remaining)
	{
		var mins = (remaining>60 ? (remaining/60).floor() : false);
		var secs = (remaining-(mins*60));
		
		if(secs == 0 && mins)
		{
			mins--;
			secs = 60;
		}
		
		if(mins)
		{
			$('min').down('b').update(mins);
			$('min').down('span').update(mins != 1 ? 'Minuten' : 'Minute');
		}
		else
			if($('min').visible())
			{
				$('min').up('div').morph('margin:20px auto 0 auto');
				$('min').select('b, span').invoke('fade', {duration:.4});
				$('sec').morph('color:#160250', {duration:.6});
			}
		
		if(!mins && secs==1)
			$$('#dlall>div, #dlwait').invoke('fade', {duration:1});
		
		
		if((secs > 0) || (secs == 0 && mins))
		{
			$('sec').down('b').update(secs);
			$('sec').down('span').update(secs != 1 ? 'Seconds' : 'Second');
		}
		else
			return this.unveil(this.what);
		
		remaining = remaining-1;
		setTimeout(function(){ this.countDown(remaining); }.bind(this), 1000);
	},
	
	unveil: function(what) // just try it dude
	{
		$$('#dlall>div, #dlwait').invoke('hide');
	
		$('sec').fade({duration:.3}).up('div').morph('margin-top:-10px', {duration:.4});
		$('dlall').insert({top:'' +
			'<div id="letsgo" style="display:none;position:absolute;top:100px;left:250px;text-align:left">' +
			'	<big style="color:#4b4791">Thank you for your patience.</big>' +
			'	<h1><img src="img/sym/'+(what=='dl'?'globe':'film')+'.png" style="margin:0 7px 0 -25px" /><span class="link" style="text-shadow:#5855aa 1px 1px 2px">'+('%type now').sub('%type', $$('#content h1 span b')[0].innerHTML)+'</span></h1>' +
			'</div>'}).down('#letsgo').morph('top:60px', {duration:.5}).appear({duration:.5});
		
		if(what == 'stream')
		{
			var width = 954;
			
			$('letsgo').down('h1 span').observe('click', function()
			{
				$('dlall').replace('<embed src="swf/jwplayer.swf" width="'+width+'" height="'+this.height+'"" bgcolor="#736dd0"' +
					' allowscriptaccess="always" allowfullscreen="true" flashvars="type=video&plugins=hd-1'+this.flash+'"' +
					' style="margin:-16px -14px 0 -14px" /><br />' +
					'<img src="img/elem/dlstream_en.png"' +
					' onclick="if(confirm(\'The download of videos is reserved for premium members.\\nBecome a premium member now.\')) window.location.href=\'/foyer\';"' +
					' style="cursor:pointer;float:right;padding-top:10px" />');
			}.bind(this));
		}
		else
		{
			$('letsgo').down('h1 span').observe('click', function(){
				var c = $(this);
				c.stopObserving();
				c.update('Download started&hellip;');
				c.previous('img').setAttribute('src', 'img/sym/drive-download.png');
				c.setStyle({color:'#e6e5f9',textShadow:'#5855aa 1px 0px 3px'}).removeClassName('link');
				
				if(Prototype.Browser.IE)
					window.location.href = cDownload.url;
				else
					setTimeout(function(){ window.location.href = cDownload.url; }, 300);
			});
		}
	},
	
	togglePlayer: function(mode)
	{
		var emb = $$('embed')[0];
		
		if(getUserScreen().width<1000)
			return alert('Leider ist Ihre Bildschirmauflösung/Fenstergröße zu klein für diese Funktion.');
		
		if(mode == 'expand')
		{
			$$('body')[0].setStyle({overflowY:'hidden'});
			this.player = {height:emb.getHeight(),width:emb.getWidth(),margin:emb.style.margin};
			new Effect.ScrollTo($$('body')[0]);
			emb.morph('height:'+(getUserScreen().height-30)+'px;width:'+(getUserScreen().width+16)+'px');
			emb.morph('margin:-'+(emb.cumulativeOffset()[1]-30)+'px 0 -100px -'+(emb.cumulativeOffset()[0])+'px', {delay:.1});
			$('body').insert({bottom:'<div style="display:none;position:fixed;top:0;right:0;bottom:0;left:0;width:'+(getUserScreen().width+17)+'px;height:'+(getUserScreen().height)+';padding:6px 10px 0 0;background:#000;color:#eee;font-size:11px"><span style="float:right;cursor:pointer" onclick="cDownload.togglePlayer()">Close &nbsp;<img src="img/sym/cross.png" style="vertical-align:middle" /></span></div>'});
			$('body').select('div').last().appear({duration:.5,transition:Effect.Transitions.linear});
		}
		else
		{
			$$('body')[0].setStyle({overflowY:'auto'});
			emb.morph('width:'+this.player.width+'px;height:'+this.player.height+'px', {transition:Effect.Transitions.spring});
			emb.morph('margin:0 0 0 0', {transition:Effect.Transitions.spring});
			$('body').select('div').last().fade({duration:.5,transition:Effect.Transitions.linear});
		}
		
	},
	
	access: function()
	{
		if($$('embed')[0])
			$$('embed')[0].hide();
		
		overlay('<form><h1 style="position:relative;margin:0 auto;width:60%">' +
				'	Admin-Code:<input type="password" style="margin-left:40px;width:190px;font-size:23px" />' +
				'	<button style="cursor:pointer;height:32px" id="access" type="submit"><img src="img/sym/key.png" /></button>' +
				'	<small style="z-index:999999;position:absolute;bottom:-15px;right:158px;color:#aaa6f0;font-size:11px" class="link" onclick="$(this).previous(\'input\').type = \'text\';$(this).hide()">Eingabe im Klartext anzeigen</small>' +
				'</h1></form>', {afterExit:function(){if($$("embed"))$$("embed")[0].show();}}).appear({duration:.4}).down('div').morph('margin-top:170px', {duration:.4});
		setTimeout("$('overlay').down('input').focus()", 200);
		$('access').up('form').observe('submit', function(e){
			e.stop();
			$('access').update('<img src="img/load/butload.gif" />').disabled = true;
			$('access').previous('input').type = 'password';
			
			new Ajax.Request(this.id+'/access', {parameters:'code='+$('access').previous('input').value,onComplete:function(t){
				var r = t.responseText.evalJSON(true);
				
				if(r.err)
				{
					alert(r.err);
					$('access').update('<img src="img/sym/key.png" />').disabled = false;
					$('access').previous('input').select();
					$('access').next('small').show();
				}
				else
					this.administrate(r);
			}.bind(this)});
		}.bind(this));
	},
	
	administrate: function(obj)
	{
		$('overlay').down('div div').update('<div>' +
			'	<h1 style="margin:0">' +
			'		<img src="img/sym/'+(obj.mutateable?'disk':'film')+'.png" />' +
			'		'+$$('#content h1 span')[1].innerHTML +
			'	</h1>' +
			'	<small style="padding-left:23px;color:#aaa6f0">Hochgeladen vor <b>'+obj.date+'</b>.</small>' +
			'	<h2 style="margin:15px 0 0 0"><img src="img/sym/cross.png" /> <span class="link deleteUpload">delete uploads</span></h2>' +
		//	(!obj.mutateable?'<h2 style="margin:5px 0 0 0"><span></span><span style="display:none">'+$$('#content h1 span')[0].innerHTML+'</span><img src="img/sym/burn.png" class="mutate" /> <span class="link" onclick="cUpload.mutate(\''+obj.id+'\', $(this).up(\'h2\'));$(this).update(\'<small>Konvertierungsphase eingeleitet&hellip;</small>\').removeClassName(\'link\').setStyle({color:\'#aaa6f0\'}).onclick = \'\'">Video als Stream anbieten</span></h2>':'')+
			'<h2 class="link" style="z-index:1000;position:absolute;bottom:-25px;right:50px;color:#7a7abf" onclick=\'$("overlay").fade({duration:.3});if($$("embed"))$$("embed")[0].show();\'>Close</h2>');
		$$('#overlay span.deleteUpload')[0].observe('click', function(){
			if(confirm('Möchten Sie diesen Upload wirklich löschen?'))
			{
				new Ajax.Request('james/my/upload/'+this.id+'/delete');
				$('overlay').morph('background:#000', {duration:1}).down('div div').highlight().update('<h1 style="margin:0 auto;width:300px;text-align:center;font-size:33px;">Upload deleted.<br /><a href="/" style="color:#777;font-size:11px" class="link">Click here in order to return to index page.</a></h1>');
			}
		}.bind(this));
	}
});

var cDownload;

ifReady(function(){
	if(dlID)
		cDownload = new Download(dlID);
	});