// JavaScript Document

var lanip;
var username;
var activediv = 'ipmangomain';
var toggle = 1;

var old_lat = 0
var old_long = 0

function setlanip(IP, java_version, java_vendor, java_vendor_url, java_class_version) {

	lanip = IP;	
//	alert(java_version + java_vendor + java_vendor_url + java_class_version);
	document.getElementById('laniptd').innerHTML = IP;
	//document.getElementById('cleary').innerHTML = "";
}

function getlanip() {
	code = '<APPLET CODE="MyAddress.class" MAYSCRIPT WIDTH=1 HEIGHT=1 align="middle">'+
			'Sorry, Java is disabled'+
			'<PARAM NAME="BGCOLOR" VALUE="BLACK">'+
			'<PARAM NAME="CALL" VALUE="setlanip">'+
			'</APPLET>';
	document.getElementById('cleary').innerHTML = code;	
}

/*java.version		Java version number
  java.vendor		Java vendor-specific string
  java.vendor.url	Java vendor URL
  java.class.version	Java class version number
  os.name		Operating system name
  os.arch		Operating system architecture
  os.version	        Operating system version
  file.separator	File separator (eg, "/")
  path.separator	Path separator (eg, ":")
  line.separator	Line separator */
  
/*function $(id) {
	return document.getElementById(id);
}*/
  
function display(divid)
{
	$(activediv).style.display="none";
	$(divid).style.display = "block";
	activediv = divid;
}

function doggle(id)
{
	if($(id).style.display == 'none')
		$(id).style.display = 'block';
	else if($(id).style.display == 'block')
		$(id).style.display = 'none';
}
/*
//AJAX related codies
function createajaxobject() {
	try {
		ob = new ActiveXObject("Msxml2.XMLHTTP");		//If the Javascript version is greater than 5.
	}
	catch (e) {
		try {
			ob = new ActiveXObject("Microsoft.XMLHTTP");			//If we are using older version of Internet Explorer.
		}
		catch (E) {
			ob = false;	//Else we must be using a non-IE browser.
		}
	}
	//If we are using a non-IE browser, create a javascript instance of the object.
	if (!ob && typeof XMLHttpRequest != 'undefined') {
		ob = new XMLHttpRequest();
	}
	return ob;
}
*/
/*
function get_ajax(url , divid) {
	rapid = createajaxobject(); 
	if(rapid) {
		rapid.onreadystatechange = function() {
										if (rapid.readyState == 4 && rapid.status == 200) {	
											try {
													//alert(rapid.responseText);

													$(divid).innerHTML = rapid.responseText;
													return(rapid.responseText);
											}
											catch(e) {
											}		
										}
									};
		rapid.open('GET',url,true);
		rapid.send(null);
	}
	else
		window.location = url;
}
*/

function getmd5() {
	get_ajax('http://www.ipmango.com/md5.php?md5=' + encodeURIComponent($('md5s').value), 'md5a');	
}

function getsha1() {
	get_ajax('http://www.ipmango.com/sha1.php?sha1=' + encodeURIComponent($('sha1s').value), 'sha1a');	
}

function gethash() {
	get_ajax('http://www.ipmango.com/hash.php?algo=' + encodeURIComponent($('hash_algo').value) + '&string=' + encodeURIComponent($('hashs').value)  , 'hasha');	
}

function plot(ip)
{
	var url = 'http://www.ipmango.com/iptools/api_hidden.php';
	
	//Fetch new content
	$.ajax({
		'url' : url ,
		'data' : 'ip=' + $('#ip').val() ,
		'dataType' : 'json' ,
		'type' : 'post' ,
		'success' : function( op )
		{
			$('#searching').css('display' ,'none');
			
			var ip = op['ip'];
			var latitude = op['latitude'];
			var longitude = op['longitude'];
			var city = op['city'];
			var region = op['region_name'];
			var country = op['country_name'];
			
			//Now google map code to plot point
			var point = new GLatLng(latitude , longitude);
			
			var marker = new GMarker(point);
			map.addOverlay(marker);
													
			var txt = "<div style=\"font-family:Arial,Helvetica,Sans Serif;font-size:11px;text-align:center\">";
			txt += ip + "<br>";
			txt += city + " in " + region + " ( " + country + " )";
			txt += "</div>";
			
			GEvent.addListener(marker, "click", function(){marker.openInfoWindowHtml(txt);})
			
			if(old_lat > 0 || old_long > 0)
			{
				var polyline = new GPolyline([ new GLatLng(old_lat, old_long) , new GLatLng(latitude, longitude) ], "#ff0000", 5);
				
				map.addOverlay(polyline);
			}
			old_lat = latitude
			old_long = longitude
		} ,
		
		error : function(jqXHR, textStatus, errorThrown)
		{
			alert('Error : ' + textStatus + ' ' + errorThrown);
			$('#searching').css('display' ,'none')
		}
	});
	$('#searching').css('display' ,'block');
}

function plot_route()
{
	ip_list = $('#ip_list').val().split(',');
	_plot_route();
	
	total_distance = 0;
}

function _plot_route()
{
	var url = 'http://www.ipmango.com/iptools/api_hidden.php';
	
	if(!ip_list.length)
	{
		return;
	}
	
	//Fetch new content
	$.ajax({
		'url' : url ,
		'data' : 'ip=' + $.trim( ip_list.shift()) ,
		'dataType' : 'json' ,
		'type' : 'post' ,
		'success' : function( op )
		{
			$('#searching').css('display' ,'none');
			
			var ip = op['ip'];
			var latitude = op['latitude'];
			var longitude = op['longitude'];
			var city = op['city'];
			var region = op['region_name'];
			var country = op['country_name'];
			
			//Plot only if valid latitude and longitude are found
			if(latitude > 0 || longitude > 0)
			{
				//Now google map code to plot point
				var point = new GLatLng(latitude , longitude);
				
				var marker = new GMarker(point);
				map.addOverlay(marker);
														
				var txt = "<div style=\"font-family:Arial,Helvetica,Sans Serif;font-size:11px;text-align:center\">";
				txt += ip + "<br>";
				txt += city + " in " + region + " ( " + country + " )";
				txt += "</div>";
				
				
				
				GEvent.addListener(marker, "click", function(){marker.openInfoWindowHtml(txt);})
				
				if(old_lat > 0 || old_long > 0)
				{
					var polyline = new GPolyline([ new GLatLng(old_lat, old_long) , new GLatLng(latitude, longitude) ], "#ff0000", 5);
					
					map.addOverlay(polyline);
					
					if(old_lat != latitude || old_long != longitude)
					{
						var d = distance(old_lat , old_long , latitude , longitude);
						total_distance += d;
					}
					else
					{
						var d = '-';
					}
				}
				else
				{
					d = '-';
				}
				
				var details = '<tr><td>' + ip + '</td><td>' + city + '</td><td>' + country + '</td><td>' + longitude + '</td><td>' + latitude + '</td><td>' + d + '</td><td>' + total_distance +'</td></tr>';
				$('#route_details').html($('#route_details').html() + details)
				
				old_lat = latitude
				old_long = longitude
			}
			
			_plot_route();
		} ,
		
		error : function(jqXHR, textStatus, errorThrown)
		{
			alert('Error : ' + textStatus + ' ' + errorThrown);
			$('#searching').css('display' ,'none')
		}
	});
	$('#searching').css('display' ,'block');
}



function showitall() {
	
	for(propertyname in navigator) {
		toggle = toggle * -1;
		if(toggle == 1)
			document.write("<tr><td>" + propertyname + "</td><td>" + navigator[propertyname] + "</td></tr>");
		else
			document.write("<tr><td style='background:#ffffff'>" + propertyname + "</td><td style='background:#ffffff'>" + navigator[propertyname] + "</td></tr>");
	}
}

function showallplugins() {

	//Mozilla - Netscape specific code !!
	var ps = navigator.plugins;
	document.write("<tr><td colspan=3 align='center'>Plugins</td></tr>");
	for(var i = 0 ; i<ps.length; i++ ) {
		
		toggle = toggle * -1;
		if(toggle == 1)
			document.write("<tr><td>" + ps[i].name + "</td><td>" + ps[i].description);
		else
			document.write("<tr><td style='background:#ffffff'>" + ps[i].name + "</td><td style='background:#ffffff'>" + ps[i].description);
		
		
		for( var i2=0; i2 < ps[i].length ; i2++ ) {
			document.write( '<br />' + ps[i][i2].type);
		}
		if(toggle == 1)
			document.write("</td><td>" + ps[i].filename + "</td></tr>");
		else
			document.write("</td><td style='background:#ffffff'>" + ps[i].filename + "</td></tr>");
	}
	document.write("<tr><td colspan=3 align='center'>MIME Types</td></tr>");
	ps = navigator.mimeTypes;
	for(var i = 0 ; i<ps.length; i++ ) {
		toggle = toggle * -1;
		if(toggle == 1)
			document.write("<tr><td>" + ps[i].description + "</td><td>" + ps[i].type + "<br />" + ps[i].suffixes + "</td><td>" + ps[i].enabledPlugin.filename + "</td></tr>");
		else
			document.write("<tr><td style='background:#ffffff'>" + ps[i].description + "</td><td style='background:#ffffff'>" + ps[i].type + "<br />" + ps[i].suffixes + "</td><td style='background:#ffffff'>" + ps[i].enabledPlugin.filename + "</td></tr>");
	}
	/*
	for(propertyname in window) {
		document.write("<tr><td>" + propertyname + "</td><td>" + window[propertyname] + "</td></tr>");
	}*/
}

/** Converts numeric degrees to radians */
function to_rad(a)
{
	return parseFloat(a) * Math.PI / 180;
}


function distance(lat1 , lon1 , lat2 , lon2)
{
	/*var R = 6371; // km
	var d = Math.acos(Math.sin(lat1)*Math.sin(lat2) + Math.cos(lat1)*Math.cos(lat2) * Math.cos(lon2-lon1)) * R;
	*/
	
	var R = 6371; // km
var dLat = to_rad((lat2-lat1));
var dLon = to_rad((lon2-lon1));
var lat1 = to_rad(lat1);
var lat2 = to_rad(lat2);

var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
        Math.sin(dLon/2) * Math.sin(dLon/2) * Math.cos(lat1) * Math.cos(lat2); 
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); 
var d = R * c;
	
	d = Math.round(d);
	
	return d;
}


