(function($) {
	var clicked = false;

	var itemCache = [];
	var videoCache = [];

	/**
	 * Fetch media item
	 */
	function getMediaItem() {
		clicked = false;
		var id = this.rel;
		if (itemCache[id]) {
			setMediaItemData(itemCache[id]);
		} else {
			getData(id);
		}
		$('#left > ul > li > a, #leftcol > ul > li > a, #rightcol > ul > li > a').css('color', 'black');
		$(this).css('color', 'white');
		return false;
	}

	/**
	 * Get data for media item through ajax
	 */
	function getData(id) {
		$.post('data.php', { id: id },
			function(data) {
				itemCache[id] = data;
				preloadImages(data.images);
				setMediaItemData(data);
				$('#item' + id).addClass('hover');
			}, 'json'
		);
	}
	
	/**
	 * Preload images
	 */
	function preloadImages(images) {
		var len = images.length;
		if (len > 0) {
			for (var i = 0; i < len; i++) {
				var img = new Image();
				img.src = images[i];
			}
		}
	}
	
	/**
	 * Set data for media item
	 */
	function setMediaItemData(data) {
		$('#logoWork').html(data.title);
		$('#workinfo').html(data.info);
		$('#aboutWork').html(data.text);
		$('#media').html(data.data);
		$('#video').html('');

		$('#media > .previewImgLink').bind('click', showImg);
		$('#media > .previewVideoLink').bind('click', playVideo);
		$('#media > .previewImgLink, #media > .previewVideoLink').hover(showImg);
	}

	/**
	 * Show image
	 */
	function showImg(e) {
		if (!clicked  || (e.type != 'mouseenter' && e.type != 'mouseleave')) {
			var imgId = this.rel;
			$('#media > a').removeClass('hover');
			$(this).addClass('hover');
			$('#previewImage').show();
			$("#previewImage").html('<img id="previewImg" src="'+this.rel+'.jpg" alt="" />');
			$('#video').hide();
			clicked = false;
			return false;
		}
	}

	/**
	 * Play video
	 */
	function playVideo() {
		clicked = true;
		var vidId = this.rel;
		$('#viewimg').hide();
		$('#previewImg').hide();
		$('#video').show();
		$('#media > a').removeClass('hover');
		$(this).addClass('hover');
		
		if (videoCache[vidId]) {
			$('#workPic').hide();
			$('#video').html(itemCache[vidId]);
		} else {
			$.post('data.php', { vid: vidId },
				function(data) {
					videoCache[vidId] = data.data;
					$('#workPic').hide();
					$('#video').html(data.data);
				}, 'json'
			);
		}

		return false;
	}

	$('#left > ul > li > a, #leftcol > ul > li > a, #rightcol > ul > li > a').bind('click', getMediaItem);
	$('#right > .previewVideoLink').bind('click', playVideo);

	// set initial project
	if (0 != curProj) {
		getData(curProj);
	}
})(jQuery)
