function disableSelection(element) {
	element.onselectstart = function() {
		return false;
	};
	element.unselectable = "on";
	element.style.MozUserSelect = "none";
	element.style.cursor = "default";
}

var ghosting = true;
if(navigator.userAgent.indexOf("MSIE") != -1) { ghosting = false; }

var playTrackButton = function( e ) 
{
	var trackID = e.element().up('a').id.substr(11);
	selectNone();
	e.element().up('li').removeClassName('highlighted');
	e.element().up('li').addClassName('selected');
	playTrack(trackID);
	e.stop();
}

var playTrackDblClick = function (event)
{
	var trackID = event.element().up('li').down('.track-play').id.substr(11);
	selectNone();
	event.element().up('li').addClassName('selected');
	playTrack(trackID);
	event.stop();
}

var updateDownloads = function( txt )
{
	$('plugDownloadsList').update(txt);
}

var playTrack = function( trackID )
{	
	$('track-description').update('<img src="/staticfiles/img/global/ajax-loading.gif" />');

	// Make the request
	new Ajax.Updater('track-description', '/track/index', {
		method: 'get',
		parameters: {'id' : trackID },
		onComplete: function() {
			var mp3 = $('player').down('a').href;
			var flashvars = {soundFile:mp3, autostart: 'yes'};
			var params = {movie:"/staticfiles/swf/app/player.swf", wmode: "transparent", allowScriptAccess:"sameDomain" };
			var attributes = {};
			swfobject.embedSWF("/staticfiles/swf/app/player.swf", "player", "250", "30", "9.0.0", 'expressInstall.swf', flashvars, params, attributes);
		}
	} );
}

var addToPlaylistDraggable = function ( dragElem, dropElem )
{
	var elemID = "";
	var firstloop = true;
	var playlistID = $(dropElem).id.substr(9);
	
	$$('#list-body li.selected').each( function(elem) {
		if(!firstloop) { elemID += '_'; }
	
		var id_tag = elem.down('a.track-play').id;
		elemID += id_tag.substr(11);
	
		firstloop = false;
	} );
	if(elemID.length == 0)
	{
		var id_tag = dragElem.down('a.track-play').id;
		elemID += id_tag.substr(11);
	}

	new Ajax.Updater('plugPlaylistsList', '/playlists/add_to_playlist', {
		method: 'post',
		parameters: {'id' : elemID, 'playlist' : 'current', 'current_playlist' : playlistID },
		evalScripts: true,
		onComplete: function()
		{
			if (document.all) { Droppables.drops = []; }
			document.fire('playlists:loaded');				
		}
	});
}

var addToPlaylist = function( event )
{
	var elem = new Element('div', { id:'temp-div', style: 'display: none;' } );
	document.body.appendChild( elem );
	
	document.observe('lw:complete', plListener, false);
	
	if( event.element().up('a').id.substr(15) )
	{
		var el =  event.element().up('a').id.substr(15)		

		// Make the request
		new Ajax.Updater(elem.identify(), '/playlists/add', {
			method: 'post',
			parameters: {'id' : el },
			evalScripts: true,
			onComplete: function()
			{
				document.observe('lw:complete', plListener, false);
				myLightWindow.activateWindow({
					type: 'inline',
					href: elem.identify(), 
					title: 'Add to playlist', 
					width: 300,
					height: 100
				});
			}
		});
	}
	event.stop();	
}

var plListener = function( event )
{
	$('add-to-playlist').observe('submit', function( e ) { 
		e.element().request( {
			onComplete: function() { 
				new Ajax.Updater('plugPlaylistsList', '/playlists/lists', {
					evalScripts: true,
					onComplete: function() {
						// document.fire('playlists:loaded');	
					}
				});
				myLightWindow.deactivate();

				document.stopObserving('lw:complete');

			} 
		} ); 
		e.stop();
	}, false);
	if(	$('temp-div'))
	{
		$('temp-div').remove();
	}
}

var dlListener = function( event )
{

}

var removeFromPlaylist = function( event )
{
	// Make the request
	new Ajax.Updater('main-body', '/playlists/remove_from_playlist', {
		method: 'post',
		parameters: { 'id' : event.element().up('a').id.substr(13), 'playlist' : $('playlist-id').innerHTML },
		evalScripts: true,
		onComplete: function() {
			document.fire('playlists-page:loaded');
		}
	});

	event.stop();
}

var saveTrack = function( event )
{
	saveTracks( event.element().up('a').id.substr(11) );
	event.stop();
}

var showEdits = function( event )
{
	var id = (event.element().up('a').id.substr(16));
	
	var elid = 'track-edits-' + id;
	// hide other edits
	// $$('.track-edits').each( function( elem ) { if(elem.id != elid) { elem.hide(); } } );

	$(elid).toggle();
	$('track-row-'+id).addClassName('versions-open')		

	if($(elid).visible())
	{
		$(elid).update('<img src="/staticfiles/img/global/ajax-loading.gif" />');

		new Ajax.Updater($(elid), '/select/get_edits', {
			method: 'get',
			parameters: {'id': id},
			evalScripts: true,
			onComplete: function()
			{
				$$('.track-edits .search-item').each( function (elem) {elem.observe('dblclick', playTrackDblClick, false); } );
				$$('.track-edits .track-play').each( function( elem ) { 
					elem.observe('click', playTrackButton, false); 
					elem.observe('click', sendToActionScriptEdit, false); 
				} );
				$$('.track-edits .track-playlist').each( function( elem ) { elem.observe('click', addToPlaylist, false); } );
				$$('.track-edits .track-save').each( function( elem ) { elem.observe('click', saveTrack, false); } );

				$$('.track-edits li.search-item').each( function(elem)
				{ 
					elem.observe( 'mouseover', highlightRow, false );
					elem.observe( 'click', sendToActionScriptEdit, false );
					elem.observe( 'click', selectRow, false );
					if(elem.hasClassName('draggable'))
					{
						try { new Draggable(elem, { 
								'ghosting': ghosting,
								revert: true
							}); 
							disableSelection(elem);
						} catch (e) {}
					}
				});
				
				$$('.track-edits li.search-item span.track-select').each( function(elem)
				{ 
					elem.observe( 'mouseover', highlightRow, false );
					elem.observe( 'click', sendToActionScriptEdit, false );
					elem.observe( 'click', selectRow, false );
					var lis = elem.up('li.search-item');
					if(lis.hasClassName('draggable'))
					{
						try { new Draggable(lis, { 
								'ghosting': ghosting,
								revert: true
							}); 
							disableSelection(elem);
						} catch (e) {}
					}
				});

				$$('li.search-item').each( function(elem) { elem.observe( 'mouseover', highlightRow, false ); } );
				$$('li.search-item').each( function(elem) { 
					elem.observe( 'click', sendToActionScriptEdit, false );
					elem.observe( 'click', selectRow, false ); 
				} );

				$$('.track-edits li.search-item span.track-select').each( function(elem) { elem.observe( 'mouseover', highlightRow, false ); } );
				$$('li.search-item span.track-select').each( function(elem) { 
					elem.observe( 'click', sendToActionScriptEdit, false );
					elem.observe( 'click', selectRow, false );
				} );
			}
		});
	}
	else
	{
		$('track-row-'+id).removeClassName('versions-open')		
	}

	event.stop();
}

var selectAll = function(event)
{
	$$('li.search-item').each( function(elem) { elem.addClassName('selected'); } );
	event.stop();	
}

var selectNone = function(event)
{
	$$('li.search-item').each( function(elem) { elem.removeClassName('selected'); } );
	if(event)
	{
		event.stop();	
	}
}

var addSelectedToPlaylist = function(event)
{
	var ids = "";
	var firstloop = true;
	$$('#list-body li.selected').each( function(elem) {
		if(!firstloop) { ids += '_'; }

		var id_tag = elem.down('a.track-play').id;
		ids += id_tag.substr(11);

		firstloop = false;
	} );
	
	var elem = new Element('div', { style: 'display: none;' } );
	document.body.appendChild( elem );		

	new Ajax.Updater(elem.identify(), '/playlists/add', {
		method: 'post',
		parameters: {'id' : ids },
		evalScripts: true,
		onComplete: function()
		{
			document.observe('lw:complete', plListener, false);
			
			myLightWindow.activateWindow({
					type: 'inline',
					href: elem.identify(), 
					title: 'Add to playlist', 
					width: 300,
					height: 100
			});
		}
	});

	event.stop();	
}

var saveSelected = function(event)
{
	var ids = "";
	var firstloop = true;
	$$('#list-body li.selected').each( function(elem)
	{
		if(elem.down('a.track-save'))
		{
			if(!firstloop)
			ids += '_';

			var id_tag = elem.down('a.track-play').id;
			ids += id_tag.substr(11);

			firstloop = false;
		}
	});	
	saveTracks( ids );
	event.stop();
}
var saveSelectedDrag = function(event)
{
	var ids = "";
	var firstloop = true;
	$$('#list-body li.selected').each( function(elem)
	{
		if(elem.down('a.track-save'))
		{
			if(!firstloop)
			ids += '_';

			var id_tag = elem.down('a.track-play').id;
			ids += id_tag.substr(11);

			firstloop = false;
		}
	});	
	saveTracks( ids );

}
var saveTracks = function( ids )
{
	document.observe('lw:complete', dlListener, false);
	
	myLightWindow.activateWindow({
			type: 'external',
			href: '/downloads/mcps?id='+ids, 
			title: 'Download tracks', 
			width: 600,
			height: 300
	});
}

var lwcloser = function()
{
	new PeriodicalExecuter(function(pe) {
		myLightWindow.deactivate();
	 	pe.stop();
	}, 0.5);
}

var removeSelected = function()
{
	var ids = "";
	var firstloop = true;
	$$('#list-body li.selected').each( function(elem) {
		if(!firstloop)
		ids += '_';

		var id_tag = elem.down('a.track-play').id;
		ids += id_tag.substr(11);

		firstloop = false;
	} );
	
	new Ajax.Updater('main-body', '/playlists/remove_selected', {
		method: 'post',
		parameters: { 'playlist' : $('playlist-id').innerHTML, 'ids' : ids },
		evalScripts: true,
		onComplete: function() {
			document.fire('playlists-page:loaded');
		}
	});

	event.stop();
}

var removeAll = function()
{
	// Make the request
	new Ajax.Updater('main-body', '/playlists/remove_all', {
		method: 'post',
		parameters: { 'playlist' : $('playlist-id').innerHTML },
		evalScripts: true,
		onComplete: function() {
			document.fire('playlists-page:loaded');
		}
	});

	event.stop();
}

var searchcomplete = function()
{ 
	$$('.search-item').each( function (elem) {elem.observe('dblclick', playTrackDblClick, false); } );

	$$('.track-edits').each( function( elem ) { elem.hide(); } );
	$$('.track-play').each( function( elem ) { 
		elem.observe('click', playTrackButton, false);
		elem.observe('click', sendToActionScript, false); 
	} );
	$$('.track-playlist').each( function( elem ) { elem.observe('click', addToPlaylist, false); } );
	$$('.track-save').each( function( elem ) { elem.observe('click', saveTrack, false); } );
	$$('.track-showEdits').each( function( elem ) { elem.observe('click', showEdits, false); } );
	
	$$('li.search-item').each( function(elem)
	{ 
		elem.observe( 'mouseover', highlightRow, false );
		elem.observe( 'click', sendToActionScript, false );
		elem.observe( 'click', selectRow, false );
		if(elem.hasClassName('draggable'))
		{
			try { new Draggable(elem, { 
					'ghosting': ghosting,
					revert: true
				}); 
				disableSelection(elem);
			} catch (e) {}
		}
	});
	
	$$('li.search-item span.track-select').each( function(elem)
	{ 
		elem.observe( 'mouseover', highlightRow, false );
		elem.observe( 'click', sendToActionScript, false );
		elem.observe( 'click', selectRow, false );
		var lis = elem.up('li.search-item');
		if(lis.hasClassName('draggable'))
		{
			try { new Draggable(lis, { 
					'ghosting': ghosting,
					revert: true
				}); 
				disableSelection(elem);
			} catch (e) {}
		}
	});

	try { $$('.track-remove').each( function(elem) { elem.observe('click', removeFromPlaylist, false) } ); } catch(e) {}
	
	if($('SelectAll') && $('SelectNone') && $('SelectedToPlaylist') && $('SelectedDownload'))
	{
		$('SelectAll').observe('click', selectAll);
		$('SelectNone').observe('click', selectNone);
		$('SelectedToPlaylist').observe('click', addSelectedToPlaylist);
		$('SelectedDownload').observe('click', saveSelected);
	}
	
	if($('remove-selected')) { $('remove-selected').observe('click', removeSelected); }
	if($('remove-all')) { $('remove-all').observe('click', removeAll); }
	
	var albums = new Array;
	$$('span.track-cat-no').each( function(el) { 
		albums.push( el.innerHTML );
	} );
	albums = albums.uniq().join(',');

	if($('discs'))
	{
		var flashvars = {xmlurl:"/albums/index?albums="+albums, coversurl:"/albums/size/120/120/"};
		var params = {movie:"/staticfiles/swf/app/FlashFlow.swf", bgcolor:"#000000", allowScriptAccess:"sameDomain", wmode: "opaque", name: 'flashFlow', swLiveConnect: true};
		var attributes = { name: 'flashFlow', id: 'flashFlow' };
		swfobject.embedSWF("/staticfiles/swf/app/FlashFlow.swf", "discs", "505", "200", "9.0.124", "expressInstall.swf", flashvars, params, attributes);
		document.fire('flashflow:loaded');
	}

}

var playlistsLoaded = function()
{
	if (document.all) { Droppables.drops = []; }
	$$('#playlists li').each( function( elem )
	{
		if(elem.id != 'edit-playlists')
		{
			try
			{
				Droppables.add(elem, {accept: 'draggable', hoverclass: 'hover', onDrop: addToPlaylistDraggable });
			}
			catch (e)
			{
				alert(e);
			}
		}
	} );
	if( $('downloads-drop-box') )
	{
		Droppables.add($('downloads-drop-box'), {accept: 'draggable', hoverclass: 'hover', onDrop: saveSelectedDrag });
	}
}

var playlistsPageLoaded = function()
{
	new Ajax.Updater('plugPlaylistsList', '/playlists/lists', {
		method: 'post',
		evalScripts: true,
		onComplete: function() {
			try { $$('.track-remove').each( function(elem) { elem.observe('click', removeFromPlaylist, false) } ); } catch(e) {}

			$$('li.search-item span.track-select').each( function(elem)
			{ 
				elem.observe( 'mouseover', highlightRow, false );
				elem.observe( 'click', sendToActionScript, false );
				elem.observe( 'click', selectRow, false );
				var lis = elem.up('li.search-item');
				if(lis.hasClassName('draggable'))
				{
					try { new Draggable(lis, { 
							'ghosting': ghosting,
							revert: true
						}); 
						disableSelection(elem);
					} catch (e) {}
				}
			});
			
			var albums = new Array;
			$$('span.track-cat-no').each( function(el) { 
				albums.push( el.innerHTML );
			} );
			albums = albums.uniq().join(',');
			
			if($('discs'))
			{
				var flashvars = {xmlurl:"/albums/index?albums="+albums, coversurl:"/albums/size/120/120/"};
				var params = {movie:"/staticfiles/swf/app/FlashFlow.swf", bgcolor:"#000000", allowScriptAccess:"sameDomain", wmode: "opaque", name: 'flashFlow', swLiveConnect: true};
				var attributes = { name: 'flashFlow', id: 'flashFlow' };
				swfobject.embedSWF("/staticfiles/swf/app/FlashFlow.swf", "discs", "505", "200", "9.0.124", "expressInstall.swf", flashvars, params, attributes);
			}
		}
	});
}

function selectRow( event )
{
	$$('li.search-item').each( function(elem) { elem.removeClassName('highlighted'); } );
	
	if(!event.ctrlKey && !event.metaKey)
	$$('li.search-item').each( function(elem) { elem.removeClassName('selected'); } );

	var el = event.element();
	if(el.tagName != 'LI') { el = event.element().up('li.search-item'); }
	
	if(!el.hasClassName('selected'))
	{
		var trackID = el.down('.track-play').id.substr(11);
		$('track-description').innerHTML = '<img src="/staticfiles/img/global/ajax-loading.gif" />';

		// Make the request
		new Ajax.Updater('track-description', '/track/index', {
			method: 'get',
			parameters: {'id' : trackID },
			onComplete: function() {
				var mp3 = $('player').down('a').href;

				var flashvars = {soundFile:mp3, autostart: 'no'};
				var params = {movie:"/staticfiles/swf/app/player.swf", wmode: "transparent", allowScriptAccess:"sameDomain" };
				var attributes = {};

				swfobject.embedSWF("/staticfiles/swf/app/player.swf", "player", "250", "30", "9.0.0", 'expressInstall.swf', flashvars, params, attributes);
			}
		} );

		el.addClassName('selected');
	}
	else
	{
		// el.removeClassName('selected');
	}
}

function sendToActionScriptEdit( event )
{
	try
	{
		var el = event.element();
		if(el.tagName != 'LI') { el = event.element().up('li.search-item'); }
		
		$w(el.up('li.track-edits').previous('li').down('span.album-info', 0).className).each( function(c) {
			if(c.match('albumid-'))
			{ 
				var aid = c.replace('albumid-', '');
				$("flashFlow").showAlbumByArtName(aid);
			} 
		});
	}
	catch(e){}

	event.stop();
}

function highlightRow( event )
{
	$$('li.search-item').each( function(elem) { elem.removeClassName('highlighted'); } );

	var el = event.element();
	if(el.tagName != 'LI') { el = event.element().up('li.search-item'); }

	el.addClassName('highlighted');
}

function sendToActionScript( event ) {
	try
	{
		var el = event.element();
		if(el.tagName != 'LI') { el = event.element().up('li.search-item'); }
		
		$w(el.down('span.album-info', 0).className).each( function(c) {
			if(c.match('albumid-'))
			{ 
				var aid = c.replace('albumid-', '');
				$("flashFlow").showAlbumByArtName(aid);
			} 
		});
	}
	catch(e){}
	
	event.stop();
}

var showPage = function(e)
{
	// Effect.Fade('info', {
	// 	duration: 0.3,
	// 	to: 0,
	// 	afterFinish: function() {
	// 		$$('tr.search-item').each( function(elem) { elem.removeClassName('highlighted'); } );
	// 		$$('.page-link').each( function( elem ) {elem.removeClassName('selected')} );
	// 		var this_id = e.target.id.substr(10);
	// 		$('page-link-'+this_id).addClassName('selected');
	// 		$$('.items-page').each( function( elem ) {elem.hide()} );
	// 		$('page'+this_id).show();
	// 		$('info').show();
	// 		Effect.Fade('info', {duration: 0.3, to: 1.0});
	// 	}
	// });

}

var license_tabs = function()
{
	var t1 = $('tab1');
	var t2 = $('tab2');
	var t1l = $('tab1link');
	var t2l = $('tab2link');	

	t2l.observe('click', function(event)
	{
		t2l.toggleClassName('active');
		t1l.toggleClassName('active');	
					
		t2.toggleClassName('active-tab');		
		t1.toggleClassName('active-tab');
		event.stop();

	});
	t1l.observe('click', function(event)
	{
		t1l.toggleClassName('active');		
		t2l.toggleClassName('active');				

		t2.toggleClassName('active-tab');		
		t1.toggleClassName('active-tab');
		event.stop();
	});	
}
var testCookies = function(event)
{
	// add location to form
	el = new Element('input', {'type':'hidden', 'value':location.hash, 'name':'hash'});
	$('auth_login-form_submit').up('form').insert(el);	
	
	 var today = new Date();
	 var expire = new Date();
	 var nDays=0.001;
	 expire.setTime(today.getTime() + 3600000*24*nDays);
	 document.cookie = 'test'+"="+escape('1') + ";expires="+expire.toGMTString();
	
	if (document.cookie.indexOf('test')==-1)
	{
		var div = new Element('div', { 'class': 'no-cookies' });

		div.setStyle({'padding':'10px','width':'555px', 'height':'200px', opacity: 0.8, backgroundColor: '#ccc', 'position':'absolute', 'top':'120px', left:'270px', 'color':'#000', 'border':'2px double #000'});
		var div2 = new Element('div', { 'class': 'no-cookies-inner surround' });
		div2.update('<p style="font-size:16px;">Please enable cookies.</p><p style="font-size:16px;">This site required cookies for correct operation. For more information on enabling cookies click <a rel="external" style="color:#fff;" href="http://www.bbc.co.uk/privacy/cookies.shtml#s4" id="bbc-link" class="cookies-link" title="Cookies information">here</a> or <a href="#" class="cookies-link" style="color:#fff;" title="Close">close</a></p>');		
		div2.setStyle({backgroundColor: '#1B1B1B','width':'380px', 'padding':'10px', 'height':'123px', 'position':'absolute', 'top':'160px', left:'351px', 'color':'#FFF200', 'border':'2px double #000'});		

		$('wrapper').insert(div);
		$('wrapper').insert(div2);		

		if($$('.cookies-link').length)
		{
			$$('.cookies-link').each(function(item)
			{
				item.observe('click', function(event)
				{
					var ln = event.element();
					div.fade();
					div2.fade();
					if(ln.id != 'bbc-link')
					{
						Event.stop(event);						
					}
					else
					{
						ln.target="_blank";
					}

				}
				);
			}
		  );
		}
		Event.stop(event);
	}
}
var appscripts = function()
{	
	isIE6 = /msie|MSIE 6/.test(navigator.userAgent);
	
	if($('auth_login-form_submit') && !isIE6)
	{
		$('auth_login-form_submit').up('form').observe('submit', testCookies, false);
	}
	else if($('auth_login-form_submit'))
	{
		// add location to form
		el = new Element('input', {'type':'hidden', 'value':location.hash, 'name':'hash'});
		$('auth_login-form_submit').up('form').insert(el);
	}
	
	
	if($('downloads-drop-box'))
	{
		Droppables.add($('downloads-drop-box'), {accept: 'draggable', hoverclass: 'hover', onDrop: saveSelectedDrag });
	}
	
	if($('title-downloads'))
	{
		Droppables.add($('title-downloads'), {accept: 'draggable', hoverclass: 'hover', onDrop: saveSelectedDrag });
	}
		
	if($('auth_login-form_email'))
	{
		$('auth_login-form_email').observe('focus', function(e) {
			
			e.element().value = '';
			if($('auth_login-form_credential'))
			{
				$('auth_login-form_credential').value = '';
			}
			
			if($('invalid-details'))
			{	
				Effect.BlindUp($('invalid-details'), { duration: 0.4 });
			}
					
			//$('auth_login-form_email').next('.login-spacer').down('.login-error').hide();
			//Effect.BlindUp($('auth_login-form_email').next('.login-spacer'), { duration: 0.4 });
				
		}, false );
		/*
		//$('auth_login-form_credential').observe('focus', function(e) {
		//	$('auth_login-form_credential').next('.login-spacer').down('.login-error').hide();
		//	Effect.BlindUp($('auth_login-form_credential').next('.login-spacer'), { duration: 0.4 });
		//}, false );	
		*/
		$('close-login-box').observe('click', function(e){
			close_login(e);
		});
	}	
	
	
	if($('plugFAQs'))
	{
		license_tabs();
	}	
	if($('my-account'))
	{
		//$('my-account').observe('click', hide_login_err);		
	}
	if($('auth_register-form_company'))
	{
		new Ajax.Autocompleter("auth_register-form_company", "autocomplete_choices", "/auto_populate/search", {
		  paramName: "value", 
		  minChars: 2, 
		  frequency: 0.3
		});
	}
		
	if($('invalid-details') || $$('#form-auth_login .warning').length)
	{ 
		$('login-box').show(); 
		observe_login('open');
	}
	else
	{
		observe_login();
	}
	
	if($('profile_message'))
	{
		$('profile_message').fade({ duration: 5.0 });
	}
	
	var loggedin = 0;
	new PeriodicalExecuter(function(pe) {
		new Ajax.Request('/auth/loggedin', {
		  method: 'post',
		  onSuccess: function(transport) {
	
		    if (loggedin == 1 && transport.responseText == 0)
			{
				pe.stop();
				alert('Your session has expired, please login again');
				new Ajax.Request('/auth/logout', { method: 'get' } );
				window.location.reload(true);
			}
			else if (loggedin == 0 && transport.responseText == 1)
			{
				loggedin = 1;
			}
		  }
		});
	  
	
	}, 10);
	
}

var open_login = function( ev )
{
	var el = ev.element();
	if(el.id == 'register-link')
	{
		return false;
	}
	stop_observe_login();
	$('main-body').fade({ duration: 0.3, to:0.1});
	new Effect.BlindDown('login-box', 
		{ 
			scaleContent: false,
			duration: 0.2,
			afterFinish: function() {
				observe_login( 'open' );
			} 
		}
	);
	
	ev.stop();
} 

var close_login_check = function( ev )
{
	if(mouse_within('plugplugLoginBlock_content', ev)) { return; }
	close_login( ev );
}

var close_login = function( ev )
{
	stop_observe_login();
	$('main-body').fade({ duration: 0.3, to:1});
	new Effect.BlindUp('login-box', 
		{ 
			scaleContent: false,
			duration: 0.2,
			afterFinish: function() {
				observe_login( 'closed' );
			} 
		}
	);
	
	ev.stop();
}

var mouse_within = function( el, ev )
{
	var d = $(el).viewportOffset();
	var right = d.left + $(el).getWidth();
	var bottom = d.top + $(el).getHeight();

	return (Event.pointerX( ev ) > d.left && Event.pointerX( ev ) < right && Event.pointerY( ev ) > d.top && Event.pointerY( ev ) < bottom);
}

var stop_observe_login = function()
{
	if( $('plugplugLoginBlock_content') && $('auth_login-form_submit'))
	{
		$('plugplugLoginBlock_content').stopObserving('click');
		// $('plugplugLoginBlock_content').stopObserving('mouseout');
		$('auth_login-form_submit').previous('a').stopObserving('click');
	}
}

var observe_login = function( arg )
{
	if( $('plugplugLoginBlock_content') && $('auth_login-form_submit'))
	{
		if(arg!='open') { $('plugplugLoginBlock_content').observe('click', open_login, false ); }
		if(arg!='closed')
		{ 
			$('plugplugLoginBlock_content').observe('click', close_login_check, false );
			$('auth_login-form_submit').previous('a').observe('click', close_login, false );
		}
	}
}

var share_playlists = function()
{
	if($('share-playlists-link'))
	{
		$('share-playlists-link').observe('click', function(e)
		{
			var elem = e.element();
			myLightWindow.activateWindow({
				type: 'external',
				href: elem.href, 
				title: '', 
				width: 460,
				height: 560
			});
			e.stop();
		});
	}
}

document.observe('dom:loaded', searchcomplete, false);
document.observe('dom:loaded', appscripts, false);
document.observe('dom:loaded', share_playlists, false);
document.observe('Search:Complete', searchcomplete, false);
document.observe('playlists:loaded', playlistsLoaded, false);
document.observe('playlists-page:loaded', playlistsPageLoaded, false);
document.observe('playlists-page:loaded', searchcomplete, false);


// LINKS (EXTERNALS)
function externalLinks() { $$('a').each( function(el) { if(el.getAttribute("href") && el.getAttribute("rel") == "external") { el.target="_blank"; } } ); }
function internalLinks() { $$('a').each( function(el) { if(el.getAttribute("href") && el.getAttribute("rel") == "internal") { el.target="_self"; } } ); }
document.observe('dom:loaded', externalLinks, false);
document.observe('dom:loaded', internalLinks, false);
