<!--
// Figure out whether this is Navigator or IE. Assume version 4.
isNav = (navigator.appName.indexOf("Netscape") != -1);
isIE = (navigator.appName.indexOf("Microsoft") != -1);
if(isIE)	// works for IE only
{
	var PPCEvents = "";
	var PPCECounter = 0;
	var stype, sx, sy, sname, snode, svalue;
	var accur = 0;
	var cookiename = "ROICommanderVisiting";
	var PPCVID = GetCookie(cookiename);
	var gTypePrefix = "";
	var gHScroll = 0;
	var gVScroll = 0;
	var groupid = Math.round(Math.random() * 1000);
	
	if(!PPCET) var PPCET = "1, 3, 4, 7, 12, 19, 22, 23, 24, 27";
	if(!PPCTSCRIPT) var PPCTSCRIPT = "savelog.asp";
	if(!PPCCustomData) var PPCCustomData = "";
	if(!CurrentPage) var CurrentPage = document.URL;
	
	if(PPCVID.length == 0)
	{
		var ndate=new Date();
		ndate.setTime (ndate.getTime() + (1000*60*20));	// SET COOKIE EXPIRES AFTER 20 minutes //
		PPCVID = getguid();
		SetCookie(cookiename, PPCVID, ndate);
	}
	
	if(isIE) var poster = new ActiveXObject("Msxml2.XMLHTTP.3.0");

	// Now use addhandlers() to register all event handlers on all
	// objects of interest in the document.

	// Add handlers to all links.
	for(var a = 0; a < document.links.length; a++)
	{
		addhandlers(document.links[a]);
	}

	// Add handlers to all images.
	for(var b = 0; b < document.images.length; b++)
	{
		addhandlers(document.images[b]);
	}

	// Add handlers on all forms and all form elements.
	for(var f = 0; f < document.forms.length; f++)
	{
		addhandlers(document.forms[f]);
		for(var g = 0; g < document.forms[f].elements.length; g++)
		{
			addhandlers(document.forms[f].elements[g]);
		}
	}

	// Add handlers to body.
	addhandlers(document.body);
}

// This function registers the event handler defined above on all possible
// event handlers for the specified object.
function addhandlers(o)
{
	P = " " + PPCET + ",";
	if(P.indexOf(" 1,") != -1) o.onabort = handler;
	if(P.indexOf(" 2,") != -1) o.onblur = handler;
	if(P.indexOf(" 3,") != -1) o.onchange = handler;
	if(P.indexOf(" 4,") != -1) o.onclick = handler;
	if(P.indexOf(" 5,") != -1) o.ondblclick = handler;
	if(P.indexOf(" 6,") != -1) o.ondragdrop = handler;
	if(P.indexOf(" 7,") != -1) o.onerror = handler;
	if(P.indexOf(" 8,") != -1) o.onfocus = handler;
	if(P.indexOf(" 9,") != -1) o.onkeydown = handler;
	if(P.indexOf(" 10,") != -1) o.onkeypress = handler;
	if(P.indexOf(" 11,") != -1) o.onkeyup = handler;
	if(P.indexOf(" 12,") != -1) o.onload = handler;
	if(P.indexOf(" 13,") != -1) o.onmousedown = handler;
	if(P.indexOf(" 14,") != -1) o.onmousemove = handler;
	if(P.indexOf(" 15,") != -1) o.onmouseout = handler;
	if(P.indexOf(" 16,") != -1) o.onmouseover = handler;
	if(P.indexOf(" 17,") != -1) o.onmouseup = handler;
	if(P.indexOf(" 18,") != -1) o.onmove = handler;
	if(P.indexOf(" 19,") != -1) o.onreset = handler;
	if(P.indexOf(" 20,") != -1) o.onresize = handler;
	if(P.indexOf(" 21,") != -1) o.onselect = handler;
	if(P.indexOf(" 22,") != -1) o.onsubmit = handler;
	if(P.indexOf(" 23,") != -1) o.onunload = handler;
	if(P.indexOf(" 24,") != -1) o.onscroll = handler;
	if(P.indexOf(" 27,") != -1) o.onstop = handler;
}

// generic event handler, collects the events information and add it to the log.
function handler(e)
{
	var vname = "";
	var vnode = "";
	var vvalue = "";
	if (isIE)
	{
		e =	window.event;	// Grab the event.
		if(e.srcElement)
		{
			if(e.srcElement.name) vname = e.srcElement.name;
			if(e.srcElement.nodeName == "INPUT")
			{
				vnode = String(e.srcElement.type).toUpperCase();
			}
			else
			{
				vnode = e.srcElement.nodeName;
			}
			if(e.type.toLowerCase() == "change") vvalue = GetValue(e.srcElement, vnode);
			if(vnode.toUpperCase() == "A") vvalue = (e.srcElement.innerText + " - " + e.srcElement.href).substring(0, 256);
			if(vnode.toUpperCase() == "IMG") vvalue = e.srcElement.src.substring(0, 256);
			if(e.type.toLowerCase() == "scroll") vvalue = GetScrollingAmount(e.srcElement); else gTypePrefix = "";
			if(vnode.toUpperCase() == "FORM") vvalue = e.srcElement.action.substring(0, 256);
		}
		else
		{
			vnode = "BODY";
			if((e.type.toLowerCase() == "load")) vvalue = PPCCustomData;
			if(e.type.toLowerCase() == "scroll") vvalue = GetScrollingAmount(document.body); else gTypePrefix = "";
		}
		vvalue = Entityfy(vvalue);
		vname = Entityfy(vname);
		logevent(gTypePrefix + e.type, e.x, e.y, vname, vnode, vvalue);
		e.cancelBubble = false;
	}
	if((e.type.toLowerCase() == "unload") || (PPCECounter%20 == 0))	// update the log every 20 events or onunload
	{
		PPCUnload();
		PPCEvents = "";
		accur = 0;
	}
}

function logevent(etype, ex, ey, ename, enode, evalue)
{
	var curtime = new Date();
	var strtime = curtime.toGMTString().replace(" UTC", "");
	strtime = strtime.substring(strtime.indexOf(",") + 2);
	
	// Check if this is a repeated event
//	if(etype == stype && ex == sx && ey == sy && ename == sname && enode == snode && evalue == svalue)
	if((etype == stype && ename == sname && enode == snode)
	   && (etype.indexOf("scroll") >= 0 || (ex == sx && ey == sy && evalue == svalue))	//ignores x,y,value if the event was a scroll
	  )
	{
		accur++;
		svalue = evalue;	// get the last value from the repeated event
	}
	else
	{
		PPCECounter++;
		if(accur != 0) PPCEvents += " Value='" + svalue + "'";
		if(accur != 0) PPCEvents += " Repeat='" + accur + "'/>\n";
		stype = etype; sx = ex; sy = ey; sname = ename; snode = enode; svalue = evalue;	// store the values for comparing with the next event
		PPCEvents += "<Event Time='" + strtime + "' TimeMS='" + curtime.getMilliseconds() + "' ID='" + PPCECounter + "'" + " GroupID='" + groupid + "'";
		PPCEvents += " Type='" + stype + "'";
		PPCEvents += " X='" + sx + "' Y='" + sy + "'";
		PPCEvents += " Name='" + sname + "'";
		PPCEvents += " Node='" + snode + "'";
		accur = 1;
	}
}

function PPCUnload()
{
	var sendVal = "";
	var docURL = document.URL;
	if(CurrentPage!=docURL) docURL=docURL.substr(0, docURL.lastIndexOf("/")) + "/" + CurrentPage;
	PPCEvents += " Value='" + svalue + "'";
	PPCEvents += " Repeat='" + accur + "'/>\n";
	sendVal += "<Events VID='" + PPCVID + "' CID='" + PPCCID + "' Page='" + Entityfy(docURL) + "'";
	sendVal += " ScreenW='" + screen.width + "' ScreenH='" + screen.height + "'";
	sendVal += " ClientWidth='" + document.body.clientWidth + "' ClientHeight='" + document.body.clientHeight + "'";
	sendVal += " ScrollWidth='" + document.body.scrollWidth + "' ScrollHeight='" + document.body.scrollHeight + "'";	
	sendVal += ">\n" + PPCEvents + "</Events>";
	SendLog(sendVal);
}

function GetValue(nelement, ntype)
{
	var retVal = "";
	switch(ntype.toUpperCase())
	{
	case "TEXT":
	case "TEXTAREA":
		retVal = String(nelement.value).length;
		break;
	case "RADIO":
	case "CHECKBOX":
		nelement.checked ? retVal = "Check " : retVal = "Uncheck ";
		retVal += nelement.value;
		break;
	case "SELECT":
		retVal = nelement.selectedIndex + " " + nelement.options[nelement.selectedIndex].value;
		break;
	case "PASSWORD":
		break;
	case "FILE":
		break;
	case "SUBMIT":
		break;
	case "BUTTON":
		break;
	case "RESET":
		break;
	case "IMAGE":
		break;
	}	
	return retVal;
}

function SendLog(x)
{
	//alert(x);
	poster.open("POST", PPCTSCRIPT, false);
	poster.setRequestHeader("CONTENT_TYPE", "text/xml");
	poster.send(x);
	//alert(poster.responseTEXT);
}

function GetScrollingAmount(elmnt)
{
	var retVal = svalue;
	if(elmnt.nodeName.toLowerCase() == "body")	// Log Vscroll and Hscroll for body only.
	{
		if(elmnt.scrollTop != gVScroll)
		{
			if(elmnt.scrollTop > gVScroll) gTypePrefix = "d"; else gTypePrefix = "u";
			retVal = elmnt.scrollTop;
			gVScroll = elmnt.scrollTop;
		}
		else if(elmnt.scrollLeft != gHScroll)
		{
			if(elmnt.scrollLeft > gHScroll) gTypePrefix = "r"; else gTypePrefix = "l";
			retVal = elmnt.scrollLeft;
			gHScroll = elmnt.scrollLeft;
		}
		// Sometimes the browser repeat the last scrolling event so all the checks before fails (currnt value = old value)
	}
	else	// for other elements just log scroll and return both scrolling values.
	{
		gTypePrefix = "";
		retVal = elmnt.scrollLeft + ", " + elmnt.scrollTop;
	}
	return retVal;
}

function Entityfy(txt)
{
	txt = new String(txt);
	txt = txt.replace(/&/g, "&amp;");
	txt = txt.replace(/</g, "&lt;");
	txt = txt.replace(/>/g, "&gt;");
	txt = txt.replace(/\"/g, "&quot;");
	txt = txt.replace(/'/g, "&apos;");
	return txt;
}
-->
