var miniplayer, player, radar;

$(function () {

	radar = new Radar();

	radar.initKonami();
	radar.initWings();
	radar.addArrowSpans();
	radar.fixBlerb();
	radar.applySortUI();
	radar.initMenus();
	radar.initFixArticles();

	// button fixer
	var $btns = $('a.button, button.subscribe-btn').wrap('<span class="main"></span>');
	$('<span />')
		.addClass('left')
		.prependTo($btns);

	$('<span />')
		.addClass('right')
		.appendTo($btns);

	// side bar
	// top 4 artists
	$('#top-four li').css('cursor', 'pointer').click(function () {
		document.location.href = $(this).find('a').attr('href');
	});

	// add onclick funct for mini play next/last nodes
	$('.next, .last', '#mini-play').click(function () {
		document.location.href = $(this).find('a.link').attr('href');
	});

	// top stories rotator
	$('#top-stories')
		.rotator()
		.find('.excerpt').click(function () {
			var url = $(this).siblings('a').attr('href');
			document.location.href = url;
		});

	// sort form
	$('.sort-form button[type=submit]').hide();
	$('.sort-form select').change(function () {
		$(this).parents('form').submit();
	})

	//mini player
	miniplayer = new miniPlayer();
	player = new mediaPlayer();
	player.registerCallback('playlistupdate', miniplayer.setPlaylist);

	// display welcome message
	if (($.cookie('welcome') == null || window.location.href.indexOf('?welcome') > 0) && $('body#homepage').length > 0) {
		showWelcomeBox();
		miniplayer.expand(false);
	}

	// join form expander
	var jF = new joinForm();
	$('#member-nav .join-radar a').click(function () {
		jF.toggle('signup-radar');
	});
	$('#member-nav .member-login a').click(function () {
		jF.toggle('login-radar');
	});
	// DETECT LOGIN/REGISTRION ERRORS
	if ($('#login-radar:contains("login attempt")').size() > 0) {
		jF.toggle('login-radar');
	}

	$('.login-message a:eq(0)').click(function () {
		jF.toggle('login-radar');
		$('body').scrollTop(0);
	});
	$('.login-message a:eq(1)').click(function () {
		jF.toggle('signup-radar');
		$('body').scrollTop(0);
	});

	// comments
	var comments = new Comments();

	// fix landscape article headers
	$('.landscape-article h3').css({
		position: 'absolute',
		top: parseInt($('.landscape-article h3').prev().height()) - 30

	})

	// inject placeholder (html5) functionality for browsers that don't support it
	if (!supports_input_placeholder()) {
		fixPlaceholderInputs();
	}
})

// added by lifelounge
function newWindow(mypage, myname, w, h, scroll, pos) {
    var win = null;
    if (pos == "random") { LeftPosition = (screen.width) ? Math.floor(Math.random() * (screen.width - w)) : 100; TopPosition = (screen.height) ? Math.floor(Math.random() * ((screen.height - h) - 75)) : 100; }
    if (pos == "center") { LeftPosition = (screen.width) ? (screen.width - w) / 2 : 100; TopPosition = (screen.height) ? (screen.height - h) / 2 : 100; }
    else if ((pos != "center" && pos != "random") || pos == null) { LeftPosition = 50; TopPosition = 50 }
    settings = 'width=' + w + ',height=' + h + ',top=' + TopPosition + ',left=' + LeftPosition + ',scrollbars=' + scroll + ',location=no,directories=no,status=no,menubar=no,toolbar=no,resizable=no';
    win = window.open(mypage, myname, settings);
}

function Radar()
{
	var options = {
		sortSelector: '.sort-form'
	}

	this.debug = function()
	{
		var div = $('<div></div>');
		div.css({
			color: '#FFF',
			position: 'absolute',
			top: 0,
			left: 0
		});
		div.text(JSON.stringify(p.getItems()));
		div.appendTo('body');
	}
	
	this.initMenus = function()
	{
		_fixMemberNavPipe();
	}
	
	this.initKonami = function()
	{
		// inject easter egg
		$(document).konami(function() {
			$('<div />')
				.css({
					background: 'url(/layout/skins/default/images/pedobear.png) no-repeat ',
					position: 'absolute',
					zIndex: 9999,
					width: '1000px',
					height: '1000px',
					top: 0
				})
				.click(function() {
					$(this).remove();
				})
				.appendTo('body');
		});
	}

	this.fixBlerb = function()
	{
		recycleString($('#blerb>p'), 618);
	}
	
	this.addArrowSpans = function()
	{
		// dom injection
		// arrow (visual element only)
		if (!$.browser.msie || $.browser.version >= 7) {
			// arrows arn't available in ie6 because they just cause too many problems!
			$('<span />')
				.addClass('arrow')
				.appendTo([
							'h1',
							'#blerb, .blog-posts h2, .blog-posts h3',
							'.sub-nav .ui-selected a',
							'.category-pods a.headline',
							'#nav .ui-selected a',
							'#footer-nav .ui-selected a',
							'#talk-on-radar .comment',
							'#mini-play',
							'#iphone h2',
							'#player label',
							//'#player .current-text',
							'.podcasts form .bg',
							'.featured-article h3',
							'.tracks-by-artist h3',
						].join(','));
						
			$('<span class="arrow-current" />').appendTo('#player');
		}
	}
	
	this.initWings = function()
	{
		// inject wings around #container
		$('#container')
			.wings({
				autoReposition: true
			});
	}

	this.initFixArticles = function() 
	{
		$('.article').each(function() {
			if($('img:first-child', this).width() > 323) {
				$(this).addClass('article-landscape');
			}
		});
	}
	
	/**
	 * Convert the sort drop down into a customised select list
	 */
	this.applySortUI = function()
	{
	
		var timeout;
	
		if(hasSort()) {
			$(options.sortSelector).each(function() {
				var s = $('select', this);
				var sel = $('option[selected]', s);
				var optionList = _getOptionList(s);
				$('<div class="sort-ui">'+sel.text()+optionList+'</div>')
					.click(function() {
						// expand selection
						$(this).find('ul').show();
					})
					.insertAfter(s);
				$('ul', this).hover(function() {
					if(timeout) {
						clearTimeout(timeout);
					}
				}, function() {
					var self = this;
					timeout = setTimeout(function() {
						$(self).hide();
					}, 1200);
				});
				$('li', this).click(function() {
					if($('option[selected]', s).index() != $(this).index()) {
						$('option:eq('+$(this).index()+')', s).attr('selected', 'selected');
						s.change();
					} else {
						//console.log($('ul', $(this).parents('div').get(0)));
						$(options.sortSelector+' ul').css({
							display: 'none'
						});
					}
				});
				s.hide();
			});
		}
	}
	
	// private functions
	
	function recycleString($element, maxWidth, append)
	{
		append = append || '&hellip;';
		var origHtml = $element.html(), max = 200, i = 0;
		
		$element.html('<span id="ellip" style="white-space: nowrap">'+origHtml+'</span>');
		var ellip = $('#ellip');
		if(ellip.width() > maxWidth) {
			$element.attr('title', $element.text());
			while(ellip.width() > maxWidth && i < max) {
				i++;
				origHtml = origHtml.substr(0, origHtml.length - 1);
				ellip.html(origHtml+append);
			}
			$element.html(ellip.html());
		}
	}
	
	function hasSort()
	{
		return $(options.sortSelector).length > 0;
	}
	
	function _getOptionList(sel)
	{
		var options = $('option', sel);
		var html = '<ul style="display: none;">';
		options.each(function() {
			html += '<li>'+$(this).text()+'</li>';
		});
		html += '</ul>';
		return html;
	}
	
	/**
	 * Insert pipe elements between the member navigation elements
	 */
	function _fixMemberNavPipe()
	{
		// inject pipe divider into member nav
		$('<li />')
			.text('|')
			.addClass('divider')
			.insertAfter('#member-nav li:nth-child(1)');
	}
	
}

