

//<![CDATA[
var cm_map;
var cm_mapMarkers = [];
var cm_mapHTMLS = [];

// Create a base icon for all of our markers that specifies the
// shadow, icon dimensions, etc.
var cm_baseIcon = new GIcon();
cm_baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
cm_baseIcon.iconSize = new GSize(20, 34);
cm_baseIcon.shadowSize = new GSize(37, 34);
cm_baseIcon.iconAnchor = new GPoint(9, 34);
cm_baseIcon.infoWindowAnchor = new GPoint(9, 2);
cm_baseIcon.infoShadowAnchor = new GPoint(18, 25);

// Change these parameters to customize map
var param_wsId = "od7";
var param_ssKey = "tbcjJDuVdEkpfKqq0AzcGGg";
var param_useSidebar = true;
var param_titleColumn = "place";
var param_descriptionColumn = "user";
var param_imageColumn = "imagelink";
var param_latColumn = "latitude";
var param_lngColumn = "longitude";
var param_rankColumn = "";
var param_iconType = "green";
var param_iconOverType = "orange";

/**
 * Loads map and calls function to load in worksheet data.
 */
function cm_load() {  
  if (GBrowserIsCompatible()) {
    // create the map
    cm_map = new GMap2(document.getElementById("cm_map"));
    cm_map.addControl(new GLargeMapControl());
    cm_map.addControl(new GMapTypeControl());
    cm_map.setCenter(new GLatLng( 43.907787,-79.359741), 2);
	cm_map.setMapType(G_SATELLITE_MAP); 
	
	//cm_map.addOverlay(new GLayer("com.panoramio.all"));

    cm_getJSON();
  } else {
    alert("Sorry, the Google Maps API is not compatible with this browser");
  } 
}

/**
 * Function called when marker on the map is clicked.
 * Opens an info window (bubble) above the marker.
 * @param {Number} markerNum Number of marker in global array
 */
function cm_markerClicked(markerNum) {
	//cm_map.setZoom(8);
	cm_mapMarkers[markerNum].openInfoWindowHtml(cm_mapHTMLS[markerNum]);
}

/**
 * Function that sorts 2 worksheet rows from JSON feed
 * based on their rank column. Only called if column is defined.
 * @param {rowA} Object Represents row in JSON feed
 * @param {rowB} Object Represents row in JSON feed
 * @return {Number} Difference between row values
 */
function cm_sortRows(rowA, rowB) {
  var rowAValue = parseFloat(rowA["gsx$" + param_rankColumn].$t);
  var rowBValue = parseFloat(rowB["gsx$" + param_rankColumn].$t);

  return rowAValue - rowBValue;
}
/////////////////////////////////////
function testfunction()
{
	alert("Welcome To The Fishing Game Where You Can Literally Fish The Entire World!  Choose Your Location Below And Discover What Species Inhabit These Areas.  Use The Zoom To Check Out The Lay Of The Land! Best Of All, You Can Simply Click On The Fish's Picture To Learn More About Your Catch! We Are Adding New Locations And Species All The Time, So Check Back For Updates!");
}
function displaylogin(logmessage)
{
	document.getElementById("message").innerHTML = logmessage;
	var logbox = "<table border='1'><tr><td>	<font color='white'>Register/Login</font></td></tr><tr><td><font color='white'>UserName</font></td><td><input type='text' id='username'></td></tr><tr><td><font color='white'>Password</font></td><td><input type='password' id='password'></td></tr><tr><td><input type='button' onclick='register()' value='Register'></td><td><input type='button' onclick='login()' value='Login'></td></tr></table>";		
	document.getElementById("logincontrols").innerHTML = logbox;
}
function roundNumber(num, dec) {
	var result = Math.round(num*Math.pow(10,dec))/Math.pow(10,dec);
	return result;
}
Gusername="";
 function load() {
      session = getCookie('session');
	 
      if (session != null && session != "") 
	  {
        url = "communitymap_checksession.php";//?session=" + session;
		var params = "session=" + session;
        GDownloadUrl(url, function(data, responseCode) {
          if (data.length > 10 && data.indexOf("Session Expired")<0) 
		  {
            //document.getElementById("message").innerHTML = data;
           var t1=data.split("Welcome <font color='yellow'>");
		  // if(t1[1]!=undefined)
		   {
			var t2=t1[1].split("<font color='white'>.");
			Gusername=t2[0];
			//echo "GUSERNAME:"+Gusername;
			document.getElementById("message").innerHTML = data;
            document.getElementById("content").style.display = "block";
			}
			// map = new GMap2(document.getElementById("map"));
            //map.setCenter(new GLatLng(37.4419, -122.1419), 13);
            //geocoder = new GClientGeocoder();
          }
		  else if(data.indexOf("Session Expired")>=0)
		  {
			displaylogin(data);
		  }
        },params);
      } 
	  else 
		{
			displaylogin("<font color='white'>Not logged in.");
		}
		document.getElementById("logout").innerHTML="<button onclick='setCookie(\"session\", \"\", 5);window.location.reload( true );'>Logout</button>";
    }
	
  function login() {
    var username = document.getElementById("username").value;
    var password = document.getElementById("password").value;
    var url = "communitymap_loginuser.php";//?username=" + username + "&password=" + password;
	 var params = "username=" + username + "&password=" + password;
    GDownloadUrl(url, function(data, responseCode) {
	var pos=data.indexOf("Error: ");
    if (data.length > 1 && pos<0) 
	{
		var se1 = data.split("<session>");
		var se2=se1[1].split("</session>");
		var sessionkey=se2[0];
        setCookie("session", sessionkey, 5);
		document.getElementById("logincontrols").innerHTML = "";
		Gusername=username;
		document.getElementById("message").innerHTML = se2[1];//"<textarea>"+sessionkey+"</textarea><br>";
		//var startlogin="<BR><font color='white'>Welcome <font color='yellow'>$username<font color='white'>.<BR>You have <span id='userpoints'><font size='5' color='green'>$userpoints</font></div> Points. ";
		//document.getElementById("message").innerHTML = startlogin;
		
      }
	  else 
	  {
        document.getElementById("message").innerHTML = "<font color='white'>"+data;
      }
    },params);
	
	//load();
  }
  
 function register() {
    var username = document.getElementById("username").value;
    var password = document.getElementById("password").value;
    var url = "communitymap_newuser.php?";
    var params = "username=" + username + "&password=" + password;
    GDownloadUrl(url, function(data, responseCode) {
      if (data.length > 1) {
        document.getElementById("message").innerHTML = data;
		
      } else {
        document.getElementById("message").innerHTML = "Username already exists. Try again.";
      }
	  
    }, params);
	 document.getElementById("message").innerHTML +=params;
  }
	function fish_here(latitude,longitude) 
   {
		//document.getElementById("FishControls").innerHTML = "<img src='fishing.gif'> onload='actual_fish_here("+latitude+","+longitude+")'";
		document.getElementById("FishControls").innerHTML = "<img src='fishing.gif'>";
		var randomnumber=Math.floor(Math.random()*12000);
		 setTimeout("actual_fish_here("+latitude+","+longitude+");",randomnumber);
   }
   function actual_fish_here(latitude,longitude) 
   {
		//var latitude = document.getElementById("latitude").value;
		//var longitude = document.getElementById("longitude").value;
		var url = "fish_here.php";
		
		//document.getElementById("message").innerHTML = Gusername;
        //document.getElementById("content").style.display = "block";
			
		if(Gusername.length>2)
		{
			var params = "latitude=" + latitude + "&longitude=" + longitude + "&username=" + Gusername;
			GDownloadUrl(url, function(data, responseCode) 
			{
			  if (data.length > 1) 
			  {
				document.getElementById("FishControls").innerHTML = data;
				var fishp1 = data.split("worth ");
				var fishp2 = fishp1[1].split(" Points");
				var points = fishp2[0];
				
				var cp0=document.getElementById("userpoints").innerHTML;
				var cp1=cp0.split(">");
				var cp2=cp1[1].split("<");
				var currentpoints=cp2[0];
				
				var np1=points.split(">");
				var np2=np1[1].split("<");
				var newpoints=np2[0];
				/**/
				
				var cm0=document.getElementById("usermoney").innerHTML;
				var cm1=cm0.split(">");
				var cm2=cm1[1].split("<");
				
				var fishm1 = data.split("and ");
				var fishm2 = fishp1[1].split(" Fish Dollars");
				var money = fishp2[0];
				var nm1=money.split(">");
				var nm2=nm1[1].split("<");
				var newusermoney=np2[0];
				
				var currentusermoney=cm2[0];
				
				//var currentusermoney=0;
				//var newusermoney=0;
				var totalpoints = (parseFloat(currentpoints)+parseFloat(newpoints));
				totalpoints=roundNumber(totalpoints,1);
				
				var totalusermoney = (parseFloat(currentusermoney)+parseFloat(newusermoney));
				totalusermoney=roundNumber(totalusermoney,1);
				//document.getElementById("userpoints").innerHTML = "<textarea>"+totalpoints+"</textarea>";//totalpoints;
				document.getElementById("userpoints").innerHTML = "<font size='5' color='green'>"+totalpoints+"</font>";//totalpoints;
				document.getElementById("usermoney").innerHTML = "<font size='5' color='green'>"+totalusermoney+"</font>";//totalpoints;
				
			  } else {
				document.getElementById("FishControls").innerHTML = "No Returned Data.";
			  }
			  
			}, params);
		}
		else
			document.getElementById("FishControls").innerHTML = "Please Login First.";
   }
///////////////////////////////////////
/** 
 * Called when JSON is loaded. Creates sidebar if param_sideBar is true.
 * Sorts rows if param_rankColumn is valid column. Iterates through worksheet rows, 
 * creating marker and sidebar entries for each row.
 * @param {JSON} json Worksheet feed
 */       
function cm_loadMapJSON(json) {
  var usingRank = false;

  if(param_useSidebar == true) {
    var sidebarTD = document.createElement("td");
    sidebarTD.setAttribute("width","150");
    sidebarTD.setAttribute("valign","top");
    var sidebarDIV = document.createElement("div");
    sidebarDIV.id = "cm_sidebarDIV";
    sidebarDIV.style.overflow = "auto";
    sidebarDIV.style.height = "450px";
    sidebarDIV.style.fontSize = "11px";
    sidebarDIV.style.color = "#111111";
    sidebarTD.appendChild(sidebarDIV);
    document.getElementById("cm_mapTR").appendChild(sidebarTD);
	//////////////////////////////////
	 var markerA = document.createElement("a");
        markerA.setAttribute("href","javascript:testfunction()");
        markerA.style.color = "#000000";
        var sidebarText= "Locations";
		var font = document.createElement("font");
					font.style.color = "blue";
					font.appendChild(document.createTextNode(sidebarText));	
					
        markerA.appendChild(font);
        sidebarDIV.appendChild(markerA);
        sidebarDIV.appendChild(document.createElement("br"));
        sidebarDIV.appendChild(document.createElement("br"));
  }

  var bounds = new GLatLngBounds();	  

  if(json.feed.entry[0]["gsx$" + param_rankColumn]) {
    usingRank = true;
    json.feed.entry.sort(cm_sortRows);
  }

  for (var i = 0; i < json.feed.entry.length; i++) 
  {
    var entry = json.feed.entry[i];
    if(entry["gsx$" + param_latColumn]) 
	{
      var lat = parseFloat(entry["gsx$" + param_latColumn].$t);
      var lng = parseFloat(entry["gsx$" + param_lngColumn].$t);
      var point = new GLatLng(lat,lng);
      var 	html = "<div style='font-size:12px; color:black; width: 250px; height: 50px; background-color: Transparent; border-color: Transparent; border-style: none; '>";
			html += "<strong>" + entry["gsx$"+param_titleColumn].$t + "</strong>";
      var label = entry["gsx$"+param_titleColumn].$t;
      var rank = 0;
      if(usingRank && entry["gsx$" + param_rankColumn]) 
	  {
        rank = parseInt(entry["gsx$"+param_rankColumn].$t);
      }
      if(entry["gsx$" + param_descriptionColumn]) 
	  {
        html += "<br/>" + entry["gsx$"+param_descriptionColumn].$t;
      } 
	 
	//html += "<table border='1' width='250' height='250'><tr><td><div id='FishControls'><BR><button onclick='fish_here("+lat+","+lng+")'>Fish Here</button></div></td></tr></table>";
	html += "<center><div id='FishControls'><BR><button onclick='fish_here("+lat+","+lng+")'>Fish Here</button>";
	 if(entry["gsx$" + param_imageColumn]) 
	  {
        html += "<BR><center><img width='250' height='250' src='http://bestfishinggame.com/locations/" + entry["gsx$"+param_imageColumn].$t + "'></div></center>";
      }
	html += "</div>";
	  //html +=
      
      // create the marker
      var marker = cm_createMarker(point,label,html,rank);
      cm_map.addOverlay(marker);
      cm_mapMarkers.push(marker);
      cm_mapHTMLS.push(html);
      bounds.extend(point);
	  
      if(param_useSidebar == true) 
	  {
        var markerA = document.createElement("a");
        markerA.setAttribute("href","javascript:cm_markerClicked('" + i +"')");
        markerA.style.color = "#000000";
        var sidebarText= "";
        if(usingRank) 
		{
          sidebarText += rank + ") ";
        } 
        sidebarText += label;
		var font = document.createElement("font");
					font.style.color = "white";
					font.appendChild(document.createTextNode(sidebarText));	
        markerA.appendChild(font);
        sidebarDIV.appendChild(markerA);
        sidebarDIV.appendChild(document.createElement("br"));
        sidebarDIV.appendChild(document.createElement("br"));
      } 
    }
  }

  cm_map.setZoom(cm_map.getBoundsZoomLevel(bounds));
  cm_map.setCenter(bounds.getCenter());
}

/**
 * Creates marker with ranked Icon or blank icon,
 * depending if rank is defined. Assigns onclick function.
 * @param {GLatLng} point Point to create marker at
 * @param {String} title Tooltip title to display for marker
 * @param {String} html HTML to display in InfoWindow
 * @param {Number} rank Number rank of marker, used in creating icon
 * @return {GMarker} Marker created
 */
function cm_createMarker(point, title, html, rank) {
  var markerOpts = {};
  var nIcon = new GIcon(cm_baseIcon);

    nIcon.imageOut = "marker_green.png";
    nIcon.imageOver = "marker_red.png";
    nIcon.image = nIcon.imageOut;


  markerOpts.icon = nIcon;
  markerOpts.title = title;		 
  var marker = new GMarker(point, markerOpts);
	
  GEvent.addListener(marker, "click", function() {
    marker.openInfoWindowHtml(html);
  });
  GEvent.addListener(marker, "mouseover", function() {
    marker.setImage(marker.getIcon().imageOver);
  });
  GEvent.addListener(marker, "mouseout", function() {
    marker.setImage(marker.getIcon().imageOut);
  });
  GEvent.addListener(marker, "infowindowopen", function() {
    marker.setImage(marker.getIcon().imageOver);
  });
  GEvent.addListener(marker, "infowindowclose", function() {
    marker.setImage(marker.getIcon().imageOut);
  });
  return marker;
}

/**
 * Creates a script tag in the page that loads in the 
 * JSON feed for the specified key/ID. 
 * Once loaded, it calls cm_loadMapJSON.
 */
function cm_getJSON() {

  // Retrieve the JSON feed.
  var script = document.createElement('script');

  script.setAttribute('src', 'http://spreadsheets.google.com/feeds/list'
                         + '/' + param_ssKey + '/' + param_wsId + '/public/values' +
                        '?alt=json-in-script&callback=cm_loadMapJSON');
  script.setAttribute('id', 'jsonScript');
  script.setAttribute('type', 'text/javascript');
  document.documentElement.firstChild.appendChild(script);
}

setTimeout('cm_load()', 500); 

//]]>
