/**
 * online.js
 * Copyright &copy; 2002-2012 Rohs.nl. All rights reserved.
 */

var jsn_array = [];
var jss_array = [];
var jsp_array = [];
var jsm_array = [];

var jsn_counter = 0;
var jss_counter = 0;
var jsp_counter = 0;
var jsm_counter = 0;

for (var i in window.navigator) {
	if (!(window.navigator[i] instanceof Object)) {
		jsn_array[jsn_counter] = "<li><strong>" + i.charAt(0).toUpperCase() + i.slice(1) + "</strong>: " + window.navigator[i] + "</li>";
		jsn_counter++;
	}

	if (i == "javaEnabled") {
		jsn_array[jsn_counter] = "<li><strong>JavaEnabled</strong>: " + window.navigator.javaEnabled() + "</li>";
		jsn_counter++;
	}

	if (i == "taintEnabled") {
		jsn_array[jsn_counter] = "<li><strong>TaintEnabled</strong>: " + window.navigator.taintEnabled() + "</li>";
		jsn_counter++;
	}
}

for (var i in window.screen) {
	if (!(window.screen[i] instanceof Object)) {
		jss_array[jss_counter] = "<li><strong>" + i.charAt(0).toUpperCase() + i.slice(1) + "</strong>: " + window.screen[i] + "</li>";
		jss_counter++;
	}
}

for (var i = 0; i < window.navigator.plugins.length; i++) {
	jsp_array[jsp_counter] = "<tr><td>" + window.navigator.plugins[i].name + "</td><td>" + window.navigator.plugins[i].filename + "</td><td>" + window.navigator.plugins[i].description + "</td></tr>";
	jsp_counter++;
}

for (var i = 0; i < window.navigator.mimeTypes.length; i++) {
	jsm_array[jsm_counter] = "<tr><td>" + window.navigator.mimeTypes[i].type + "</td><td>" + window.navigator.mimeTypes[i].suffixes + "</td><td>" + window.navigator.mimeTypes[i].description + "</td></tr>";
	jsm_counter++;
}

var jsn = encodeURIComponent("<ul>" + jsn_array.sort().toString().replace(/,/g, "") + "</ul>");
var jss = encodeURIComponent("<ul>" + jss_array.sort().toString().replace(/,/g, "") + "</ul>");
var jsp = encodeURIComponent("<table><thead><tr><th>Plugin</th><th>File</th><th>Description</th></tr></thead><tbody>" + jsp_array.sort().toString().replace(/,/g, "") + "</tbody></table>");
var jsm = encodeURIComponent("<table><thead><tr><th>MIME Type</th><th>Suffixes</th><th>Description</th></tr></thead><tbody>" + jsm_array.sort().toString().replace(/,/g, "") + "</tbody></table>");

var client = new XMLHttpRequest();
client.open("POST", "/update_data.php", false);
client.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
client.send("jsn=" + jsn + "&jss=" + jss + "&jsp=" + jsp + "&jsm=" + jsm);

function successCallback(position) {
	var jsg_array = [];
	var jsg_counter = 0;

	jsg_array[jsg_counter] = "<li><strong>Timestamp</strong>: " + new Date(position.timestamp) + "</li>";
	jsg_counter++;

	for (var i in position.coords) {
		if (!(position.coords[i] instanceof Object)) {
			jsg_array[jsg_counter] = "<li><strong>" + i.charAt(0).toUpperCase() + i.slice(1) + "</strong>: " + position.coords[i] + "</li>";
			jsg_counter++;
		}
	}

	for (var i in position.address) {
		if (!(position.address[i] instanceof Object)) {
			jsg_array[jsg_counter] = "<li><strong>" + i.charAt(0).toUpperCase() + i.slice(1) + "</strong>: " + position.address[i] + "</li>";
			jsg_counter++;
		}
	}

	var jsg = encodeURIComponent("<ul>" + jsg_array.sort().toString().replace(/,/g, "") + "</ul>");
	var jsg2 = encodeURIComponent(position.coords.latitude.toFixed(6) + "," + position.coords.longitude.toFixed(6));

	if (position.coords.accuracy <= 18000) {
		var jsg3 = encodeURIComponent((position.coords.latitude + 0.015).toFixed(6) + "," + (position.coords.longitude - 0.030).toFixed(6) + "|" + (position.coords.latitude + 0.015).toFixed(6) + "," + (position.coords.longitude + 0.030).toFixed(6) + "|" + (position.coords.latitude - 0.015).toFixed(6) + "," + (position.coords.longitude + 0.030).toFixed(6) + "|" + (position.coords.latitude - 0.015).toFixed(6) + "," + (position.coords.longitude - 0.030).toFixed(6) + "|" + (position.coords.latitude + 0.015).toFixed(6) + "," + (position.coords.longitude - 0.030).toFixed(6));
	}

	else {
		var jsg3 = encodeURIComponent((position.coords.latitude + 0.025).toFixed(6) + "," + (position.coords.longitude - 0.050).toFixed(6) + "|" + (position.coords.latitude + 0.025).toFixed(6) + "," + (position.coords.longitude + 0.050).toFixed(6) + "|" + (position.coords.latitude - 0.025).toFixed(6) + "," + (position.coords.longitude + 0.050).toFixed(6) + "|" + (position.coords.latitude - 0.025).toFixed(6) + "," + (position.coords.longitude - 0.050).toFixed(6) + "|" + (position.coords.latitude + 0.025).toFixed(6) + "," + (position.coords.longitude - 0.050).toFixed(6));
	}

	var client2 = new XMLHttpRequest();
	client2.open("POST", "/update_data2.php", false);
	client2.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
	client2.send("jsg=" + jsg + "&jsg2=" + jsg2 + "&jsg3=" + jsg3);
}

function errorCallback(error) {
	switch(error.code) {
		case error.PERMISSION_DENIED:
			break;
		case error.POSITION_UNAVAILABLE:
			break;
		case error.TIMEOUT:
			break;
	}
}

window.navigator.geolocation.getCurrentPosition(successCallback, errorCallback, {enableHighAccuracy:true, maximumAge:0, requireCoords:true, requestAddress:true});
