INETFORUS = {
	debug: false,
	map: false,
	route: [],
	final: false,
	init: function () {
		window.onload = function() {INETFORUS.bodyload();};
	}(),
	canPlaceHold: function() {
		var inp = document.createElement('input');
		return 'placeholder' in inp;
	},
	setBookmark: function() {
		var bookmarkit = document.getElementById('bookmark');
		if(bookmarkit && !navigator.userAgent.match(/safari/i) && !window.opera) {
			bookmarkit.innerHTML = '<a href="javascript: INETFORUS.bookmark(location.href, document.title);">Bookmark Us</a>';
		}
	},
	bodyload: function () {
		var bookmarkit = document.getElementById('bookmark'),
			mapit = document.getElementById('map'),
			searchfield = document.getElementById('domain'),
			tracert = document.createElement('script'),
			i = INETFORUS,
			errpos = false,
			offleft = 0,
			offtop = 0,
			cnt;
		INETFORUS.domain = document.getElementById('domain').value;
		if(mapit) {
			i.setMap();
		}
		if(bookmarkit) {
			i.setBookmark();
		}
		if(!i.canPlaceHold()) {
			if(searchfield.value === '') {
				searchfield.value = searchfield.getAttribute('placeholder');
			}
			searchfield.onfocus = function(e) {
					var inp = this || e.target || e.srcElement,
						ph = inp.getAttribute('placeholder'),
						val = inp.value;
					if(val == ph) {
						inp.value = '';
					}
				};
			searchfield.onblur = function(e) {
					var inp = this || e.target || e.srcElement,
						ph = inp.getAttribute('placeholder'),
						val = inp.value;
					if(val == '') {
						inp.value = ph;
					}
				};
		}
		tracert.src= '/tracert.php?domain=' + INETFORUS.domain;
		document.body.appendChild(tracert);
	},
	bookmark: function(furl, ftitle) {
		var bmsvc, ios, uri, newBkmkId
		if(!furl) {
			furl = location.href;
		}
		if(!ftitle) {
			furl = document.title;
		}
		try {
			window.external.AddFavorite(furl, ftitle);
		} catch(err) {
			if(INETFORUS.debug) {alert('Error using IE method: ' + err);}
			try {
				window.sidebar.addPanel(ftitle, furl, "");
			} catch(err) {
				if(INETFORUS.debug) {alert('Error using Firefox method: ' + err);}
				alert('We could not find a suitable method for adding the bookmark.  Please add the bookmark manually.');
			}
		}
	},
	setMap: function() {
		INETFORUS.map = new GMap2(document.getElementById("map"));
		INETFORUS.map.setCenter(new GLatLng(0, 0), 1);
		INETFORUS.map.setUIToDefault();
	},
	getMap: function(vars) {
		var geocoder = new GClientGeocoder(),
			setMap = function(point) {
				var zoom = 3,
					icon, marker;
				if(!point) {
					point = new GLatLng(0, 0);
					zoom = 1;
				}
				icon = new GIcon();
				icon.image = vars.icon;
				icon.iconSize = new GSize(16, 16);
				icon.shadow = '/images/16.png';
				icon.shadowSize = new GSize(16, 16);
				icon.iconAnchor = new GPoint(8, 8);
				icon.infoWindowAnchor = new GPoint(8, 0);
				INETFORUS.map.setCenter(point, zoom);
				marker = new GMarker(point, icon);
				INETFORUS.map.addOverlay(marker);
				marker.openInfoWindowHtml('<strong>' + vars.domain + ' (' + vars.ip + ')</strong><br>' + vars.loc.str + (vars.pr ? '<br>PageRank: ' + vars.pr : '') + (vars.status ? '<br>Status: ' + vars.status + ' (' + vars.status_code + ' ' + vars.status_message  + ')' : '') + '<br>Ping: ' + vars.ping + ' ms<br>&nbsp;');
				GEvent.addListener(marker, "click", function() {
					marker.openInfoWindowHtml('<strong>' + vars.domain + ' (' + vars.ip + ')</strong><br>' + vars.loc.str + (vars.pr ? '<br>PageRank: ' + vars.pr : '') + (vars.status ? '<br>Status: ' + vars.status + ' (' + vars.status_code + ' ' + vars.status_message  + ')' : '') + '<br>Ping: ' + vars.ping + ' ms<br>&nbsp;');
				});
				INETFORUS.final = point;
			};
		if(vars.loc.lat != '' && vars.loc.long != '') {
			setMap(new GLatLng(vars.loc.lat, vars.loc.long));
		} else {
			geocoder.getLatLng(
				vars.loc.str,
				function(point) {
					setMap(point);
				}
			);
		}
	},
	addRoute: function(vars) {
		var rt_icon, rt_marker,
			point = new GLatLng(vars.loc.lat, vars.loc.long);
		if(point) {
			INETFORUS.route[INETFORUS.route.length] = point;
			rt_icon = new GIcon();
			rt_icon.image = vars.icon;
			rt_icon.iconSize = new GSize(16, 16);
			rt_icon.iconAnchor = new GPoint(8, 8);
			rt_marker = new GMarker(point, rt_icon);
			GEvent.addListener(rt_marker, "click", function() {
				var myHtml = '<strong>' + vars.domain + ' (' + vars.ip + ')</strong><br>' + vars.loc.city + ', ' + vars.loc.state + ' ' + vars.loc.zip +'<br>Time: ' + vars.time;
				INETFORUS.map.openInfoWindowHtml(point, myHtml);
			});
			INETFORUS.map.addOverlay(rt_marker);
		}
	},
	addRouteLines: function() {
		INETFORUS.route[INETFORUS.route.length] = INETFORUS.final;
		var i = INETFORUS.route.length,
			r = INETFORUS.route,
			polyOptions = {geodesic:true},
			polyline = false;
		for(i; i > 0; i--) {
			polyline = new GPolyline(
				[
					r[i], 
					r[i-1]
				], 
				"#004f8c", 2, 1, polyOptions
			);
			INETFORUS.map.addOverlay(polyline);
		}
	}
}