/****************************************************************************************************
File Name		: FTTPointsWS.js
Author			: 
Created date	: 08/04/09(dd/mm/yy)
Purpose			: Used for fetching People Group Location data through Webservice. Called in CountryG page.
Change Log		: 

****************************************************************************************************/
function addCommas(nStr)
{
	nStr += '';
	x = nStr.split('.');
	x1 = x[0];
	x2 = x.length > 1 ? '.' + x[1] : '';
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(x1)) {
		x1 = x1.replace(rgx, '$1' + ',' + '$2');
	}
	return x1 + x2;
}


function resetFTTPoints(reset_all) {  // HIDE ALL FTT MARKERS
	for (var id in myFTTMarkers) {
	//map.removeOverlay(myFTTMarkers[i])
		if (myFTTMarkers[id] instanceof GMarker) {
		  //alert("key: "+id+" value:"+myFTTMarkers[id]);
			var marker = myFTTMarkers[id];
			//marker.hide();
			map.removeOverlay(marker);
			myFTTMarkers[id] = null;
		}
	}
  
	if (reset_all) {
		var theRadios = document.getElementsByName("ftt_Radios");
		for (r=0; r < theRadios.length; r++) {
			//theRadios[r].disabled=true;
			theRadios[r].checked=false;
		}
		document.getElementById("FTTMapType").value = "";
	}
	//document.getElementById('statusDIV').innerHTML = "";
	messagesforall(document.getElementById("FTTMapType").value, 0);
	showLoading(false);
}

// GLOBALS?
var fttmaptype;
// Called from Countryg_test after click on PG Location radio button 
function get_FTTPoints(radio_id)
{
	var stat = false;

	clear_polycontrol();
	clear_lg_pg();
	clear_StepsInfo();
	GPolygonControl.prototype.polygButtonClick.off();

	//alert(radio_id);
	if(radio_id){
		fttmaptype = radio_id;           // PG Location radio button map type
		var radio_input = document.getElementById(radio_id);
		radio_input.disabled=false;
		radio_input.checked=true;

		//  DISABLE OTHER FTT RADIO BUTTONS
		var theRadios = document.getElementsByName("ftt_Radios");
		
		for (r=0; r < theRadios.length; r++) {
			//alert(' this-radio-id: '+theRadios[r].id);
			//if (theRadios[r].disabled==true) { 
			if (theRadios[r].id != radio_id) { 
				//alert('disable this: '+theRadios[r].id+'radioid	: '+radio_id);
				//theRadios[r].disabled=true;
			}
		}

		// CURRENT MAP REDRAW - OR DRAW NEW MAPTYPE
		var currentMap = document.getElementById("FTTMapType").value;
		//alert('currentMap: '+currentMap);
		
		var makeNewMap = (fttmaptype != currentMap);
		//alert('fttmaptype not equal currentMap:: \n'+ makeNewMap);
		
		document.getElementById("FTTMapType").value = fttmaptype;
		currentMap = document.getElementById("FTTMapType").value;
		//alert('fttmaptype is now: '+currentMap);
		
		if (!makeNewMap) {
		// Re-display markers already loaded
			//for (var id in myFTTMarkers) {
			//map.removeOverlay(myFTTMarkers[i])
				//if (myFTTMarkers[id] instanceof GMarker) {
				  //alert("key: "+id+" value:"+myFTTMarkers[id]);
					//var marker = myFTTMarkers[id];
					//if (marker.isHidden()) {
						//marker.show();
					//}
				//}
			//}
		}
		// New Map - Clear Markers. Leave radio enabled? Free memory used for this object???
		else {  // MAKE NEW MAP
			resetFTTPoints(reset_all = false);
			//myGSECMarkers = { "-1" : 0 };
		}

		if ( document.getElementById(radio_id).checked == true ) {
			stat = true;
		}
	}

	//calls partners.worldmap webservice if checked, else clears the plotted markers
	if ( stat )	
	{

		fttpoints = 0;
		getFTTWebservice(radio_id);

	} 
	else 
	{
		resetFTTPoints(reset_all = false);
		document.getElementById('statusDIV').innerHTML = "";
		showLoading(false);

		for (var i = 0; i < FTTMarkers.length; i++) 
		{
			FTTMarkers[i].hide();
		}
	}
}

//calls the web service 
function getFTTWebservice(radio_id)
{
	 
	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 = '24';

	var params = 'flag='+flag+'&mapbounds='+mapbounds+'&radio_id='+radio_id;
	var aj = new Ajax.Request(  
					url, 
						{  
						method: 'GET',  
						parameters: params,  
						onComplete: function(oReq) 
							{ 
								//alert('responseText = '+oReq.responseText);
								/*if(FTT_moveend_listener != undefined)
								{	  
									GEvent.removeListener(FTT_moveend_listener);
								}*/
                                decrypt_res=oReq.responseText;
								decrypt_res=trans_decrypt(decrypt_res);
								//var res = oReq.responseText.substring(0,1);
								var res = decrypt_res.substring(0,1);	
								//alert('res = '+res);
								if (res == '<')
								{
									//getFTTWebservice();
									document.getElementById('statusDIV').innerHTML = "";
									showLoading(false);
								}
								else
								{
								//	getFTTMap(oReq.responseText, t0);
								 getFTTMap(decrypt_res, t0);
								}

								/*FTT_moveend_listener = GEvent.addListener(map, "moveend", function() 
								{
									activation=1;	 
									get_FTTPoints(document.getElementById("FTTMapType").value);
								});*/
							}
						}  
					); 
}

var fttrecords;
var pinID;
var FTTBounds = new GLatLngBounds();
var FTTMarkers = [];

function getFTTMap(ws, t0)
{
	pinID = 1;

	var records1 = ws;
	fttrecords = records1.split('#');

	var baseIcon = new GIcon();
	baseIcon.iconSize = new GSize(24, 24);
	baseIcon.iconAnchor = new GPoint(12, 24);
	baseIcon.infoWindowAnchor = new GPoint(12, 12);
	baseIcon.image = "gmap/icons/0_People_dk_red.png";
	  
	//if there are records to point on the map
	//alert('fttrecords='+fttrecords);
	if ( fttrecords != "" )
	{
		for (i=0; i < fttrecords.length; i++)
		{	
			var values = fttrecords[i].split("|");
			
			var oid			= values[0];
			var ylat		= values[1];
			var xlon		= values[2];
			var PGName		= values[3];
			var PopEntID	= values[4];
	
			var isLoaded = myFTTMarkers[oid];
			if (!isLoaded) {
				var point = new GLatLng(parseFloat(ylat), parseFloat(xlon));
				myFTTMarkers[oid] = new createFTTMarker(oid, point, baseIcon, PGName);
			}

			//var point = new GLatLng(parseFloat(ylat), parseFloat(xlon)); 
			//map.addOverlay(createFTTMarker(oid, point, baseIcon, PGName));
			
			pinID++; 
		}
		//setting map view
		//map.setZoom(map.getBoundsZoomLevel(FTTBounds));
		//map.setCenter(FTTBounds.getCenter());
		
		for (var id in myFTTMarkers) {			  
		  // Performance boost to hide all then show?
			if (myFTTMarkers[id] instanceof GMarker) {
			  //alert("key: "+id+" value:"+myFTTMarkers[id]);
				var marker = myFTTMarkers[id];
				map.addOverlay(marker);
			}
		}

		var t1 = new Date().getTime();
		//var secs = ((t1 - t0) / 1000).toFixed(1);
		fttsecs = ((t1 - t0) / 1000).toFixed(1);
		fttpoints = fttrecords.length;
		//document.getElementById('statusDIV').innerHTML =fttrecords.length + " PG Location points loaded ("+ secs +" secs)";
		messagesforall(document.getElementById("FTTMapType").value, fttrecords.length);
		showLoading(false);
	}
	else
	{
		//document.getElementById('statusDIV').innerHTML = "PG Location Records found: 0";
		var t1 = new Date().getTime();
		fttsecs = ((t1 - t0) / 1000).toFixed(1);
		fttpoints = 0;
		messagesforall(document.getElementById("FTTMapType").value, 0);
		showLoading(false);
	}
}

//To create push pins(markers)
function createFTTMarker(oid, point, baseIcon, PGName) {
	var marker = new GMarker(point, {icon:baseIcon, title:'"'+ PGName +'"'});
	
	//appending marker to the list of points(FTTBounds)
	FTTBounds.extend(marker.getPoint());
    
	click_listener = GEvent.addListener(marker, "click", function()
	{
		movendstop(); showLoading(true); 
		var url = 'webservice_string.php';
		var flag = '28';
		var params = 'flag='+flag+'&oid='+oid;
		var aj_more = new Ajax.Request(  
						url, 
							{  
							method: 'GET',  
							parameters: params,  
							onComplete: function(oReq_more) 
								{ 
									//alert('responseText = '+oReq_more.responseText);
								   var decrypt_res	=oReq_more.responseText;
								   decrypt_res=trans_decrypt(decrypt_res);
									//var res = oReq_more.responseText.substring(0,1);
									var res = decrypt_res.substring(0,1);
									if (res == '<')
									{
										document.getElementById('statusDIV').innerHTML = "";
										showLoading(false);
									}
									else
									{
										//var record1 = oReq_more.responseText;
										var record1 =decrypt_res;
										record = record1.split('#');

										//alert('record='+record);
										if ( record != "" )
										{
											for (i=0; i < record.length; i++)
											{	
												var values = record[i].split("|");
					
												var PopEntID	= values[0];
												var PGName		= values[1];
												var rog			= values[2];
												var Country		= values[3];
												var rol			= values[4];
												var Lang		= values[5];
												var GSEC		= values[6];
												var Population	= addCommas(values[7]);
												var Religion	= values[8];
												var rop			= values[16];
												var jppic		= values[21];
												var Latlong     =values[13]+','+values[14]; 
											}
										
											var tabs = [];  // info Tabs container for InfoWindows
											jpURL = 'http://www.joshuaproject.net';
											var jpImgSrc = '';
																					 
											if (jppic == "null") {
												jpImgSrc = '<a tip="Send Joshua Project a photo of the '+ PGName +' to display here" href="' + jpURL + '/photoform.php?rog3='+rog+'&amp;rop3='+rop+'" target=\"_blank\">' +
															'<img src="' + jpURL + '/images/peoples.jpg" border="0" height="106" width="101"></a><br/>'+
															'<div style="color: red; font-size:10px; text-align:center;">No Photo Available<br/><a href="' + jpURL + 
															'/photoform.php?rog3='+rog+'&amp;rop3='+rop+'" target=\"_blank\">Submit Your Photo </a> </div>';
											} 
											else {
												jpImgSrc = '<img src="' + jpURL + '/profiles/photos/p' + rop +'.jpg' + '" border="0" height="90" width="75">' +
														   '<br/><div style="color: red; font-size:10px; text-align:center;">Image Source:<br/><a href="http://www.joshuaproject.net/" target=\"_blank\"><b>Joshua Project</b></a>';
											}

											// SETUP ALL TABS
											var htmls = [];
											var tab_labels = [];			

											// PeopleGrp Tab		
											tab_labels.push('People');
											fttppgname=PGName;
											fttppopulation=Population;
											fttpreligion= Religion;
											fttplanguage=Lang;
											latlongfttp=Latlong;
											//fttp_pgname_polygon=PGName;
											pg_html = '<div class="infotab">'+
														'<table cellpadding="2">'+
															'<tr>'+
																'<td colspan="2"><strong style="font-size:14px;">'+ PGName + '</strong></td><tr>'+
																'<td>' + 
																	jpImgSrc +
																'</td>' + 
																'<td valign="top" style="font-size:10px;">'+
																	'<b>Population: </b>' + Population +'<br/>' +
																	'<b>Religion: </b>' + Religion +'<br/>' +
																	'<b> Language</b>'+ Lang+'<br/>' +
																	'<b>Global Christianity Status: <a href="http://www.peoplegroups.org/AlphaSearch.aspx?tblVal=Status" target="_blank">'+ GSEC +'</a></b><br/><a href="javascript:pg_popupsnew(\'pgpoint\',fttppgname,latlongfttp,fttppopulation,fttpreligion,fttplanguage)"  >[Add People Group Point]</span></a>' +'<br/>'+'<a href="javascript:pg_popups_pgarea(\'pgarea\',fttppgname,latlongfttp,fttppopulation,fttpreligion,fttplanguage)"  >[Add People Group Area]</span></a>' +
																	
											                        '<br/><a href="http://www.peoplegroups.org/login.aspx?ReturnUrl=%2fUpdate.aspx%3fPID%3d'+ PopEntID +'"' + '  target="_blank"><b>Provide People Group Feedback</b></a>'+
																'</td>'+
															'</tr>'+
														'</table>'+
													  '</div>';
												
											htmls.push(pg_html);
												  
											// Links Tab			  
											tab_labels.push('More Info');
											var links_html = '<div class="infotab">'+
															'<span style="font-size:12px;text-decoration:underline;font-weight:bold;">Click the below links for more information</span><br/>' +
															'<span style="font-size:12px;text-decoration:underline;font-weight:bold;">People Group: '+ PGName +'</span><br/>' +
															'<span style="font-size:10px;font-weight:normal;"><a href="http://www.peoplegroups.org/Detail.aspx?PID='+ PopEntID +'" target="_blank">IMB People Groups</a></span><br/>'+
															'<span style="font-size:10px;font-weight:normal;"><a href="'+ jpURL +'/peopctry.php?rop3='+ rop +'&rog3=' + rog +'"' + ' target="_blank">Joshua Project </a></span><br/>' +
															'<span style="font-size:10px;font-weight:normal;"><a href="http://www.worldmap.org/getpeople.php?ROP_ROG3='+ rop + rog +'"' + ' target="_blank"> WorldMAP People Group</a></span><br/>' +
															'<span style="font-size:10px;font-weight:normal;"><a href="http://www.worldmap.org/country.php?ROG3='+ rog +'"' + ' target="_blank">WorldMAP Country</a></span><br/>' +
															'<span style="font-size:10px;font-weight:normal;"><a href="http://www.ethnologue.com/show_language.asp?code='+ rol +'"' + ' target="_blank"> Ethnologue Language</a></span><br/>' +
															
											                '<span style="font-size:10px;font-weight:bold;"><a href="http://www.peoplegroups.org/login.aspx?ReturnUrl=%2fUpdate.aspx%3fPID%3d'+ PopEntID +'"' + '  target="_blank">Provide People Group Feedback</span></a>'+
															'</div>';
																   
											htmls.push(links_html);
											  
											// Create Tabbed Info Window
											for (var j=0; j < htmls.length; j++) {
												htmls[j] = '<div class="infowindow" style="width:320px">' + htmls[j] + '</div>';
												tabs.push(new GInfoWindowTab(tab_labels[j],htmls[j]));
											}

											document.getElementById('statusDIV').innerHTML = "";
											showLoading(false);
											marker.openInfoWindowTabsHtml(tabs);
											setTimeout("showLoading(false);", 10000); 
                                            setTimeout("movendstart();", 1000);
										}
										else
										{
											document.getElementById('statusDIV').innerHTML = "No Pglocations Info found";
											showLoading(false);
										}
									}
								}
							}  
						);
		//map.openInfoWindowHtml(point, pinOverContent);
		GEvent.removeListener(click_listener);
	});
    
	FTTMarkers.push(marker);
	return marker;
}
function pg_popupsnew(pgpoint,fttppgname,latlongfttp,fttppopulation,fttpreligion,fttplanguage)
{
	//alert(pgpoint+fttppgname+latlongfttp);
	fttp_pg_popups(1,fttppgname,latlongfttp,fttppopulation,fttpreligion,fttplanguage);
 }
function pg_popups_pgarea(pgpoint,fttppgname,latlongfttp,fttppopulation,fttpreligion,fttplanguage)
{
	//alert(pgpoint+fttppgname+latlongfttp);
	fttp_pg_popups_pgarea(1,fttppgname,latlongfttp,fttppopulation,fttpreligion,fttplanguage);
 }
