var ip;
var url = window.location.href;
var r = document.referrer;
var c = navigator.cookieEnabled;
var rid;
var w = screen.width;
var h = screen.height;
var d = screen.colorDepth;

var month_names = new Array("January", "February", "March", 
		"April", "May", "June", "July", "August", "September", 
		"October", "November", "December");

ua   = navigator.userAgent.toLowerCase();
ie  = (ua.indexOf("msie") && document.all && ua.indexOf("netscape") == -1);
nnf  = (ua.indexOf("netscape")  != -1 && ua.indexOf("gecko") != -1);
nni  = (ua.indexOf("netscape")  != -1 && ua.indexOf("msie") != -1);
nn6  = (ua.indexOf("netscape")  != -1);
gek  = (ua.indexOf("gecko")     != -1);
ff1  = (ua.indexOf("firefox")   != -1);
opr  = (ua.indexOf("opera")     != -1);
mac  = (ua.indexOf("mac")       != -1);
web  = (ua.indexOf("webtv")     != -1);
saf  = (ua.indexOf("safari")    != -1);
kon  = (ua.indexOf("konqueror") != -1);
nn4  = (document.layers);

if(ie) {
	window.onbeforeunload = pageUnload;
} else {
	window.onunload = pageUnload;
}

function loadJSON(thisUrl) {
	var headID = document.getElementsByTagName("head")[0];
	var newScript = document.createElement('script');
	newScript.type = 'text/javascript';
	newScript.src = thisUrl;
	headID.appendChild(newScript);

	newScript = null;
}

function statsResults(obj) {
	if(obj.msg!=null && obj.msg!="") {
		alert(obj.msg);
	}
	if(obj.id!=null && obj.id!="") {
		rid = obj.id;
	}
}

function unloadResults(obj) {
	if(obj.msg!=null && obj.msg!="") {
		//alert(obj.msg);
	}
}

function clientStats(obj) {
	ip = obj.ip;
	clientUrl = "http://webstats.mark5graphics.com/m5_stats_onload.php?callback=statsResults&sid=" + sid + "&u=" + window.location.href + "&r=" + r + "&i=" + ip + "&c=" + c + "&w=" + w + "&h=" + h + "&d=" + d;
	loadJSON(clientUrl);
}

function pageUnload() {
	unloadUrl = "http://webstats.mark5graphics.com/m5_stats_onunload.php?callback=unloadResults&sid=" + sid + "&rid=" + rid;
	loadJSON(unloadUrl);
}

function pageOnload() {
	jsonUrl = "http://webstats.mark5graphics.com/m5_stats_getip.php?callback=clientStats";
	loadJSON(jsonUrl);
}

function retrieveReport() {
	jsonUrl = "http://webstats.mark5graphics.com/m5_stats_report.php?callback=generateReport&sid=" + sid;
	
	var monthyear = getQueryVariable('monthyear');
	if(monthyear!="") {
		jsonUrl += "&monthyear=" + monthyear;
	}	
	loadJSON(jsonUrl);
}

function generateReport(obj) {
	
	var currDateTime = new Date()
	var selectedMonth = currDateTime.getMonth()+1;
	var selectedYear = currDateTime.getFullYear();
	
	var monthyear = getQueryVariable('monthyear');
	if(monthyear!="") {
		var d = monthyear.split("-");
		selectedMonth = d[0];
		selectedYear = d[1];
	}	
		
		
	var thisDiv = getObjectById('reportDiv');
	var html = "";
	
	html += "<h2>Web Stats For " + month_names[obj.date.month-1] + " " + obj.date.year + "</h2><br/>";
	
	html += "<form action='" + window.location + "' method=get>";
	html += "<select name=monthyear>";

	var prevDateTime = currDateTime;
	for(i=1; i<=12; i++) {
		var newMonth = prevDateTime.getMonth()+1;
		var newYear = prevDateTime.getFullYear();
		html += "<option value='" + newMonth + "-" + newYear + "'"
		if(newMonth==selectedMonth && newYear==selectedYear) {
			html += " SELECTED";
		}	
		html +=">"  + month_names[newMonth-1] + " " + newYear + "</option>";
	
		prevDateTime.setMonth(prevDateTime.getMonth()-1);
	}	
	html += "</select>";
	html += "<input type=submit value='Go' />";
	html += "</form>";
	html += "<br/>";
		
	if(obj.msg!=null) {
	
		html += obj.msg;
	
	} else {
		html += "<table border=1 width=800>";	
		html += "<tr>";
		html += "<th colspan=3>Unique Visitors: " + obj.visitors.length +"</th>";
		html += "</tr>";
		for(i=0;i<obj.visitors.length;i++) {
			html += "<tr>";
			html += "<td>" + obj.visitors[i].ip + "</td><td>" + obj.visitors[i].host + "</td><td>" + obj.visitors[i].count + "</td>";
			html += "</tr>";
		}
		html += "</table>";

		html += "<br/>";
				
		html += "<table border=1 width=800>";	
		html += "<tr>";
		html += "<th colspan=2>Page Views</th>";
		html += "</tr>";
		for(i=0;i<obj.pages.length;i++) {
			html += "<tr>";
			html += "<td>" + obj.pages[i].page + "</td><td>" + obj.pages[i].count + "</td>";
			html += "</tr>";
		}
		html += "</table>";
		
		html += "<br/>";
		
		html += "<table border=1 width=800>";	
		html += "<tr>";
		html += "<th colspan=2>Referers</th>";
		html += "</tr>";
		if(obj.referers!=null) {
			for(i=0;i<obj.referers.length;i++) {
				html += "<tr>";
				html += "<td>" + obj.referers[i].site + "</td><td>" + obj.referers[i].count + "</td>";
				html += "</tr>";
			}
		}
		html += "</table>";
		
		html += "<br/>";
		
		html += "<table border=1 width=800>";	
		html += "<tr>";
		html += "<th colspan=2>Browsers</th>";
		html += "</tr>";
		for(i=0;i<obj.browser.length;i++) {
			html += "<tr>";
			html += "<td>" + obj.browser[i].useragent + "</td><td>" + obj.browser[i].count + "</td>";
			html += "</tr>";
		}
		html += "</table>";
		
		html += "<br/>";
		
		html += "<table border=1 width=800>";	
		html += "<tr>";
		html += "<th colspan=2>Screen Resolution</th>";
		html += "</tr>";
		for(i=0;i<obj.screen.length;i++) {
			html += "<tr>";
			html += "<td>" + obj.screen[i].resolution + "</td><td>" + obj.screen[i].count + "</td>";
			html += "</tr>";
		}
		html += "</table>";
	}
	thisDiv.innerHTML = html;
	
}

function getObjectById(oid) {
	if(document.getElementById && document.getElementById(oid)) {
		return document.getElementById(oid);
	} else if (document.all && document.all(oid)) {
		return document.all(oid);
	} else if (document.layers && document.layers[oid]) {
		return document.layers[oid];
	} else {
		return false;
	}
}

function getQueryVariable(variable) {
	var rtn = "";
	
	var qs = window.location.search.substring(1);
	var vars = qs.split("&");
	for (var i=0;i<vars.length;i++) { 
		var pair = vars[i].split("="); 
		if (pair[0] == variable) { 
			rtn = pair[1]; 
		} 
	} 
	return rtn;

} 







