var myHours, myMinutes, mySeconds, myText, currentTime, startTime, endTime;

function sendTag(class, tag)
{
	if (window.XMLHttpRequest) {
		try {
			req = new XMLHttpRequest();
		} catch(e) {
			req = false;
		}
	// branch for IE/Windows ActiveX version
	}
	else if(window.ActiveXObject) {
		try {
			req = new ActiveXObject("Msxml2.XMLHTTP");
		} catch(e) {
			try {
				req = new ActiveXObject("Microsoft.XMLHTTP");
			} catch(e) {
				req = false;
			}
		}
	}
	
	req.open("POST", "http://activecampus2.ucsd.edu/~jlintern/tagreceive.php", true);
	req.setRequestHeader("Content-Type", "text/plain");
	req.send(class + "\n" + tag);

}

function requestTags(class) {

	if(window.XMLHttpRequest) {
		try {
			reqobj = new XMLHttpRequest();
		} catch(e) {
			reqobj = false;
		}
	// branch for IE/Windows ActiveX version
	} else if(window.ActiveXObject ) {
		try {
			reqobj = new ActiveXObject("Msxml2.XMLHTTP");
		} catch(e){
			try{
				reqobj = new ActiveXObject("Microsoft.XMLHTTP");
			} catch(e){
				reqobj = false;
			}
		}
	}
	if(reqobj) {
		reqobj.onreadystatechange = receiveTags;
		// Get the submission status given the passed in info.
		var url = "http://activecampus2.ucsd.edu/~jlintern/tagsend.php?class=" + class;
		reqobj.open ("GET", url, true);
		reqobj.send('');
	}
	else {
		if(debug){
		alert("Couldn't get request object");
		}
	}

}

function receiveTags() {

	// only if req shows "loaded"
	if (reqobj.readyState == 4) {
		// only if "OK"
		if ( reqobj.status == 200) {

			var data = reqobj.responseText;
			data = data.split("\n");
			myHours = new Array();
			myMinutes = new Array();
			mySeconds = new Array();
			myText = new Array();
			startTime = new Array();
			endTime = new Array();
			currentTime = new Array();

			startTime[0] = data[0];
			startTime[1] = data[1];
			startTime[2] = data[2];
			endTime[0] = data[3];
			endTime[1] = data[4];
			endTime[2] = data[5];
			currentTime[0] = data[6];
			currentTime[1] = data[7];
			currentTime[2] = data[8];

			var counter = 9;

			if (data.length == 10) return;

			for (var i = 0; i < ((data.length-9) / 4); i++)
			{
				if (counter == data.length-1) break;

				var h = data[counter++];
				var m = data[counter++];
				var s = data[counter++];

				myHours[i] = getTagOffsetHours(h,m,s);
				myMinutes[i] = getTagOffsetMinutes(h,m,s);
				mySeconds[i] = getTagOffsetSeconds(h,m,s);

				myText[i] = data[counter++];	

			}

			resetTags();
			positionTags();
			drawTagsDos();
//			initialize();
		}
	else {
		// Die silently?
		}
		reqobj = false;
	}
}

function getTagOffsetHours(hours, minutes, seconds)
{
	var lectStartTime = parseInt(startTime[0] * 60 * 60) + parseInt(startTime[1] * 60) + parseInt(startTime[2]);
	var currTagTime = parseInt(hours * 60 * 60) + parseInt(minutes * 60) + parseInt(seconds);
	var diff = currTagTime - lectStartTime;
	diff /= 60*60;
	diff -= .5;
	diff = parseInt(diff);
	return diff;
}
	

function getCurrentHours()
{
	var lectStartTime = parseInt(startTime[0] * 60 * 60) + parseInt(startTime[1] * 60) + parseInt(startTime[2]);
	var currServerTime = parseInt(currentTime[0] * 60 * 60) + parseInt(currentTime[1] * 60) + parseInt(currentTime[2]);

	var diff = currServerTime - lectStartTime;
	diff /= 60*60;
	diff -= .5;
	diff = parseInt(diff);
	return diff;
}

function getTagOffsetMinutes(hours, minutes, seconds)
{

	var lectStartTime = parseInt(startTime[0] * 60 * 60) + parseInt(startTime[1] * 60) + parseInt(startTime[2]);
	var currTagTime = parseInt(hours * 60 * 60) + parseInt(minutes * 60) + parseInt(seconds);
	var diff = currTagTime - lectStartTime;

	diff /= 60;
	diff -= .5;
	diff = diff.toFixed(0);

	return diff % 60;
}


function getCurrentMinutes()
{
	var lectStartTime = parseInt(startTime[0] * 60 * 60) + parseInt(startTime[1] * 60) + parseInt(startTime[2]);
	var currServerTime = parseInt(currentTime[0] * 60 * 60) + parseInt(currentTime[1] * 60) + parseInt(currentTime[2]);

	var diff = currServerTime - lectStartTime;
	diff /= 60;
	diff -= .5;
	diff = diff.toFixed(0);

	return diff % 60;
}

function getTagOffsetSeconds(hours, minutes, seconds)
{
	var lectStartTime = parseInt(startTime[0] * 60 * 60) + parseInt(startTime[1] * 60) + parseInt(startTime[2]);
	var currTagTime = parseInt(hours * 60 * 60) + parseInt(minutes * 60) + parseInt(seconds);
	var diff = currTagTime - lectStartTime;

	return diff % 60;
}

function getCurrentSeconds()
{
	var lectStartTime = parseInt(startTime[0] * 60 * 60) + parseInt(startTime[1] * 60) + parseInt(startTime[2]);
	var currServerTime = parseInt(currentTime[0] * 60 * 60) + parseInt(currentTime[1] * 60) + parseInt(currentTime[2]);

	var diff = currServerTime - lectStartTime;

	return diff % 60;
}

function getCurrentTime()
{
	var jminutes = getCurrentMinutes();
	var jseconds = getCurrentSeconds();

	jminutes = (jminutes < 10 ? "0" : "") + jminutes;
	jseconds = (jseconds < 10 ? "0" : "") + jseconds;

	return getCurrentHours() + ":" + jminutes + ":" + jseconds;
}
