/* Script to find nearby church plants
 * (L) 2010 Andrew Mahr
 * 
 * The following script must be loaded first in order for this to work
 * <script language="JavaScript" src="http://j.maxmind.com/app/geoip.js"></script>
 * 
 */ 



var sgmcps = new Array(

"Arlington",	'38.88658',	'-77.095921',	'redeemer-church-arlington-va.aspx',				'recent',
"Charlottesville", '38.029163',	'-78.476028',	'redeemer-church-charlottesville-va.aspx',			'upcoming',
"Dayton",	'39.534392',	'-84.083755',	'sovereign-grace-church-dayton-oh.aspx',			'upcoming',
"Durham", 	'35.994119',	'-78.897972',	'redeeming-grace-durham.nc.aspx', 				'upcoming',	
"Summerville",	'33.017876',	'-80.176849',	'sovereign-grace-church-lowcountry-summerville-sc.aspx',	'upcoming',
"Sydney",	'-33.705491',	'151.099777',	'sovereign-grace-church-sydney-australia.aspx',			'recent'
	
);

var hmtrack = "?utm_source=website&utm_campaign=homepage&utm_medium=custom-church-link";

for(i=0; i<sgmcps.length; i=i+5){
	var miles = distance(geoip_latitude(), geoip_longitude(), sgmcps[i+1], sgmcps[i+2], "M");
	if (miles < 30){
		// show if a church plant just happened;
		var upcoming_msg = "An upcoming <a href='/church-planting/join.aspx" + hmtrack + "'>church plant in " + sgmcps[i] + "</a>"; 

		// show if a church plant is happening soon
		var recent_msg = "A recent <a href='/churches/" + sgmcps[i+3] + hmtrack + "'>church plant in " + sgmcps[i] + "</a>"; 

		if(sgmcps[i+4] == 'recent') {
			document.getElementById('churchlink').innerHTML = recent_msg;
		}

		else {
			document.getElementById('churchlink').innerHTML = upcoming_msg;
		}
	}
}  


 
//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
//:::                                                                         :::
//:::  This routine calculates the distance between two points (given the     :::
//:::  latitude/longitude of those points). It is being used to calculate     :::
//:::  the distance between two ZIP Codes or Postal Codes using our           :::
//:::  ZIPCodeWorld(TM) and PostalCodeWorld(TM) products.                     :::
//:::                                                                         :::
//:::  Definitions:                                                           :::
//:::    South latitudes are negative, east longitudes are positive           :::
//:::                                                                         :::
//:::  Passed to function:                                                    :::
//:::    lat1, lon1 = Latitude and Longitude of point 1 (in decimal degrees)  :::
//:::    lat2, lon2 = Latitude and Longitude of point 2 (in decimal degrees)  :::
//:::    unit = the unit you desire for results                               :::
//:::           where: 'M' is statute miles                                   :::
//:::                  'K' is kilometers (default)                            :::
//:::                  'N' is nautical miles                                  :::
//:::                                                                         :::
//:::  United States ZIP Code/ Canadian Postal Code databases with latitude   :::
//:::  & longitude are available at http://www.zipcodeworld.com               :::
//:::                                                                         :::
//:::  For enquiries, please contact sales@zipcodeworld.com                   :::
//:::                                                                         :::
//:::  Official Web site: http://www.zipcodeworld.com                         :::
//:::                                                                         :::
//:::  Hexa Software Development Center © All Rights Reserved 2004            :::
//:::                                                                         :::
//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

function distance(lat1, lon1, lat2, lon2, unit) {
	var radlat1 = Math.PI * lat1/180
	var radlat2 = Math.PI * lat2/180
	var radlon1 = Math.PI * lon1/180
	var radlon2 = Math.PI * lon2/180
	var theta = lon1-lon2
	var radtheta = Math.PI * theta/180
	var dist = Math.sin(radlat1) * Math.sin(radlat2) + Math.cos(radlat1) * Math.cos(radlat2) * Math.cos(radtheta);
	dist = Math.acos(dist)
	dist = dist * 180/Math.PI
	dist = dist * 60 * 1.1515
	if (unit=="K") { dist = dist * 1.609344 }
	if (unit=="N") { dist = dist * 0.8684 }
	return dist
}  
