//called when Activity checkbox under missional activity is clicked
/*function trans_encrypt(strval)
{
  var strvalue=strval;
  str="'"+strvalue+"'";
  str=str.replace(/1/g,"aabb");
  str=str.replace(/2/g,"ccdd");
  str=str.replace(/3/g,"eeff");
  str=str.replace(/4/g,"gghh");
  str=str.replace(/5/g,"iijj");
  str=str.replace(/6/g,"kkll");
  str=str.replace(/7/g,"mmnn");
  str=str.replace(/8/g,"oopp");
  str=str.replace(/9/g,"qqrr");
  // For removing ' in the string.
  str=str.replace(/'/g,"");
  str_encryption=str;
  return str_encryption;
  }*/
function get_ActivityPoints()
{
	var stat = document.getElementById('activitypts').checked;
	
	//calls partners.worldmap webservice if checked, else clears the plotted markers
	if ( stat )	
	{
		getWebservice(1);
	} 
	else 
	{
		clearMissionalActivityMarkers('Activity');
	}
}

//called when Location checkbox under missional activity is clicked
function get_LocationPoints()
{
	var stat = document.getElementById('locationpts').checked;

	//calls partners.worldmap webservice if checked, else clears the plotted markers
	if ( stat )	
	{
		getWebservice(2);
	} 
	else 
	{
		clearMissionalActivityMarkers('Location');
	}
}

//called when Contact checkbox under missional activity is clicked
function get_ContactPoints()
{
	var stat = document.getElementById('contactpts').checked;
	
	//calls partners.worldmap webservice if checked, else clears the plotted markers
	if ( stat )	
	{
		getWebservice(3);
	} 
	else 
	{
		clearMissionalActivityMarkers('Contact');
	}
}

//To clear respective plotted missional activity markers
function clearMissionalActivityMarkers(rType)
{
	for (var i = 0; i < missionalActivityMarkers.length; i++) 
	{
		if (missionalActivityMarkers[i].cusReportType == rType)
		{
			missionalActivityMarkers[i].hide();
		}
	}
}

function clearAllMissionalActivityMarkers()
{
	for (var i = 0; i < missionalActivityMarkers.length; i++) 
	{
		missionalActivityMarkers[i].hide();
	}
	document.getElementById('contactpts').checked = false;
	document.getElementById('locationpts').checked = false;
	document.getElementById('activitypts').checked = false;
}

function get_MissionalActivityPoints()
{
	var stat = false;
	var rep_type_arr = new Array();
	var rep_type_str = '';

	clear_polycontrol();
	clear_lg_pg();
	clear_StepsInfo();
	//map.clearOverlays();
	GPolygonControl.prototype.polygButtonClick.off();

	// Remove MA markers already loaded
	//if(myMAMarkers.length>0) {
		for (var id in myMAMarkers) {
			//map.removeOverlay(myMAMarkers[id]);
			if (myMAMarkers[id] instanceof GMarker) {
			  //alert("key: "+id+" value:"+myMAMarkers[id]);
				var marker = myMAMarkers[id];
				//marker.hide();
				map.removeOverlay(marker);
				myMAMarkers[id] = null;
			}
		}
	//}
	for (var i = 0; i < missionalActivityMarkers.length; i++) 
	{
		missionalActivityMarkers[i].hide();
	}

	if ( document.getElementById('activitypts').checked == true ) {
		stat = true;
		rep_type_str = '1,';
	}
	if ( document.getElementById('locationpts').checked == true ) {
		stat = true;
		rep_type_str = rep_type_str+'2,';
	}
	if ( document.getElementById('contactpts').checked == true ) {
		stat = true;
		rep_type_str = rep_type_str+'3,';
	}
	if ( document.getElementById('churchpts').checked == true ) {
		stat = true;
		rep_type_str = rep_type_str+'4,';
	}

	rep_type_str = rep_type_str.substr(0,rep_type_str.length-1)
	rep_type_arr = rep_type_str.split(",");

	//calls partners.worldmap webservice if checked, else clears the plotted markers
	if ( stat )	
	{
		total_recs = 0;
		churches_recs = 0;
		activity_recs = 0;
		location_recs = 0;
		contact_recs = 0;
		for (i=0; i<rep_type_arr.length; i++)
		{
			getWebservice(rep_type_arr[i]);
		}
	} 
	else 
	{
		total_recs = 0;
		churches_recs = 0;
		activity_recs = 0;
		location_recs = 0;
		contact_recs = 0;
		for (var i = 0; i < missionalActivityMarkers.length; i++) 
		{
			missionalActivityMarkers[i].hide();
		}
		map.closeInfoWindow();
		//document.getElementById('statusDIV').innerHTML = "";
		messagesforall("ma", 0);
		showLoading(false);
	}
}

//calls the web service 
function getWebservice(reportType)
{
	var t0 = new Date().getTime();
	document.getElementById('statusDIV').innerHTML = "Loading...";
	showLoading(true);

	var url = 'webservice_string.php';
	//var url = 'webservice_string_new.php';
	var mapbounds = map.getBounds();
	//alert('mapbounds = '+mapbounds);
	var flag = '21';
	//alert('reportType='+reportType);
	var params = 'reptype='+reportType+'&flag='+flag+'&mapbounds='+mapbounds;
	var aj = new Ajax.Request(  
					url, 
						{  
						method: 'GET',  
						parameters: params,  
						onComplete: function(oReq) 
							{ 
							    //alert('responseText = '+oReq.responseText);
								/*if(MA_moveend_listener != undefined)
								{	  
									GEvent.removeListener(MA_moveend_listener);
								}*/
								decrypt_res= oReq.responseText;
								decrypt_res =trans_decrypt(decrypt_res); 
								// For encryption decryption purpose commented by Ramesh.
								// var res = oReq.responseText.substring(0,1);  
								var res= decrypt_res.substring(0,1);
								//alert('res = '+res);
								if (res == '<')
								{
									//getWebservice(reportType);
									document.getElementById('statusDIV').innerHTML = "";
									showLoading(false);
								}
								else
								{
								   //	getMap(oReq.responseText, reportType, t0);
									 getMap(decrypt_res, reportType, t0); 
								}

								/*MA_moveend_listener = GEvent.addListener(map, "moveend", function() 
								{
									activation=1;	    
									//getWebservice(reportType);
									get_MissionalActivityPoints();
								});*/
							}
						}  
					); 
	
	//var t1 = new Date().getTime();
	//var secs = ((t1 - t0) / 1000).toFixed(1);
	//document.getElementById('statusDIV').innerHTML = "";
}

var records;
var pinID;
var missionalActivityBounds = new GLatLngBounds();
var missionalActivityMarkers = [];
var total_recs = 0;
//var myMAMarkers = [];
var churches_recs = 0;
var activity_recs = 0;
var location_recs = 0;
var contact_recs = 0;

function getMap(ws, reportType, t0)
{
	pinID = 1;

	var records1 = ws;
	records = records1.split('#');

	//if there are records to point on the map
	//alert('records='+records);
    if ( records != "" )
    {
        for (i=0; i < records.length; i++)
        {	
			values = records[i].split("|");
			var ylat = values[2];
			var xlon = values[3];
			var repid = values[4];
			
			//var point = new GLatLng(values[2], values[3]); 
			//map.addOverlay(createMarker(point, pinID, values[0], values[1], values[4], reportType));
			var isLoaded = myMAMarkers[repid];
			
			if (!isLoaded) {
				var point = new GLatLng(parseFloat(ylat), parseFloat(xlon));
				myMAMarkers[repid] = new createMarker(point, pinID, values[0], values[1], repid, reportType);
			}
			
			pinID++; 
        }
		//setting map view
		//map.setZoom(map.getBoundsZoomLevel(missionalActivityBounds));
        //map.setCenter(missionalActivityBounds.getCenter());

		// Performance boost to hide all then show?
		for (var id in myMAMarkers) {
			if (myMAMarkers[id] instanceof GMarker) {
				//alert("key: "+id+" value:"+myMAMarkers[id]);
				var marker = myMAMarkers[id];
				map.addOverlay(marker);
				//marker.hide();
			}
		}

		if (reportType == 1) {
			churches_recs = records.length;
		} else if (reportType == 2) {
			activity_recs = records.length;
		} else if (reportType == 3) {
			location_recs = records.length;
		} else if (reportType == 4) {
			contact_recs = records.length;
		}

		total_recs = churches_recs + activity_recs + location_recs + contact_recs;

		var t1 = new Date().getTime();
		//var secs = ((t1 - t0) / 1000).toFixed(1);
		masecs = ((t1 - t0) / 1000).toFixed(1);
		//alert('mapoints1='+mapoints);
		mapoints = total_recs;
		//alert('mapoints2='+mapoints);

		//document.getElementById('statusDIV').innerHTML = records.length + " Missional Activity points loaded ("+ secs +" secs)";
		//document.getElementById('statusDIV').innerHTML = total_recs + " Missional Activity points loaded ("+ secs +" secs)";
		messagesforall(reportType, total_recs);
		showLoading(false);
    }
	else
	{
		//if ( mapoints == 0 ) {
			//document.getElementById('statusDIV').innerHTML = "No Missional Activity Points";
		//}
		//alert('mapoints3='+mapoints);
		var t1 = new Date().getTime();
		masecs = ((t1 - t0) / 1000).toFixed(1);
		mapoints = total_recs;
		messagesforall(reportType, total_recs);
		//document.getElementById('statusDIV').innerHTML = "";
		showLoading(false);
		//alert('mapoints4='+mapoints);
	}
}

//To create push pins(markers)
function createMarker(point, pinID, reportType, reportSubType, reportId, reportTypeInt)
{
    var iconOptions = {};
    iconOptions.width = 25;
    iconOptions.height = 25;

	if (reportType == "Activity")
	{
		iconOptions.primaryColor = "#FA1710FF";
		iconOptions.cornerColor = "#F9FF00FF";
		iconOptions.strokeColor = "#190A3FFF";
		
		var icon = MapIconMaker.createMarkerIcon(iconOptions);
	}
    else if (reportType == "Location")
    {
        if (reportSubType == "Church")
        {
			var icon = new GIcon();
			icon.iconSize = new GSize(20, 20);
			icon.iconAnchor = new GPoint(10, 10);
			icon.infoWindowAnchor = new GPoint(10, 10);
			icon.image = "gmap/icons/church/5_Church_bright_green.png";
        } else {
			iconOptions.primaryColor = "#303FE9FF";
			iconOptions.cornerColor = "#00F3FFFF";
			iconOptions.strokeColor = "#190A3FFF";
			
			var icon = MapIconMaker.createMarkerIcon(iconOptions);
		}		
    }
    else if (reportType == "Contact")
    {
        iconOptions.primaryColor = "#02A500FF";
        iconOptions.cornerColor = "#FFFE00FF";
        iconOptions.strokeColor = "#190A3FFF";

		var icon = MapIconMaker.createMarkerIcon(iconOptions);
    }
    else 
    {
        iconOptions.primaryColor = "#FFFF00FF";
        iconOptions.cornerColor = "#ff8a00FF";
        iconOptions.strokeColor = "#FF0000FF";

		var icon = MapIconMaker.createMarkerIcon(iconOptions);
	}
	//var icon = MapIconMaker.createMarkerIcon(iconOptions);

	var marker = new GMarker(point, {icon: icon, draggable:false});

	marker.cusReportType = reportType;

    //appending marker to the list of points(missionalActivityBounds)
    missionalActivityBounds.extend(marker.getPoint());
    
	//adding listener to show info. popup of respective marker on its mouseover
	click_listener = GEvent.addListener(marker, "click", function()
	{
		movendstop(); showLoading(false);
		var url = 'webservice_string.php';
		var flag = '23';
		var params = 'flag='+flag+'&reportId='+reportId;
		var aj_more = new Ajax.Request(  
						url, 
							{  
							method: 'GET',  
							parameters: params,  
							onComplete: function(oReq_more) 
								{ 
									//alert('responseText = '+oReq_more.responseText);
									var res = oReq_more.responseText.substring(0,1); 
									if (res == '<')
									{
										document.getElementById('statusDIV').innerHTML = "";
										showLoading(false);
									}
									else
									{
										var record1 = oReq_more.responseText;
										record = record1.split('#');

										//alert('record='+record);
										if ( record != "" )
										{
											var pinTitleBackgroundColor = 'silver';

											if (reportTypeInt == 1)
											{
												pinTitleBackgroundColor = 'red';
											}
											else if (reportTypeInt == 2)
											{
												pinTitleBackgroundColor = 'blue';
											}
											else if (reportTypeInt == 3)
											{
												pinTitleBackgroundColor = 'green';
											}
											else if (reportTypeInt == 4)
											{
												pinTitleBackgroundColor = 'violet';
											}
		
											for (i=0; i < record.length; i++)
											{	
												var values = record[i].split("|");

												var title		= values[0];
												var type		= values[1];
												var country		= values[2];
												var city		= values[3];
												var prayerreq	= values[5];
												var state		= values[6];
					
												var htmlStart	= '<html><table width="90%">';
												var pinTitle	= '<tr style="color: white; background-color: ' + pinTitleBackgroundColor + ';"><td colspan=2><b><font face=arial size=0.9em>' + title + '</font></b></td></tr>';
												var pinType		= '<tr><td><b><font face=arial size=0.9em>Type:</font></b></td><td><font face=arial size=0.9em>' + type + '</font></td></tr>';
												var pinCountry	= '<tr><td><b><font face=arial size=0.9em>Country:</font></b></td><td><font face=arial size=0.9em>' + country + '</font></td></tr>';
												if (state != 'Null') {
													var pinState	= '<tr><td><b><font face=arial size=0.9em>State:</font></b></td><td><font face=arial size=0.9em>' + state + '</font></td></tr>';
												} else { pinState	= ''; }
												var pinCity		= '<tr><td><b><font face=arial size=0.9em>City:</font></b></td><td><font face=arial size=0.9em>' + city + '</font></td></tr>';
												if (prayerreq != 'Null') {
													var pinPrayReq	= '<tr><td><b><font face=arial size=0.9em>Prayer Request:</font></b></td><td><font face=arial size=0.9em>' + prayerreq + '</font></td></tr>';
												} else { pinPrayReq	= ''; }
												var htmlEnd		= '</table></html>';
												var pinOverContent = htmlStart + pinTitle + pinType + pinCountry + pinState + pinCity + pinPrayReq + htmlEnd;
											}
										
											document.getElementById('statusDIV').innerHTML = "";
											showLoading(false);
											map.openInfoWindowHtml(point, pinOverContent,100);
											setTimeout("showLoading(false);", 10000); 
                                            setTimeout("movendstart();", 1000);
										}
										else
										{
											document.getElementById('statusDIV').innerHTML = "No Missional Activity Info found";
											showLoading(false);
										}
									}
								}
							}  
						);
		//map.openInfoWindowHtml(point, pinOverContent);
	});
    
	missionalActivityMarkers.push(marker);
    return marker;

}

//For custom marker icon
var MapIconMaker = {};

MapIconMaker.createMarkerIcon = function(opts) 
{
  var width = opts.width || 32;
  var height = opts.height || 32;
  var primaryColor = opts.primaryColor || "#ff0000";
  var strokeColor = opts.strokeColor || "#000000";
  var cornerColor = opts.cornerColor || "#ffffff";
   
  var baseUrl = "http://chart.apis.google.com/chart?cht=mm";
  var iconUrl = baseUrl + "&chs=" + width + "x" + height + 
      "&chco=" + cornerColor.replace("#", "") + "," + primaryColor.replace("#", "") + "," + strokeColor.replace("#", "") + "&ext=.png";
  var icon = new GIcon(G_DEFAULT_ICON);
  icon.image = iconUrl;
  icon.iconSize = new GSize(width, height);
  icon.shadowSize = new GSize(Math.floor(width*1.6), height);
  icon.iconAnchor = new GPoint(width/2, height);
  icon.infoWindowAnchor = new GPoint(width/2, Math.floor(height/12));
  icon.printImage = iconUrl + "&chof=gif";
  icon.mozPrintImage = iconUrl + "&chf=bg,s,ECECD8" + "&chof=gif";
  var iconUrl = baseUrl + "&chs=" + width + "x" + height + 
      "&chco=" + cornerColor.replace("#", "") + "," + primaryColor.replace("#", "") + "," + strokeColor.replace("#", "");
  icon.transparent = iconUrl + "&chf=a,s,ffffff11&ext=.png";

  icon.imageMap = [
      width/2, height,
      (7/16)*width, (5/8)*height,
      (5/16)*width, (7/16)*height,
      (7/32)*width, (5/16)*height,
      (5/16)*width, (1/8)*height,
      (1/2)*width, 0,
      (11/16)*width, (1/8)*height,
      (25/32)*width, (5/16)*height,
      (11/16)*width, (7/16)*height,
      (9/16)*width, (5/8)*height
  ];
  for (var i = 0; i < icon.imageMap.length; i++) {
    icon.imageMap[i] = parseInt(icon.imageMap[i]);
  }

  return icon;
}
