﻿
function startVideo(containerId, containerStateId, playerId) {
	if (SlideDownContainer(containerStateId))
		
		$(containerId).slideDown(700, function() {
			$(playerId).fadeIn(500);
		});
	else {
		$(playerId).fadeOut(100, function() {
			$(containerId).slideUp(300);
		});
		
	}
}

function SlideDownContainer(containerStateId) {
	var containerState = document.getElementById(containerStateId);
	if (containerState.value == "0") {
		containerState.value = "1"
		return true;
	}
	containerState.value = "0";
	return false;
}

$(function() {
	$('div[name=videoId]').each(function() {LoadVideo($(this).attr("id"));});
});


function LoadVideo(id) {
	var qstr = "http://gdata.youtube.com/feeds/api/videos?q=" + id + "&alt=json-in-script&callback=?&max-results=1";
	$.getJSON(qstr, function(data) {
		var entry = data.feed.entry[0];

		var duration = entry["media$group"]["yt$duration"]["seconds"];
		var published = entry["published"]["$t"];
		var viewCount = entry["yt$statistics"]["viewCount"];
		var author = entry["author"][0]["name"]["$t"];
		var comments = entry["gd$comments"]["gd$feedLink"]["countHint"];
		var commentsLink = entry["gd$comments"]["gd$feedLink"]["href"];

		LoadControl(id, duration, published, viewCount, author, comments, commentsLink);
	});
}

function LoadControl(id, duration, published, viewCount, author, comments, commentsLink) {
	$('#publishedDate' + id).html(ParseDate(published));
	$('#viewCount' + id).html(ParseViewCount(viewCount));
	$('#duration' + id).html(ParseDuration(duration)).fadeIn("slow");
	$('#commentsLink' + id).attr('href', commentsLink).html(ParseComments(comments));
	
	var userLink = $('#authorLink' + id).attr('href');
	$('#authorLink' + id).attr('href', userLink + author).html(author);

	$("#" + id).fadeIn("slow");
}

function ParseDate(published)
{
	if (published == null || published.length == 0) return;
	
	// get substring "2009-08-25"
	var sub = published.substr(0, 10);
	
	// split on 3
	var splits = sub.split('-');
	
	// convert to int32 to exclude "0" from "08"
	var year = new Number(splits[0]);
	var month = new Number(splits[1]);
	var day = new Number(splits[2]);
	
	// get current date
	var cdate = new Date();
	var yearspast = cdate.getFullYear() - year;
	var monthspast = cdate.getMonth() + 1 - month; // getMonth() returns 0 to 11
	var dayspast = cdate.getDate() - day;
	
	
	// format resul string 
	// variants:
	// 1. 2 years ago
	// 2. 3 manth ago
	// 3. 1 day ago
	// 4. today
	
	var result;
	if (yearspast > 0) {
	    if (yearspast != 1) {
	        return yearspast + " years ago";
	    }
	    else {
	        if (monthspast < 0)
	            return (monthspast + 12) + " months ago";
	    }
	    return "1 year ago";
	}

	if (monthspast > 0) {
	    if (monthspast != 1)
	        return monthspast + " months ago";
	    else
	        return "1 month ago";
	}

	if (dayspast > 0) {
	    if (dayspast != 1)
	        return dayspast + " days ago";
	    else
	        return "1 day ago";
	}
	
	return "today";	
			
}


function ParseDuration(duration) {
	if (duration == null || duration.length == 0) return;

	var seconds = new Number(duration);

	var s = seconds % 60;
	var m = (seconds - s) / 60;
	

	if (s < 10) return m + ":0" + s;
	else return m + ":" + s;
}

function ParseComments(comments) {
	if (comments == null || comments.length == 0) return;

	var com = new Number(comments);

	if (com > 1)
		return com + " comments";
	else if (com == 1)
		return "1 comment";
	else
		return "no comments";
}
	
function ParseViewCount(viewCount) {

	if (viewCount == null || viewCount.length == 0) return;
	
	var views = new Number(viewCount);
	var result = new Array();
	var count = 0;

	for (var i = 0; i < 4; i++) {
		result[i] = views % 1000;
		views -= result[i];


		if (views == 0) break;
		else {
			views = views / 1000
			count++;
		}
	}

	var resultString = "";
	
	for(var i = count; i >= 0; i--) {
		if(i!=count)
		{
			// 11 -> 011 = 2,011
			if(result[i] < 100) resultString += "0";
			// 1 -> 001 = 2,001
			if(result[i] < 10) resultString += "0";
		}
		resultString += result[i];
		if(i != 0) resultString+=",";
	}

	if(result[0] > 1)
		return resultString + " views";
	else if(result[0] == 1)
		return "1 view";
	else 
		return "no views";
}
