// {{{ XMLHttpRequest
var bXmlHttpSupport = true;
var iVdoSessionID = 0;
if (typeof XMLHttpRequest == "undefined" && window.ActiveXObject) 
{
	function XMLHttpRequest() 
	{
		var arrSignatures = 
		[
			"MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0",
			"MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP",
			"Microsoft.XMLHTTP"
		];
		for (var i=0; i < arrSignatures.length; i++) {
			try 
			{
				var oRequest = new ActiveXObject(arrSignatures[i]);
				return oRequest;
			}
			catch (oError) 
			{
				//ignore
			}
		}
		bXmlHttpSupport = false;
		throw new Error("MSXML is not installed on your system.");
	}
}

if(typeof XMLHttpRequest == "object" || window.ActiveXObject)
{
	bXmlHttpSupport = true;
}
// }}}

// {{{ addURLParam
function addURLParam(sURL, sParamName, sParamValue) 
{
    sURL += (sURL.indexOf("?") == -1 ? "?" : "&");
    sURL += encodeURIComponent(sParamName) + "=" + encodeURIComponent(sParamValue);
    return sURL;
}
// }}}

// {{{ addPostParam
function addPostParam(sParams, sParamName, sParamValue) 
{
	if (sParams.length > 0) 
	{
		sParams += "&";
	}
	return sParams + encodeURIComponent(sParamName) + "=" + encodeURIComponent(sParamValue);
}
// }}}

//{{{ Http
var Http = new Object;
Http.get = function (sURL, fnCallback, bAsynchronous) 
{
    if (bXmlHttpSupport) 
	{
        var oRequest = new XMLHttpRequest();
        oRequest.open("get", sURL, bAsynchronous);
        oRequest.onreadystatechange = function () 
		{
            if (oRequest.readyState == 4) 
			{
                fnCallback(oRequest.responseText);
            }
        }
        oRequest.send(null);
    }
};
//}}}

// {{{ Http.post
Http.post = function (sURL, sParams, fnCallback) 
{
	if (bXmlHttpSupport) 
	{
    	var oRequest = new XMLHttpRequest();
        oRequest.open("post", sURL, true);
        oRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        oRequest.onreadystatechange = function () 
		{
            if (oRequest.readyState == 4) 
			{
                fnCallback(oRequest.responseText);
            }
        }
        oRequest.send(sParams);
	}
};
// }}}

// {{{ fnDoVdoSessionInit
function fnDoVdoSessionInit( vdoPin, vdoVideoID )
{
	var sURL = "../php/init_vdo_session.php";
	sURL = addURLParam(sURL, "vdo_pin", vdoPin);
	sURL = addURLParam(sURL, "vdo_video_id", vdoVideoID);
	Http.get(sURL, function(sData)
	{
		if( sData == "INVALID_SESSION" )
		{
			// alert( sData );
			window.location.href = "http://www.dirty-x.com";
		}
		else
		{
			iVdoSessionID = sData;
			// alert( iVdoSessionID );
		}
	}, true);
}
// }}}

// {{{ fnStartVdoSession
function fnStartVdoSession( iMemberID )
{
	//alert("fnStartVdoSession");
	var sURL = "../php/start_vdo_session.php";
	sURL = addURLParam(sURL, "memberid", iMemberID);
	sURL = addURLParam(sURL, "vdo_session_id", iVdoSessionID);
	Http.get(sURL, function(sData)
	{
		if( sData != "OK" )
		{
			alert( sData );	
			if ( sData == "ERROR" )
			{
				// TODO: Hanle error writing to database	
				alert('Start Session: Error writing to db');
			}
		}
	}, true);
}
// }}}

// {{{ fnDoHeartBeat
function fnDoHeartBeat(iPlayTime)
{
	var sURL="../php/heartbeat_update.php";
	sURL = addURLParam(sURL, "playtime", iPlayTime);
	sURL = addURLParam(sURL, "vdo_session_id", iVdoSessionID);
	Http.get(sURL, function(sData)
	{
		if(!sData)
		{
			// TODO: Handle error updating database
		}
	}, true);
}
// }}}

// {{{ fnDoVdoSessions
function fnDoVdoSessions()
{
	var sURL="../php/end_vdo_session.php";
	sURL = addURLParam(sURL, "vdo_session_id", iVdoSessionID);
	Http.get(sURL, function(sData)
	{
		// DEBUGGING CODE
		// alert( sData );
	}, false);
}
// }}}

/* vim:set fdm=marker: */
