var host_name=site_host_url;
var profile_map; 
var geocoder;
var xmlDoc='';
var side_bar_html = "";
var gmarkers = [];
var htmls = [];
var i = 0;
var xmlHttp='';
var opt;
var flag=true;
var zoom_level=7;
function loadMap()
{
    profile_map = new GMap2(document.getElementById("profile_map"));
   // profile_map.setCenter(new GLatLng(document.getElementById('p_lat').value,document.getElementById('p_lon').value),5);
  //  profile_map.enableScrollWheelZoom();
    //profile_map.addControl(new google.maps.LocalSearch(), new GControlPosition(G_ANCHOR_BOTTOM_RIGHT, new GSize(5,3)));
  //  profile_map.setCenter(new GLatLng(40.875949,-74.201489),10);

//     geocoder = new GClientGeocoder();
    // profile_map.setUIToDefault();
    profile_map.addControl(new GSmallMapControl());
    
//  profile_map.addControl(new GMapTypeControl());
}//end of function load
////// Start Ajax function
function GetXmlHttpObject()
{
    var xmlHttp=null;	
    try
    {
        // Firefox, Opera 8.0+, Safari
        xmlHttp=new XMLHttpRequest();
    }
    catch (e)
    {
        // Internet Explorer
        try
        {
            xmlHttp=new ActiveXObject("Msxml.XMLHTTP");

        }
        catch (e)
        {
            xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");

        }
    }
    return xmlHttp;
}
//////////End Ajax Object


function ActiveServiceAreaByRadius(id)
{
    if(id=='1')
    {
        readPrimaryMap(document.getElementById('userid').value);
        if(document.getElementById('no-state-selection').style.display="block")
        {
            document.getElementById('state_wise').style.display="none";
            document.getElementById('radius_wise').style.display="block";
            document.getElementById('no-state-selection').style.display="none";
        }
    }
    if(id=='2')
    {
       document.getElementById('state_wise').style.display="block";
       document.getElementById('radius_wise').style.display="none";
       readStateMap(document.getElementById('userid').value);
    }
    if(flag==true)
    {
        document.getElementById('map_table').style.display="block";
        flag= true;
    }
    else
    {
        document.getElementById('map_table').style.display="none";
        flag= true;
    }
}//end of function

var state=true;
function profileActiveServiceAreaByState()
{
    if(state==true)
    {
        readStateMap(document.getElementById('userid').value);
        document.getElementById('map_table').style.display="block";
        state= false;
    }
    else
    {
        readStateMap(document.getElementById('userid').value);
        document.getElementById('map_table').style.display="none";
        state= true;
    }
}//end of function
var r=true
function profileServiceAreaByradius()
{
    if(r==true)
    {
        readPrimaryMap(document.getElementById('userid').value);
        document.getElementById('map_table').style.display="block";
        loadMap();
        r= false;
    }
    else
    {
        readPrimaryMap(document.getElementById('userid').value);
        document.getElementById('map_table').style.display="none";
        r= true;
    }
}//end of function




// Draw a circle on profile_map around center (radius in miles)
    // Modified by Jeremy Schneider based on http://maps.huge.info/dragcircle2.htm
    var poly = [] ; 
    var line ; 
    function drawCircle(profile_map, center, radius, numPoints)
    {
        poly = [] ; 
        var lat = center.lat() ;
        var lng = center.lng() ;
        var d2r = Math.PI/180 ;                // degrees to radians
        var r2d = 180/Math.PI ;                // radians to degrees
        var Clat = (radius/3963) * r2d ;      //  using 3963 as earth's radius
        var Clng = Clat/Math.cos(lat*d2r);
        //Add each point in the circle
        for (var i = 0 ; i < numPoints ; i++)
        {

            var theta = Math.PI * (i / (numPoints / 2)) ;
            Cx = lng + (Clng * Math.cos(theta)) ;
            Cy = lat + (Clat * Math.sin(theta)) ;
            poly.push(new GLatLng(Cy,Cx)) ;
        }
//Remove the old line if it exists
//             if(line)
//             {
//                 profile_map.removeOverlay(line) ;
//             }
        //Add the first point to complete the circle
        poly.push(poly[0]) ;
        //Create a line with teh points from poly, red, 3 pixels wide, 80% opaque
        line = new GPolygon(poly, '#FF0000', 2, 1, '#000000',0.25);
//            line = new GPolyline(poly,'#FF0000', 3, 0.8,'#FF0000',0.25) ;

        profile_map.addOverlay(line) ;
    }
//end of function for circle

//function for create the primary marker
function createPrimaryMarker(point,name,html,opt)
{
    var marker = new GMarker(point,opt);
    GEvent.addListener(marker, "click", function(){
        marker.openInfoWindowHtml(html);
    });
    gmarkers[i] = marker;
    htmls[i] = html;
//     side_bar_html += '<a href="javascript:myclick(' + i + ')">' + name + '<\/a><br>';
    i++;
    return marker;
}//end of function createPrimaryMarker

function readPrimaryMap(userid)
{
    //var aid=document.getElementById('aid').value;
    url=host_name+'Zipcode/profilemap/uid/'+userid+"/parent/"+document.getElementById('parent').value+'/zid/'+document.getElementById('zid').value+"/pstatus/"+document.getElementById('pstatus').value+'/search/'+document.getElementById('search').value+"/sid/"+Math.random();

     var primaryrequest = GetXmlHttpObject();
     primaryrequest.open("GET", url, true);
     primaryrequest.setRequestHeader('Content-Type',  "text/xml");
     primaryrequest.onreadystatechange =function handlePrimaryResponse(){
    if (primaryrequest.readyState == 4)
    {
        if(primaryrequest.responseText.length>0)
        {
            xml=xmlHttp.responseXML;
            var primaryresult = primaryrequest.responseXML;
            xmlDoc = primaryrequest.responseXML;
            var StateWise = xmlDoc.documentElement.getElementsByTagName("statewise");
            var RadiusWise = xmlDoc.documentElement.getElementsByTagName("radiuswise");

            if(RadiusWise.length>0)
            {
                var Primary_Zipcode = xmlDoc.documentElement.getElementsByTagName("pzipcode");
                var primary_lat = xmlDoc.documentElement.getElementsByTagName("plat");
                var primary_lon = xmlDoc.documentElement.getElementsByTagName("plng");
                var P_userid = xmlDoc.documentElement.getElementsByTagName("userid");
                var P_radius = xmlDoc.documentElement.getElementsByTagName("radius");
                var P_address = xmlDoc.documentElement.getElementsByTagName("address");
                var P_city = xmlDoc.documentElement.getElementsByTagName("city");
                var P_state = xmlDoc.documentElement.getElementsByTagName("statename");
                gmarkers = [];
                for (var i = 0; i < 1; i++)
                {
                    var latitude = parseFloat(primary_lat[i].childNodes[0].nodeValue);
                    var longitude = parseFloat(primary_lon[i].childNodes[0].nodeValue);	
                    var Primary = Primary_Zipcode[i].childNodes[0].nodeValue;	
                    var userid = P_userid[i].childNodes[0].nodeValue;
                    var radius = P_radius[i].childNodes[0].nodeValue;
                    var city = P_city[i].childNodes[0].nodeValue;
                    var state = P_state[i].childNodes[0].nodeValue;
                    var address =P_address[i].childNodes[0].nodeValue;
                    document.getElementById('p_lat').value=latitude;
                    document.getElementById('p_lon').value=longitude;
                    var point = new GLatLng(latitude,longitude);
                    if(address=='Not Available')
                    {
                      var  html= 'City: '+city;
                        html+= '<br />State: '+state;
                    }
                    else
                    {
                        var html= 'Address: '+address;
                        html+= '<br />City: '+city;
                        html+= '<br />State: '+state;
                    }
                    var label = '<br />Location: '+Primary;

                    var P_marker = createPrimaryMarker(point,label,html,opt);
                    profile_map.addOverlay(P_marker);

                    drawCircle(profile_map,point,radius,20);

                    if(document.getElementById('ls').value)
                    {
            profile_map.setCenter(new GLatLng(document.getElementById('p_lat').value,document.getElementById('p_lon').value),8);
                    }
                    else
                    {
            profile_map.setCenter(new GLatLng(document.getElementById('p_lat').value,document.getElementById('p_lon').value),9);
                    }
    //                 if(radius>15)
    //                 {
    //                     zoom_level=7;
    //                 }
                }//end of for loop
            }
            else if(StateWise.length>0)
            {
                var state_lat = xmlDoc.documentElement.getElementsByTagName("plat");
                var state_lon = xmlDoc.documentElement.getElementsByTagName("plng");
                var state_radius = xmlDoc.documentElement.getElementsByTagName("radius");
                var state_address = xmlDoc.documentElement.getElementsByTagName("address");
                var state_city = xmlDoc.documentElement.getElementsByTagName("city");
                var state_name = xmlDoc.documentElement.getElementsByTagName("statename");
                for (var i = 0; i < 1; i++)
                {
                    var latitude = parseFloat(state_lat[i].childNodes[0].nodeValue);
                    var longitude = parseFloat(state_lon[i].childNodes[0].nodeValue);	
                    var radius = state_radius[i].childNodes[0].nodeValue;
                    var city = state_city[i].childNodes[0].nodeValue;
                    var state = state_name[i].childNodes[0].nodeValue;
                    var address =state_address[i].childNodes[0].nodeValue;

                    document.getElementById('p_lat').value=latitude;
                    document.getElementById('p_lon').value=longitude;
                    var point = new GLatLng(latitude,longitude);

                    if(address=='Not Available')
                    {
                      var  html= 'City: '+city;
                        html+= '<br />State: '+state;
                    }
                    else
                    {
                        var html= 'Address: '+address;
                        html+= '<br />City: '+city;
                        html+= '<br />State: '+state;
                    }
                    var label = '<br />Location: '+Primary;
                    var B_marker = createMarker(point,label,html,house);
                    profile_map.addOverlay(B_marker);
        profile_map.setCenter(new GLatLng(document.getElementById('p_lat').value,document.getElementById('p_lon').value),3);
                    //drawCircle(profile_map,point,radius,20);
                }//end of for loop
            }

//alert("Primary= "+P_markers.length+" Secondary = "+P_Secondary.length);
           // profile_map.getInfoWindow().hide();
          //  profile_map.clearOverlays();
            //document.getElementById("side_bar").innerHTML = side_bar_html;
        }//end of if
        else
        {
            if(document.getElementById('no-active-selection').style.display="none")
            {
                document.getElementById('no-active-selection').style.display="block";
            }
            document.getElementById('no-state-selection').style.display="none";
            document.getElementById('map_table').style.display="none";
        }//end of else
    }//end of if
}//end of handleprimaryresponse
primaryrequest.send(null);
}

//code for statewide selection on google profile_map
function readStateMap(userid)
{
    //xmlHttp=GetXmlHttpObject()
    xmlHttp=GXmlHttp.create();
    if (xmlHttp==null)
    {
        gmarkers= null;
        alert ("Browser does not support HTTP Request");
        return false;
    }
    gmarkers = new Array();
    i = 0;	
    url=host_name+'Zipcode/statewide/uid/'+userid+"/sid/"+Math.random();
    //alert(url);
    xmlHttp.onreadystatechange=stateChanged
    xmlHttp.open("GET",url,true)
    xmlHttp.send(null)
}//end of readStaetMap function

function stateChanged() 
{
        if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
        {
             //profile_map.clearOverlays();
             if(xmlHttp.responseText.length>0)
             {
                xml=xmlHttp.responseXML;
                showStateMarker();
             }
             else
             {
                    document.getElementById('no-state-selection').style.display="block";
                    document.getElementById('map_table').style.display="none";
             }
        }//end of if 
}//end of function stateChanged

function showStateMarker()
{
    var A_markers = xml.documentElement.getElementsByTagName("selection");
    var A_statename= xml.documentElement.getElementsByTagName("state");
    var A_latitude = xml.documentElement.getElementsByTagName("lat");

    var A_longitude = xml.documentElement.getElementsByTagName("lng");
    var s_lat ;
    var s_lng;
    profile_map.clearOverlays();
    for (var counter = 0; counter < A_latitude.length; counter++) 
    {
        if(A_latitude[counter].childNodes.length==0 || A_longitude[counter].childNodes.length==0)
        {
            continue;
        }//end of if condition
        var s_lat = parseFloat(A_latitude[counter].childNodes[0].nodeValue);
        var s_lng = parseFloat(A_longitude[counter].childNodes[0].nodeValue);
        var state_point = new GLatLng(s_lat,s_lng);
        var S_state=A_statename[counter].childNodes[0].nodeValue;
        var state_label='State';
        var state_html='State: '+S_state;
        var state_marker = createStateMarker(state_point,state_label,state_html,house);
        profile_map.addOverlay(state_marker,house);
    }//end of for loop
}//end of function showStateMarker

//A function to create the marker and set up the event window
function createStateMarker(point,name,html,house)
{
    var s_marker = new GMarker(point,house);
    GEvent.addListener(s_marker, "click", function() {
    s_marker.openInfoWindowHtml(html);
});
    gmarkers[i] = s_marker;
    htmls[i] = html;
    side_bar_html += '<a href="javascript:myclick(' + i + ')">' + name + '<\/a><br>';
    i++;
    return s_marker;
}//end of createStateMarker

// This function picks up the click and opens the corresponding info window
function myclick(i)
{
    gmarkers[i].openInfoWindowHtml(htmls[i]);
}//end of function

// A function to create the marker and set up the event window
function createMarker(point,name,html,image) {
var marker = new GMarker(point,image);
GEvent.addListener(marker, "click", function() {
    marker.openInfoWindowHtml(html);
});
gmarkers[i] = marker;
htmls[i] = html;
side_bar_html += '<a href="javascript:myclick(' + i + ')">' + name + '<\/a><br>';
i++;
return marker;
}

