/* Home Page Section Javascript
--------------------------------------------------------------------------- */


	// Define namespace to avoid conflicts
	var homepage = new Object();


/* LAST NIGHT
--------------------------------------------------------------------------- */

	homepage.lastnight = function() {


		$.get('/home-random', function(data) {
		
			// Get bank of content and save in globally
			$content = $(data);


		/* Event Details ---------------------------- */

			// Get content
			var $event = $content.children('.widget-event');
			
			// Pick one at random and remove the rest
			var count = $event.children('.events').children().length;
			var choice = Math.floor(Math.random() * count);
			$event.children('.events').children('li').not('li:eq(' + choice + ')').remove();
			
			// Save date for supporting content
			var date = new Date($event.find('a.date').text());
			var year = date.getFullYear().toString().slice(2);
			var month = date.getMonth() + 1 + "";
			var day = date.getDate().toString();
			if (month.length < 2) var month = "0" + month; // Ensur leading "0"
			if (day.length < 2) var day = "0" + day; // Ensure leading "0"
			var date = month + day + year;
			
			// Add to page
			$('#lastnight > .details').prepend($event);

			
		/* Photos ---------------------------- */

			// Get content
			var $photos = $content.children('.widget-photo');
			
			// Get matching gallery
			var $match = $photos.find('a[href*="' + date + '"]:first').closest('li');
			
			if ($match.length > 0) {

				// Keep match, remove the rest
				$match.siblings().remove();
			
			} else {
							
				// If there's no match, pick a random photo, and remove the rest
				var count = $photos.find('.photos > li').length;
				var random = Math.round(Math.random() * count);
				$photos.find('.photos > li').not('li:eq(' + choice + ')').remove();
			
			}
			
			// Add to page
			$('#lastnight').prepend($photos);
			
			
		/* Set List ---------------------------- */
			
			// Get content
			var $setlist = $content.children('.widget-editorial');

			// Get matching set list
			var $match = $setlist.find('a[href*="' + date + '"]:first').closest('li');

			if ($match.length > 0) {

				// Keep match, remove the rest
				$match.siblings().remove();

				// Add to page
				$('#lastnight').append($setlist);
			
			} else {
							
				// Disable button if there's no match
				$setlist.find('.headlines > li').remove();

			}
			
		
		/* Buttons ---------------------------- */
		
			var event = $('#lastnight .widget-event a.date').attr('href');
			var eventTag;
			var setlistLink = $('#lastnight .widget-editorial li.last_night > a').attr('href');
	
			// Split up url into individual tags
			$.each(event.replace(/\//g, '-').split('-'), function(index, value) { 
	
				// Check for 6-digit date
				if (value.match(/\d{6}/)) {
	
					eventTag = value;
			  
				}
	
			});
			
			$('#lastnight a.setlist').attr('href', setlistLink);
			$('#lastnight a.media').attr('href', '/album/' + eventTag);
			$('#lastnight a.talk').attr('href', event + '#comments');
	
			// Disabled buttons (no content found)
			$('#lastnight a[href$="undefined"], #lastnight a[href$="#"]').parent().addClass('disabled');
			$('#lastnight .disabled a').click(function() { return false; });
			
			
		/* Cleanup/Presentation ---------------------------- */
	
			// Refresh Cufon
			Cufon.refresh();
			
			// Image Download Blocker
			try { $('#lastnight img').photoDownloadBlocker(); } catch (error) {  }
			
			// Show Content
			$('#lastnight').addClass('loaded');
			
			// Show photos/videos
			homepage.media(data);

		});
		
	};


/* PHOTOS & VIDEOS
--------------------------------------------------------------------------- */

	homepage.media = function(data) {
		
		// Get content
		var $photos = $(data).children('.widget-photo');

		// Pick two photos at random
		var count = $photos.children('.photos').children().length;
		var choice1 = Math.floor(Math.random() * count);
		var choice2 = Math.floor(Math.random() * count);
		if (choice1 == choice2) var choice2 = Math.floor(Math.random() * count);
		
		// Remove the rest
		$photos.find('.photos > li').not('li:eq(' + choice1 + '), li:eq(' + choice2 + ')').remove();

		// Fix css selectors
		$photos.find('.photos > li:last-child').addClass('last');

		// Add to page
		$('#tour').prepend($photos).addClass('loaded');	

	};


/* ANNOUNCEMENTS
--------------------------------------------------------------------------- */

	homepage.twitter = function() {
	
		$('#latest-tweets').tweet({
	
			username: 'bonjovi', 
			count: 10
	
		}); // End of function calls homepage.announcements()

	};
	
	homepage.announcements = function() {

		var $this = $('#announcements');
		var $source = $('div.source');
		var $announcements = $('<ul class="announcements"></ul>');
		var array = [];
		
		// Push news leads into array for sorting
		$source.find('ul.leads > li').each(function() {

			var date = $(this).children('strong').text(); // in mm/dd/yy format
			var token;

			// Portuguese, Spanish, French and Dutch Localization (date is in dd/mm/yy format)
			if (language == 'pt' || language == 'es' || language == 'fr' || language == 'nl') {

				token = date[6] + date[7] + date[3] + date[4] + date[6] + date[7]; // in yymmdd

			// Japanese Localization (date is in yy/mm/dd format)
			} else if (language == 'ja') {

				token = date[0] + date[1] + date[3] + date[4] + date[6] + date[7]; // in yymmdd

			// English Localization (date is in mm/dd/yy format)
			} else {

				token = date[6] + date[7] + date[0] + date[1] + date[3] + date[4]; // in yymmdd
			
			}
			
			token += '-2'; // news type sorted before tweet type
		
			var lead = [token, token + ' news', $(this).html()]; // [sort token, content class type, markup]  
			array.push(lead);
		
		});
		
		// Push twitter tweets into array for sorting
		$source.find('ul.tweets > li').each(function() {

			var date = $(this).children('a').text(); // in mm/dd/yy format
			var token = date[6] + date[7] + date[0] + date[1] + date[3] + date[4]; // in yymmdd

			// Portuguese, Spanish, French and Dutch Localization
			if (language == 'pt' || language == 'es' || language == 'fr' || language == 'nl') {

				// Change date to dd/mm/yy format
				date = date[3] + date[4] + '/' + date[0] + date[1] + '/' + date[6] + date[7];
				$(this).children('a').text(date);

			// Japanese Localization
			} else if (language == 'ja') {

				// Change date to yy/mm/dd format
				date = date[6] + date[7] + '/' + date[0] + date[1] + '/' + date[3] + date[4];
				$(this).children('a').text(date);

			// English Localization
			} else {

				$(this).children('a').text(date);
			
			}
			
			$(this).children('span').replaceWith('<h4>' + $(this).children('span').html() + '</h4>');
			$(this).append('<ul class="actions"><li><a class="action readmore" href="' + $(this).children('a').attr('href') + '">Read More</a></li></ul>');
			$(this).children('a').replaceWith('<strong>' + $(this).children('a').text() + '</strong>');

			token += '-1';  // tweet type sorted before news type
			
			var tweet = [token, token + ' tweet', $(this).html()];  // [sort token, content class type, markup]
			array.push(tweet);
		
		});

		// Remove multiple daily tweets (William Skidmore - www.wskidmore.com)
		/* var duplicates = [];
		var l, i;
		
		for (i = 0, l = array.length; i < l; i++) {
			
			var test = array[i][1];

			if (duplicates[test]) {
			
				array.splice(i,1);
				l--;
				i--;

			} else {
			
				duplicates[test] = true;
			}

		} */
		
		// Sort array
		array.sort().reverse();
		
		// Populate announcements listing
		for (var i = 0; i < array.length; i++) {
		
			$announcements.append('<li class="' + array[i][1] + '">' + array[i][2] + '</li>');
		
		};		
		$this.append($announcements);
		// $source.remove();

		// Initialize announcements
		if ($('#announcements ul.announcements').length > 0) $('#announcements').cliqueAnnouncements();

	};


/* BILLBOARD
--------------------------------------------------------------------------- */	

	homepage.billboard = function() {
	
		var $this = $(this);
	
		$.get('/feeds/banners', function(data) {

			$(data).find('unit').each(function() {

				if ($(this).find('name').text() == "home_featured") {

					var slides = "<ul>";

					$(this).find('banner').each(function() {

						if ($(this).children('status').text() != "Retract Temporarily") {

							var link = $(this).children('url').text();
							var image = $(this).children('image').text();
							
							if (image.match(/.swf/)) {

								slides += '<li><a href="' + link + '"><embed type="application/x-shockwave-flash" src="' + image + '" width="620" height="320" style="undefined" bgcolor="#ffffff" quality="high" wmode="transparent"></a></li>';

							} else {
			
								slides += '<li><a href="' + link + '"><img src="' + image + '" /></a></li>';

							}
						
						}

					});

					slides += "</ul>";
					
					$this.append(slides);

				}
				
			});

			// Slideshow
			$this.children('ul').after('<div class="pager"></div>').cycle({

				fx: 'fade',
				speed: 1000,
				timeout: 8000,
				pager: $this.children('.pager')

			});
			
		});

	};


/* SALE
--------------------------------------------------------------------------- */

	homepage.sale = function() {

		var $official = $('#sale #official');
		var $sale = $('#sale ul.sales');
		
		$.get('feeds/external/featured_official_merch.xml', function(data) {

			// Populate official merch listing
			var items = '<ul class="items">';

			$(data).find('banner').each(function() {

				var description = $(this).children('description').text();
				var price = $(this).children('price').text().replace(/Only /, '');
				var link = $(this).children('url').text();
				var image = $(this).children('image').text();
				items += '<li class="merch official"><a target="_blank" href="' + link + '"><img src="' + image + '" /></a><dl><dt><a target="_blank" href="' + link + '">' + description + '</a></dt><dt>' + price + '</dt></dl></li>';

			});

			items += "</ul>";
			
			$official.append($(items));

			// Markup changes
			$('#backstage > ul:not(.actions, .pages) > li').attr('class', 'merch backstage');
			$('#backstage > ul:not(.actions, .pages) > li > a').append('<em>Backstage JBJ</em>');
			$('#tickets > ul:not(.actions, .pages) > li').attr('class', 'event');
			truncate($('#sale li.merch dt a'), 40);
	
			var maxNumberOfItems = ($('#tickets').length == '0') ? 7 : 3;	
	
			// Populate sales listing
			for (var i = 0; i < maxNumberOfItems; i++) {
			
				$('#sale div.source > div').each(function() {
	
					$sale.append($(this).children('ul:not(.actions, .pages)').children('li:eq(0)'));
									
				});
			
			}

			// Toggle merch details
			$('#sale ul.sales li.merch.backstage').click(function() { window.location = $(this).find('dt a').attr('href'); return false; });
			$('#sale ul.sales li.merch.official').click(function() { window.open($(this).find('dt a').attr('href')); return false; });
			$('#sale ul.sales li.merch').mouseenter(function() { $(this).children('dl').animate({ left: '0' }, 'fast'); });
			$('#sale ul.sales li.merch').mouseleave(function() { $(this).children('dl').animate({ left: '-164px' }, 'fast'); });
			
		});

	};


/* POLL
--------------------------------------------------------------------------- */

	homepage.poll = function() {
	
		var $this = $('div.widget-poll.browse');

		$.get($this.find('a.results').attr('href'), function(data) {

			$(data).find('div.widget-poll.display table tr').each(function(index) {
			
				var table = '<table>';
				
				var row = $(this).html();
				table += '<tr>' + row + '</tr>';
				table += '</table>';
			
				$this.find('label:eq(' + index + ')').append(table);

			});
		
		});
	
	};


/* MARKUP CHANGES
--------------------------------------------------------------------------- */

	homepage.markup = function() {

		$('li.presale a').text('Buy Pre-Sales');
		truncate($('#sale ul.events h4 span'), 20);
	
	};	


/* TIMELINE
--------------------------------------------------------------------------- */

	$(document).ready(function() {

		//homepage.lastnight();
		homepage.twitter();
		$('#billboard').each(homepage.billboard);
		homepage.sale();
		homepage.poll();
		homepage.markup();
		homepage.media();
	
	});

	$(window).load(function() {
	
	
			
	});

