var random = Math.round(Math.random()*10000000000);
var pageid = Math.round(Math.random()*10000000000);
var domWrite;
(function($) {
	//defer document.write
	domWrite = {
		cache : [],
		add : function(el,url,pre,callback) {
			domWrite.cache.push({
				el:el,url:url,pre:pre,callback:callback
			});
		},
		load : function(i) {
			var sBuffer = '';
			var origDocWrite = document.write;
			document.write = function(s) {
				sBuffer += s;
			};
			if ($.isFunction(domWrite.cache[i].pre)) {
				domWrite.cache[i].pre();
			}
			$.getScript(domWrite.cache[i].url,function() {
				$('#'+domWrite.cache[i].el).html(sBuffer);
				if ($.isFunction(domWrite.cache[i].callback)) {
					domWrite.cache[i].callback();
				};
				document.write = origDocWrite;
				i++;
				if (domWrite.cache[i]) {
					domWrite.load(i);
				}
			});
		}
	};
	$.fn.outerHTML = function(s) {
		return (s)
		? this.before(s).remove()
		: $("<p>").append(this.eq(0).clone()).html();
	};
	$(function() {
		//add js class for detection
		$('body').addClass('js');
		//tabs
		$('.tabbed div.heading').after('<ul class="tabs"></ul>');
		$('.tabbed h3').each(function() {
			var $this = $(this);
			var $elTabbed = $this.closest('.tabbed');
			var $el = $this.parent();
			$elTabbed.find('ul.tabs').append('<li>' + $this.text() + '</li>');
			$elTabbed.find('ul.tabs li:last').click(function() {
				$elTabbed.find('ul.tabs li').removeClass('active');
				$(this).addClass('active');
				$elTabbed.find('div.content').hide();
				$el.show();
			});
			$this.remove();
		});
		$('.tabbed ul.tabs li:first-child').click();
		//highlights
		$('div.highlightsBlock').each(function(){
			var $highlights = $(this);
			var html = $highlights.find('.content').html();
			$highlights.find('.content').empty().append('<div class="hero"></div><div class="thumbs"></div><div class="caption"><span class="bg"></span></div>');
			$highlights.find('.thumbs').html(html);
			$highlights.find('h3').each(function() {
				$this = $(this);
				var data = $this.outerHTML();
				var imgData = $this.next().next().outerHTML();
				$this.next().data('caption',data).data('hero',imgData);
				$this.next().next().remove();
				$this.remove();
			});
			var currHighlight = $highlights.find('.thumbs img:first').addClass('active');
			$highlights.find('.hero').html(currHighlight.data('hero'));
			$highlights.find('.caption').append(currHighlight.data('caption'));
			$highlights.find('.content').append('<div class="clear"></div>');
			$highlights.find('.thumbs img').mouseover(function() {
				var $this = $(this);
				$highlights.find('img').not(this).removeClass('active');
				$this.addClass('active');
				$highlights.find('.hero').html($this.data('hero'));
				$highlights.find('.caption').html('<span class="bg"></span>').append($this.data('caption'));
			});
			$highlights.find('.thumbs img').click(function() {
				window.location.href=$highlights.find('.caption a').attr('href');
				return false;
			});	
		});
		//text-overflow
		$('.textOverflow').ellipsis();
		//trailers
		if ($('.videoBlock')[0]) {
			$('.videoBlock').hide();
			$('.videoBlock:first').show();
		
			var iVideoBlockCount = $('.videoBlock').length;
		
			var html = '' +
			'<div class="emm-paginate">' +
			'<span class="emm-title"/>' +
			'<a class="emm-page emm-current" href="#">1</a>';
		
			for (var i = 2; i <= iVideoBlockCount; i++) {
				html += '<a class="emm-page" href="#">' + i + '</a>';
			}
			html += '</div>';
			
			html += '<div id="videoInfo"></div>';
			
			$('.videoBlock').parent().append(html);
			
			$('a.emm-page').click(function() {
				$('.videoBlock').hide();
				$('a.emm-page').removeClass('emm-current');
				$(this).addClass('emm-current');
				$('.videoBlock').eq(parseInt($(this).text(),10)-1).show();
				return false;
			});
		
			$('.videoBlock a').click(function() {
				
				if (!$(this).metadata().flv) {
					alert('Sorry, there is a problem with this trailer.');
					return false;
				}
				
				$('.videoBlock a').removeClass('active');
				$(this).addClass('active');

				$('#mainVideo h2').text($(this).metadata().title);

				function listify(s) {
					var arr = s.split(',');
					var s = '';
					if (arr.length == 1) {
						s = arr[0];
					} else {
						if (arr.length == 2) {
							s = arr[0] + ' and ' + arr[1];
						} else {
							for (var i=0; i < arr.length; i++) {
								if (i==arr.length-1) {
									s = s.substring(0,s.length-2);
									s += ' and ' + arr[i];	
								} else {
									s += arr[i] + ', ';	
								}
							}	
						}
					}
					return s;				
				}

				var html = '<h3>' + $(this).metadata().title + '</h3>' +
				'<dl>' +
				($(this).metadata().director ? '<dt>Director:</dt><dd>' + listify($(this).metadata().director) + '</dd>' : '') +
				($(this).metadata().cast ? '<dt>Cast:</dt><dd>' + listify($(this).metadata().cast) + '</dd>' : '') +
				($(this).metadata().releaseDate ? '<dt>Release Date:</dt><dd>' + listify($(this).metadata().releaseDate) + '</dd>' : '') +
				'</dl>';
				if ($(this).metadata().certificate) {
					html += '<div class="certificate cert' + $(this).metadata().certificate + '"><span class="screen-reader-text">Certificate ' + $(this).metadata().certificate + '</span></div>';					
				}
				
				if ($(this).metadata().rating) {
					html += '<div class="rating" title="' + $(this).metadata().rating + ' out of 5">';
					var rating = parseInt($(this).metadata().rating,10) * 2;
					var halfStar = rating % 2;
					for (var i = 0; i < ((rating-halfStar) / 2); i++) {
							html += '<span class="star full"></span>';
						}
						if (halfStar == 1) {
							html += '<span class="star half"></span>';
							i++;
						}
						while (i < 5) {
							html += '<span class="star"></span>';
							i++;
						}
					html += '</div>';				
				}

				$('#videoInfo').html(html);

				$f("mainflowplayer", "/wp-content/plugins/word-press-flow-player/flowplayer/gpl/flowplayer-3.1.1.swf", {
					plugins: {
						controls: {
							buttonOverColor: '#9d0200',
							sliderColor: '#ffcccc',
							bufferColor: '#0B0B0B',
							sliderGradient: 'none',
							progressGradient: 'medium',
							durationColor: '#A9A9A9',
							progressColor: '#9d0200',
							backgroundColor: '#4A4A4A',
							timeColor: '#A9A9A9',
							buttonColor: '#0B0B0B',
							backgroundGradient: 'none',
							bufferGradient: 'none',
							opacity:1.0
						}
					},
					clip: {
						url:$(this).metadata().flv,
						autoPlay: true,
						autoBuffering: true
					},
					canvas: {
						backgroundColor:'#0B0B0B'
					}
				});
	//			$f("mainflowplayer", "flowplayer.swf", $(this).metadata().flv); 
	//			$f(0).load($(this).metadata().flv).play(); 
				return false;
			});
		}
		$('.videoBlock:first a:first').click();
		//ads/google analytics
		//defered document.write
		if (domWrite.cache[0]) {
			domWrite.load(0);
		}
	});
})(jQuery);