﻿/// <reference path = "gmap_js_helper.js"/>

 
  var RedIcons = [];
  var WhiteIcons = [];
  var BlueIcons = [];
  var HazardIcons = [];
  var DRangeIcons = [];
  
  var RedMarkers = [];
  var WhiteMarkers = [];
  var BlueMarkers = [];
  var HazardMarkers = [];
  var DRangeMarkers = [];
  
  var DRangeNames =[];
  var CourseName = "";
  var map;
 
 function StartMyMap()
 {
 load();
 }
 
 function CheckForFile()
 {
 var fileName = window.location.search;
 
 if (fileName.substring(0,1) == "?")
    {
        fileName = unescape(fileName.substring(1));
        LoadCourseFromFile(fileName);
    }
 }
 
 function LoadCourseFromFile(fileName)
 {
     var oRequest = new XMLHttpRequest();
    var sURL  = "http://"+self.location.hostname+"/golfgps/courses/files/" + fileName;

    oRequest.open("GET",sURL,false);
    oRequest.setRequestHeader("User-Agent",navigator.userAgent);
    oRequest.send(null)

    if (oRequest.status==200)
    {
     
        var aFile = oRequest.responseText.split("\r\n");
        var i = 0;
        for(i=0;i<aFile.length;i++)
        {
                
            if(aFile[i].indexOf("Course") != -1 && aFile[i] != "End Course")
            {
            CourseName = aFile[i].substring(9);
            
            document.getElementsByName("CourseName")[0].value = CourseName;
            }
            if(aFile[i].indexOf("[") != -1)
            {
            
            
            var HoleNumber = aFile[i].substring(1,2);
            if(aFile[i].indexOf("]")==3)
            {
             HoleNumber = aFile[i].substring(1,3);
            }
            
            var Front = aFile[i+1].substring(8);
            var Middle = aFile[i+2].substring(9);
            var Back = aFile[i+3].substring(7);
            
            sFront = Front.split(",");
            sMiddle = Middle.split(",");
            sBack = Back.split(",");
            
             //alert("H:" + HoleNumber + " , " + Front + " , " + Middle + " , " +Back);
            RedMarkers[HoleNumber-1] = new GMarker(new GLatLng(sFront[0],sFront[1]),{icon:RedIcons[HoleNumber-1], draggable:true});
            WhiteMarkers[HoleNumber-1] = new GMarker(new GLatLng(sMiddle[0],sMiddle[1]),{icon:WhiteIcons[HoleNumber-1], draggable:true});
            BlueMarkers[HoleNumber-1] = new GMarker(new GLatLng(sBack[0],sBack[1]),{icon:BlueIcons[HoleNumber-1], draggable:true});
            
            
            var hazard = "";
            
           
            if(aFile[i+4].indexOf("hazard") != -1)
            {
            
                hazard = aFile[i+4].substring(9);
                sHazard = hazard.split(",");
                //alert("hazzard:" + hazard);
                if(sHazard[0] == 0 || sHazard[1] == 0)
                {
                    var tLoc = WhiteMarkers[HoleNumber - 1].getLatLng();            
                    var templat = tLoc.lat() - .0001;
                    var templng = tLoc.lng();
                    var hazLoc = new GLatLng(templat,templng);
                    HazardMarkers[HoleNumber - 1] = new GMarker(hazLoc,{icon:HazardIcons[HoleNumber-1], draggable:true});
                }
                else
                {
                    HazardMarkers[HoleNumber-1] = new GMarker(new GLatLng(sHazard[0],sHazard[1]),{icon:HazardIcons[HoleNumber-1], draggable:true});
                    map.addOverlay(HazardMarkers[HoleNumber-1]);
                }
                //i=i+4;
            }
            else
            {
            //alert("no hazard");
            var tLoc = WhiteMarkers[HoleNumber - 1].getLatLng();            
            var templat = tLoc.lat() - .0006;
            var templng = tLoc.lng();
            var hazLoc = new GLatLng(templat,templng);
            HazardMarkers[HoleNumber - 1] = new GMarker(hazLoc,{icon:HazardIcons[HoleNumber-1], draggable:true});
            map.addOverlay(HazardMarkers[HoleNumber-1]);
            //i = i+3;
            }
            
            map.addOverlay(RedMarkers[HoleNumber-1]);
            map.addOverlay(WhiteMarkers[HoleNumber-1]);
            map.addOverlay(BlueMarkers[HoleNumber-1]);
			document.getElementsByName(HoleNumber)[0].disabled = true;
			
            
            
            }
            
            //dr code here
             if(aFile[i].indexOf("{") != -1)
             {
                var drNumber = parseInt(aFile[i].substring(1,2));
                var drName = aFile[i+1].substring(7);
                var drPosition = aFile[i+2].substring(11);
            
             //alert(drNumber);
                if(drPosition != "0,0")
                {
                    var sdrPosition = drPosition.split(",");
                    DRangeMarkers[drNumber] = new GMarker(new GLatLng(sdrPosition[0],sdrPosition[1]),{icon:DRangeIcons[drNumber], draggable:true});
                    map.addOverlay(DRangeMarkers[drNumber]);
                    
                    document.getElementsByName("DRName" + (drNumber + 1))[0].value = drName;
                    document.getElementsByName("d" + (drNumber + 1))[0].disabled = true;
                }
                //i=i+2;
             }
        }
      map.setCenter(WhiteMarkers[0].getLatLng(), 17);
     
    }
    
    else
    {
        alert("Error executing XMLHttpRequest call!");
     }


 }
 
 function load() 
 {
      if (GBrowserIsCompatible()) 
      {
    
      LoadIcons();      
      
       map = new GMap2(document.getElementById("map"));
       map.setMapType(G_HYBRID_MAP);
       map.enableGoogleBar();
       map.addControl(new GLargeMapControl());
       map.addControl(new GMapTypeControl());
       map.setCenter(new GLatLng(38.922437,-95.319244), 4);
       CheckForFile();
       document.getElementById("Status_Update").innerHTML = "";
      }      
    
    
 }
 
 function LoadIcons()
 {
 var i = 0;
 for(i = 0; i<18;i++)
 {
 //load the reds
      var FlagIcon = new GIcon();
      FlagIcon.image = "Icons/red" + (i+1) + ".png";
      FlagIcon.iconSize = new GSize(20, 34);
      FlagIcon.iconAnchor = new GPoint(2,34);
      RedIcons[i] = FlagIcon;
      
      //load the blues
      FlagIcon = new GIcon();
      FlagIcon.image = "Icons/blue" + (i+1) + ".png";
      FlagIcon.iconSize = new GSize(20, 34);
      FlagIcon.iconAnchor = new GPoint(2,34);
      BlueIcons[i] = FlagIcon;
      
      //load the whites
      FlagIcon = new GIcon();
      FlagIcon.image = "Icons/white" + (i+1) + ".png";
      FlagIcon.iconSize = new GSize(20, 34);
      FlagIcon.iconAnchor = new GPoint(2,34);
      WhiteIcons[i] = FlagIcon;
	
	//load the hazards
	  FlagIcon = new GIcon();
      FlagIcon.image = "Icons/haz" + (i+1) + ".png";
      FlagIcon.iconSize = new GSize(20, 34);
      FlagIcon.iconAnchor = new GPoint(2,34);
      HazardIcons[i] = FlagIcon;
      
 }
 
 i=0;
 for(i=0;i<6;i++)
 {
	  FlagIcon = new GIcon();
      FlagIcon.image = "Icons/DR" + (i+1) + ".png";
      FlagIcon.iconSize = new GSize(20, 34);
      FlagIcon.iconAnchor = new GPoint(2,34);
      DRangeIcons[i] = FlagIcon; 
 }
 
 
 }
 
 function OnTextBoxFocus(txtbox)
 {
 if(txtbox.value == "Enter Course Name Here")
 {
 txtbox.value = "";
 }
 }

function OnSubmit()
{



    if(RedMarkers.length != 18 || WhiteMarkers.length != 18 || BlueMarkers.length != 18)
        {
       
        //alert(RedMarkers[0].getLatLng().toUrlValue());
            alert("All Holes are not marked, you must have all 18 holes marked");
            return;
        }
    if(document.getElementsByName("CourseName")[0].value == "Enter Course Name Here" || document.getElementsByName("CourseName")[0].value == '')
        {
            alert("Course Name must be filled out");
            return;
        }
        document.getElementsByName("SubmitCourse")[0].disabled = true;
        var post = "Course=" + document.getElementsByName("CourseName")[0].value;
        var i = 0;
        
        for(i=0;i<18;i++)
        {
            post += "&f" + (i+1) + "=" + RedMarkers[i].getLatLng().toUrlValue();
            post += "&m" + (i+1) + "=" + WhiteMarkers[i].getLatLng().toUrlValue();
            post += "&b" + (i+1) + "=" + BlueMarkers[i].getLatLng().toUrlValue();
			post += "&h" + (i+1) + "=" + HazardMarkers[i].getLatLng().toUrlValue();
        }
        
		//need to add Driving Range Values Here
        for(i=0;i<6;i++)
		{
			post += "&drName" + (i + 1) + "=" + document.getElementsByName("DRName" + (i+1))[0].value
			if(DRangeMarkers[i] == null)
			{
				post += "&dr" + (i + 1) + "=0,0";
				
			}
			else
			{
				post += "&dr" + (i+1) + "=" + DRangeMarkers[i].getLatLng().toUrlValue();
			}
			
		}
        
       GDownloadUrl("MakeCourse.php",function(doc){
       //alert(doc.toString());
       if(doc.toString().indexOf("File Created") >= 0)
       {
       var ihtml = 'Course complete.  Download it <a href="../courses/download.php?file=' + document.getElementsByName("CourseName")[0].value +'.gps">HERE</a>';
       ihtml += '<br /><a href = "../courses">View all downloadable courses</a>';
       
       document.getElementById("Hole_Data").innerHTML = ihtml;
       
       }
       else
       {
       alert(doc);
       }
       
       },post);
       
       document.getElementById("Hole_Data").innerHTML = "Creating Course, Please Wait.......";
        
} 

function updateDR(iButton)
{
	var i = iButton.name.substring(1) - 1;
	
	var tloc = map.getCenter();
	DRangeMarkers[i] = new GMarker(tloc,{icon:DRangeIcons[i], draggable:true});
	map.addOverlay(DRangeMarkers[i]);
	iButton.disabled = true;
}
 
 //bad name, but it actually is the button event handler, will add flags to the map
 function updatePoints(iButton)
            {
            var i = iButton.name - 1;
            //map = new GMap2(); //intelisense only
           // var mark = new GMarker();//intelisense only
            
                        
            var whiteLoc = map.getCenter();
            var templat = whiteLoc.lat() - .0001;
            var templng = whiteLoc.lng();
            var blueLoc = new GLatLng(templat,templng);
            templat = whiteLoc.lat() + .0001;
            var redLoc = new GLatLng(templat,templng);
            templng = whiteLoc.lng() - .0005;
			var hazLoc = new GLatLng(whiteLoc.lat(),templng);
            
            RedMarkers[i] = new GMarker(redLoc,{icon:RedIcons[i], draggable:true});
            WhiteMarkers[i] = new GMarker(whiteLoc,{icon:WhiteIcons[i], draggable:true});
            BlueMarkers[i] = new GMarker(blueLoc,{icon:BlueIcons[i], draggable:true});
            HazardMarkers[i] = new GMarker(hazLoc,{icon:HazardIcons[i], draggable:true});

 
            map.addOverlay(RedMarkers[i]);
            map.addOverlay(WhiteMarkers[i]);
            map.addOverlay(BlueMarkers[i]);
			map.addOverlay(HazardMarkers[i]);
   
            iButton.disabled = true;


    }
 


//debug code...event handlers for markers
//            GEvent.addListener(RedMarkers[i],"dragend",function OnHoleMove(marker)
// {
// var iHTML = "<table>";
// 
// var i = 0;
// var len = RedMarkers.length;
// 
// for(i=0;i<len;i++)
// {
//    try
//    {
//        iHTML += "<tr><td>Hole " + (i+1) + "</td><td>(" + RedMarkers[i].getPoint().lat().toFixed(6) + ", " + RedMarkers[i].getPoint().lng().toFixed(6) + ")";
//        iHTML += "(" + WhiteMarkers[i].getPoint().lat().toFixed(6) + ", " + WhiteMarkers[i].getPoint().lng().toFixed(6) + ")";
//        iHTML += "(" + BlueMarkers[i].getPoint().lat().toFixed(6) + ", " + BlueMarkers[i].getPoint().lng().toFixed(6) + ")";
//        iHTML += "</td></tr>"; 
//    }
//    catch(err)
//    {
//        iHTML += "<tr><td>Hole " + (i+1) + "</td><td>NOT Defined Yet</td></tr>";
//    }
// 
// }
// iHTML += "</table>";
// document.getElementById("Hole_Data").innerHTML = iHTML;
// 
// });
//            
//            
//            GEvent.addListener(WhiteMarkers[i],"dragend",function OnHoleMove(marker)
// {
// var iHTML = "<table>";
// 
// var i = 0;
// var len = RedMarkers.length;
// 
// for(i=0;i<len;i++)
// {
//    try
//    {
//        iHTML += "<tr><td>Hole " + (i+1) + "</td><td>(" + RedMarkers[i].getPoint().lat().toFixed(6) + ", " + RedMarkers[i].getPoint().lng().toFixed(6) + ")";
//        iHTML += "(" + WhiteMarkers[i].getPoint().lat().toFixed(6) + ", " + WhiteMarkers[i].getPoint().lng().toFixed(6) + ")";
//        iHTML += "(" + BlueMarkers[i].getPoint().lat().toFixed(6) + ", " + BlueMarkers[i].getPoint().lng().toFixed(6) + ")";
//        iHTML += "</td></tr>"; 
//    }
//    catch(err)
//    {
//        iHTML += "<tr><td>Hole " + (i+1) + "</td><td>NOT Defined Yet</td></tr>";
//    }
// 
// }
// iHTML += "</table>";
// document.getElementById("Hole_Data").innerHTML = iHTML;
// 
// });
//            
//           
//            GEvent.addListener(BlueMarkers[i],"dragend",function OnHoleMove(marker)
// {
// var iHTML = "<table>";
// 
// var i = 0;
// var len = RedMarkers.length;
// 
// for(i=0;i<len;i++)
// {
//    try
//    {
//        iHTML += "<tr><td>Hole " + (i+1) + "</td><td>(" + RedMarkers[i].getPoint().lat().toFixed(6) + ", " + RedMarkers[i].getPoint().lng().toFixed(6) + ")";
//        iHTML += "(" + WhiteMarkers[i].getPoint().lat().toFixed(6) + ", " + WhiteMarkers[i].getPoint().lng().toFixed(6) + ")";
//        iHTML += "(" + BlueMarkers[i].getPoint().lat().toFixed(6) + ", " + BlueMarkers[i].getPoint().lng().toFixed(6) + ")";
//        iHTML += "</td></tr>"; 
//    }
//    catch(err)
//    {
//        iHTML += "<tr><td>Hole " + (i+1) + "</td><td>NOT Defined Yet</td></tr>";
//    }
// 
// }
// iHTML += "</table>";
// document.getElementById("Hole_Data").innerHTML = iHTML;
// 
// });
//end debug code...
