// general.js

var onLoadCallbacks      = [];
var videoTrackerPollTime = 10000;
var videoTrackerTime     = 0;
var videoTrackerTimer    = null;
var baseUrl = 'http://www.paddocks.co.za/learning/';

$(document).ready(initOnLoad);

function initOnLoad() {
	for (var i = 0; i < onLoadCallbacks.length; i++) {
		onLoadCallbacks[i]();
	}
}

function onLoad(callback) {
	onLoadCallbacks.push(callback);
}

function initLightbox() {
	/*Shadowbox.init({
		skipSetup: true,
	});
	
	Shadowbox.setup('.video-wrapper a', {
    handleOversize: 'resize',
	});*/
	$('a[rel*=shadowbox]').facebox();
	
	$('a[rel*=shadowbox]').each(function() {
		$(this).click(function() {
			startTrackingUserVideo($(this).attr('href'));
		});
	});
}

onLoad(initLightbox);





/** CUSTOM METHODS **/
// Start tracking the time a user spends on a video
function startTrackingUserVideo(href) {
	var queryString = getQueryString(href);
	var videoId     = queryString.id;
	var userId      = queryString.userid;
	
	var trackerDate = new Date();
	videoTrackerTime = trackerDate.getTime();
	
	// Start tracking the time
	videoTrackerTimer = setTimeout(function() {
		updateTrackingUserVideo(videoId, userId);
	}, videoTrackerPollTime);
}

// Update a users time_watched for the selected video
function updateTrackingUserVideo(videoId, userId) {
	var currentDate = new Date();
	var currentTime = currentDate.getTime();
	var currentTrackerTime = currentTime - videoTrackerTime;
	
	$.get(baseUrl+'course/video.php', {'id':videoId,'userid':userId,'time':currentTrackerTime,'view':'ajax'}, function(data) {
		if (data != 'COMPLETE') {
			videoTrackerTimer = setTimeout(function() {
				updateTrackingUserVideo(videoId, userId);
			}, videoTrackerPollTime);
		} else {
			stopTrackingUserVideo();
		}
	});
}

// Download video, force completion for current users time_watched
function downloadTrackingUserVideo(videoId, userId) {
	stopTrackingUserVideo();
	
	$.get(baseUrl+'course/video.php', {'id':videoId,'userid':userId,'view':'download'}, function(data) {
		//location.href = data;
	});
}

// Stop tracking the time a user spends on a video
function stopTrackingUserVideo() {
	clearTimeout(videoTrackerTimer);
	videoTrackerTimer = null;
	videoTrackerTime = 0;
}

// Parse a url string
function getQueryString(url) {
	if (url == '') url = location.href;
    
	var query = url;
	var queryString = query.substring(query.indexOf('?') + 1, query.length);
	var vars = queryString.split('&');
	var output = {};
	
	for (var i = 0; i < vars.length; i++) {
		var pair = vars[i].split('=');
		output[pair[0]] = pair[1];
	}
	
	return output;
}
