$.escape = function(str) {
	return str ? 
		str.replace(/&/g,'&amp;').replace(/>/g,'&gt;').replace(/</g,'&lt;').replace(/"/g,'&quot;')
		: '';
}


function getMediaId(elem) {
	return parseInt($(elem).parents('div.item').children('a.item_anchor').attr('id').replace('mid',''),10);
}

function trackEvent(name) {

		_gaq && _gaq.push(['t2._trackEvent', 'Videos', name, 'none']);
}


$(function() {
	
	$('a.action').click(function() {
		
		trackEvent( this.className.replace(/active|action|\s+/g,'')); 
		
		if( LOGGED_IN && $(this).hasClass('star') || $(this).hasClass('star_active') ) 
			return;
		$(this).parents('.properties').find('.active').not(this).click();
	});
	
	// favorite stars 
  $('a.star, a.star_active').click(function(e){
	 e.preventDefault();
		if(!LOGGED_IN) {
			$(this).toggleClass('active');
			$(this).parents('.item').find('.message_container').empty()
						 .append($('#star_no_user').clone().show())[$(this).hasClass('active') ? "show" : "hide"]();
			return;
		}
	 var media_id = getMediaId(this);
	 var was_fav = $(this).hasClass('star_active');
		
	 $(this).removeClass("star star_active")
					 .addClass(was_fav ? 'star' : 'star_active')
					 .html(was_fav ? "Add Star" : "Remove Star");
	 $.post("services/videos_ajax.php",{action:"set_favorite","media_id":media_id,is_favorite:(was_fav?0:1)},
						function(data){
							return;
		});
  });

	// download link
	$('a.ipod').click(function(e) {
		e.preventDefault();
			$(this).toggleClass('active');
		var id = getMediaId(this);
		$("#download_container_"+id).toggle();
	});

	// assign to students 
	$('a.assign').click(function(e){
		e.preventDefault();
		var id = getMediaId(this);
		$('a.assign.active').not(this).click();
		$(this).toggleClass('active');
		$(this).parents('.item')
			.find('.form_container')
			.append(
				$('#assign_form').show()
			 )[$(this).hasClass('active') ? "show" : "hide"]()
			.find('input[name="media_id"]').attr('value',id);
	});
	
	// lesson
	var lesson_cache = {};
	$('a.lesson').click(function(e) {
		e.preventDefault();
		var id = getMediaId(this);
			$(this).toggleClass('active');
			var $container = $(this).parents('.item').find('.lesson_container');
		if(lesson_cache[id]) {
			$('span',this).toggle();
			$container.toggle();
		} else {
			$(this).hasClass('active') ? $container.html('<div class="inner">Loading...</div>').fadeIn(2000) : $container.hide();
			$.get('lessons.php',{"media_id":id,"output":"ajax"},function (data,status) {
				  $container.html(data).show();
				  lesson_cache[id] = true;
			});
		}
	});
	// transcript
	var trans_cache = {};
	$('a.trans').click(function(e) {
		e.preventDefault();
		var id = getMediaId(this);
			$(this).toggleClass('active');
			var $container = $(this).parents('.item').find('.trans_container');
		if(trans_cache[id]) {
			$container.toggle();
		} else {
			$(this).hasClass('active') ? $container.html('<div class="inner">Loading...</div>').show() : $container.hide();
			$.get('services/videos_ajax.php',{"action":"show_transcript","media_id":id,"output":"ajax"},function (data,status) {
				  $container.html(data).show();
				  trans_cache[id] = true;
			});
		}
	});
	// video information
	var info_cache = {};
	$('a.information').click(function(e) {
		e.preventDefault();
		var id = getMediaId(this);
			$(this).toggleClass('active');
			var $container = $(this).parents('.item').find('.info_container');
		if(info_cache[id]) {
			$container.toggle();
		} else {
			$(this).hasClass('active') ? $container.html('<div class="inner">Loading...</div>').show() : $container.hide();
			$.get('services/videos_ajax.php',{"media_id":id,"output":"ajax","action":"info"},function (data,status) {
				  $container.html(data).show();
				  info_cache[id] = true;
			});
		}
	});
	// comment form
	
	var $comment_form = $('#comment_form');
	$comment_form.find('form').submit(function(e) {
		e.preventDefault();
		$.post(
			'services/videos_ajax.php?media_id=' + $comment_form.find('#comment_media_id').val() + '&action=post_comment',
			{ 'comment': $comment_form.find('#comment_area').val() },
			function(data) {
				
				$comment_form.find('#comment_area').val('')
				var html = Templates.comment(data);
				$comment_form
					.closest('.item')
					.find('ul.comments')
					.append( $(html).fadeIn() );
			
			},
			'json'
		);
		return false;
	});
	// comment display
	var comment_cache = {};
	$('a.comments').click(function(e) {
		e.preventDefault();
		var id = getMediaId(this);
		$(this).toggleClass('active');
		var $container = $(this).parents('.item').find('.comment_container');
		if(comment_cache[id]) {
			$container
				.append(
					$comment_form.find('#comment_media_id').val(id).end().show()
				)
				.toggle();
		} else {
			$(this).hasClass('active') ? $container.html('<div class="inner">Loading...</div>').show() : $container.hide();
			$.get(
				'services/videos_ajax.php',
				{"media_id":id,"output":"ajax","action":"get_comments",'no_cache':Math.random() },
				function (data) {
					data = eval( '(' + data + ')');
					var html = Templates.comments(data);
					$container
						.html(html)
						.append(
							$comment_form.find('#comment_media_id').val(id).end().show()
						)
						.show();
					comment_cache[id] = true;
				});
		}
	});
	
	// points / score history
	$('a.points').click(function(e) {
		e.preventDefault();
		$(this).toggleClass('active');
		if(!LOGGED_IN) {
			$(this).parents('.item').find('.message_container').empty()
							.append($('#points_no_user').clone().show())[$(this).hasClass('active') ? "show" : "hide"]();
			return;
		}
		var id = getMediaId(this);
		var $container = $(this).parents('.item').find('.points_container');
		$(this).hasClass('active') ? $container.html('<div class="inner">Loading...</div>').show() : $container.hide();
		$(this).hasClass('active') && $.get('services/videos_ajax.php',{"media_id":id,"output":"ajax","action":"score_information"},function (data,status) { 
				$container.html(data).show();
		});
			
	});

});
var Templates = {
	comment: function(c) {
		return [
			'<li>',
			'<div class="comment_head">',
				'<img src="' + c.gravatar_url + '" width="35" height="35" />',
				'<span class="display_name">' + $.escape(c.display_name) +'</span>',
				'<span class="display_date">' + $.escape(c.display_date) +'</span>',
			'</div>',
			'<div class="display_comment">' + $.escape(c.comment) + '</div>',
			'</li>'].join('');
		
	},
	comments: function(data) {
		html = '<ul class="comments">';
		if(!data.length) {
			html += [
				'<li>',
				'<div class="comment_head">',
				(LOGGED_IN ? 
					'<span class="display_name">No Comments. Be the first to comment!</span>' :
					'<span class="display_name">No Comments.</span>'),
				'</div>',
				'</li>'
				].join('');
		} else { 
			
			for(var i=0,l=data.length;i < l;i++) {
				html += this.comment(data[i]);
			}
			
		}
		html += '</ul>';
		return html;
	}
	
}
$('a.dword').live("click",function(e){
	e.preventDefault();
	showDefinition(this);
});

function showDefinition(anchor) {
	var $dm = $('#def_modal');
	if(!$dm.length) {
		$dm = initDefinitionWindow();
	}
	var $a = $(anchor);
	var o = $a.offset();
	$(document).width()/2 
	$dm.css(
		{
		top:o.top,
		left:$(document).width()/2 > o.left ? o.left + $a.width() +15: o.left - $dm.width() -5 
		}
	);
	var $dmi = $('#def_modal_content').empty().html('loading...');
	$dm.show(); 
	$.get('services/videos_ajax.php',{"action":"get_definition","word":$a.text()},function(data) {
		$dmi.html(data);
		$dm.show(); 
	});
	
}
function initDefinitionWindow() {
	$('body').append('<div id="def_modal"><div id="def_modal_inner"><div class="close"><img src="/images/close_icon.gif" class="close" /></div><div id="def_modal_content"> </div></div></div>');
	var $dm = $('#def_modal').hide();
	// definition should dissappear if body is clicked
	$('body').click(function(e){
		if(e.target && !$(e.target).hasClass('dword')) {
			$dm.hide();
		}
	});
	return $dm;
}