var map;
var minCommentVisibleZoom ;     //zoom level that comment markers are still visible, taken from GREmbed.aspx.vb
var grRoot ;                    //taken from GREmbed.aspx.vb
var GRbaseIcon;
var comments;
var getCommentsURL;   
var HttpRequest;
var TowerHttpRequest;
var markers;
var geocoder;

var towers ;
var towerMarkers;
var totalTowers;

var buildings;
var buildingMarkers;
var totalBuildings;

//var minTowerVisibleZoom=10;

function trigger()  //body.onload will call trigger() to dynamically load the google map script
{  
  script = document.createElement("script");
  script.type = "text/javascript";
  script.src = src;
  document.body.appendChild(script);
  if($('txtLocation')!=null)
        $('txtLocation').value=defaultLocation;
}
 
function loadMap()  //called-back by google map after finish loading to show the map
{   
    if (GBrowserIsCompatible()) 
    {
          map = new GMap2(document.getElementById("map"));
          map.setCenter(new GLatLng(latitude, longitude), zoom); //latitude, longitude, zoom is declared in vb code
          
          if($('map').clientHeight<300)
            map.addControl(new GSmallMapControl());        
          else
            map.addControl(new GLargeMapControl());                  
          
          if($("map").clientWidth>=260)
            map.addControl(new GMapTypeControl());
          geocoder = new GClientGeocoder();          
          
          GRbaseIcon = new GIcon(G_DEFAULT_ICON);
          GRbaseIcon.iconSize = new GSize(27, 35);
          GRbaseIcon.iconAnchor = new GPoint(6, 35);
          GRbaseIcon.infoWindowAnchor = new GPoint(5, 1);        
         
          toggleOverlay(-1, true);
          
          var pos = new GControlPosition(G_ANCHOR_BOTTOM_RIGHT, new GSize(0,15));
          pos.apply(document.getElementById("logo"));
          map.getContainer().appendChild(document.getElementById("logo"));         
         
          GEvent.addListener(map, "dragend", refreshComments);     
          GEvent.addListener(map, "zoomend", refreshComments); 
          
          GEvent.addListener(map, "click", mapClick);         //click the comments/towers markers on the map => pop info window    
          
          if($('txtLocation')!=null)
          {
              if($('txtLocation').value != "") //|| $('txtZipCode').value != "" || $('txtCity').value != "" || $('txtState').value != "")
              {
                if($('map').style.display!="none")
                    go();
              }
              else
              {
                  flat = map.getBounds().getSouthWest().lat();
                  flng = map.getBounds().getSouthWest().lng();
                  tlat = map.getBounds().getNorthEast().lat();
                  tlng = map.getBounds().getNorthEast().lng();
                  fetchComments(flat, flng, tlat, tlng, 0); //this is embeded => no date filter, set DateFilter=30 days
              }
          }
          else
          {
              flat = map.getBounds().getSouthWest().lat();
              flng = map.getBounds().getSouthWest().lng();
              tlat = map.getBounds().getNorthEast().lat();
              tlng = map.getBounds().getNorthEast().lng();
              fetchComments(flat, flng, tlat, tlng, 0); //this is embeded => no date filter, set DateFilter=30 days
          }
    }
}   

 function mapClick(theMarker, coord)
{
    if (comments != null)
    {
        for (i=0; i < totalComment; i++) 
        {
            if(typeof(comments[i])!='undefined')
            {
                if(comments[i].marker == theMarker)
                {                        
                    comments[i].marker.openInfoWindowHtml(comments[i].marker.myhtml);    
                }
            }
        }
    } 

    if(towers != null)
    {
        for (i=0; i < totalTowers; i++) 
        {
            if(typeof(towers[i])!='undefined')
            {
                if(towers[i].marker == theMarker)
                {                        
                    towers[i].marker.openInfoWindowHtml(towers[i].marker.myhtml);    
                }
            }
        }  
    }
    
    if(buildings != null)
    {
        for (i=0; i < totalBuildings; i++) 
        {
            if(typeof(buildings[i])!='undefined')
            {
                if(buildings[i].marker == theMarker)
                {                        
                    buildings[i].marker.openInfoWindowHtml(buildings[i].marker.myhtml);    
                }
            }
        }  
    }
}

function refreshComments()
{
    flat = map.getBounds().getSouthWest().lat();
    flng = map.getBounds().getSouthWest().lng();
    tlat = map.getBounds().getNorthEast().lat();
    tlng = map.getBounds().getNorthEast().lng();    
    
    if (towers != null)    
    {
        for (var t=0; t < towers.length; t++)         
        {
            map.removeOverlay(towers[t].marker);              
        }
    }
    fetchTowers(flat, flng, tlat, tlng);
    
    if (buildings != null)    
    {
        for (var k=0; k < buildings.length; k++)         
        {
            map.removeOverlay(buildings[k].marker);
        }
    }
    fetchBuildings(flat, flng, tlat, tlng);
    
    if (comments != null)
    {
            for (var u=0; u < comments.length; u++) 
            {
                map.removeOverlay(comments[u].marker);        
            }
    }
    fetchComments(flat, flng, tlat, tlng, 0); 
    
    
}

//:)
function fetchTowers(flat, flng, tlat, tlng)
{   
    if (window.XMLHttpRequest) 
        TowerHttpRequest = new XMLHttpRequest();
    else                       
        TowerHttpRequest = new ActiveXObject("Microsoft.XMLHTTP");

    if (!TowerHttpRequest) 
        return;
    
    getTowersURL = grRoot + "GetTowers.ashx?flat=" + flat + "&flng=" + flng + "&tlat=" + tlat + "&tlng=" + tlng;    
    TowerHttpRequest.onreadystatechange = fetchTowersCallBack;
    TowerHttpRequest.open("GET",getTowersURL);
    TowerHttpRequest.send("");
}

function fetchTowersCallBack()
{
    if (TowerHttpRequest.readyState == 4 && TowerHttpRequest.status == 200)
    {
       loadXmlTowers(TowerHttpRequest.responseXML);
    }
}

//:)
function fetchBuildings(flat, flng, tlat, tlng)
{   
    if (window.XMLHttpRequest) 
        BuildingHttpRequest = new XMLHttpRequest();
    else                       
        BuildingHttpRequest = new ActiveXObject("Microsoft.XMLHTTP");

    if (!BuildingHttpRequest) 
        return;
    
    getBuildingsURL = grRoot + "GetBuildings.ashx?flat=" + flat + "&flng=" + flng + "&tlat=" + tlat + "&tlng=" + tlng;    
    BuildingHttpRequest.onreadystatechange = fetchBuildingsCallBack;
    BuildingHttpRequest.open("GET",getBuildingsURL);
    BuildingHttpRequest.send("");
}

function fetchBuildingsCallBack()
{
    if (BuildingHttpRequest.readyState == 4 && BuildingHttpRequest.status == 200)
    {
       loadXmlBuildings(BuildingHttpRequest.responseXML);
    }
}

function fetchComments(flat, flng, tlat, tlng, dFilter)
{	
    if (window.XMLHttpRequest) 
        HttpRequest = new XMLHttpRequest();
    else                       
        HttpRequest = new ActiveXObject("Microsoft.XMLHTTP");

    if (!HttpRequest) 
        return;

 	getCommentsURL = grRoot + "GetComments.ashx?flat=" + flat + "&flng=" + flng + "&tlat=" + tlat + "&tlng=" + tlng + "&dFilter=" + dFilter;    
    HttpRequest.onreadystatechange = fetchCommentsCallBack;
    HttpRequest.open("GET",getCommentsURL);
    HttpRequest.send("");
}

function fetchCommentsCallBack()
{
    if (HttpRequest.readyState == 4 && HttpRequest.status == 200)
    {
       loadXmlLocations(HttpRequest.responseXML);
    }
}

function loadXmlTowers(result)
{
    var xml = result;       
    if(typeof(map) == 'undefined')
        return;    
    towerMarkers = xml.documentElement.getElementsByTagName("marker");    
    if (towers != null)    
        for (i=0; i < towers.length; i++)         
            map.removeOverlay(towers[i].marker);            
            
    if  (map.getZoom() < minTowerVisibleZoom ) 
        return;
         
    towers = new Array();    
    totalTowers=0;
    for (i = 0; i < towerMarkers.length; i++)     
        if (isCarrierIDChecked(towerMarkers[i].getAttribute("carrier")))        
              totalTowers++;        
    for (i = 0; i < towerMarkers.length; i++) 
    {
        var point = new GLatLng(parseFloat(towerMarkers[i].getAttribute("lat")),parseFloat(towerMarkers[i].getAttribute("lng")));        
        var id = parseInt(towerMarkers[i].getAttribute("id"), 10);        
        var carrier =towerMarkers[i].getAttribute("carrier");        
        var address = towerMarkers[i].getAttribute("address");        
        var city = towerMarkers[i].getAttribute("city");
        var state = towerMarkers[i].getAttribute("state");
        var date =  towerMarkers[i].getAttribute("date");                
        var heightAboveGround = towerMarkers[i].getAttribute("heightAboveGround");
        var heightOfStructure = towerMarkers[i].getAttribute("heightOfStructure");                
        var groundElevation = towerMarkers[i].getAttribute("groundElevation");                
        var heightAMSL = towerMarkers[i].getAttribute("heightAMSL");                
        var structureType = towerMarkers[i].getAttribute("structureType");                

        var icon = new GIcon(G_DEFAULT_ICON);
        var cZoom=map.getZoom();
        switch (cZoom)
        {
            case 10: icon.iconSize = new GSize(10, 20);icon.iconAnchor = new GPoint(5, 10);break;
            case 11: icon.iconSize = new GSize(12, 24);icon.iconAnchor = new GPoint(6, 12);break;
            case 12: icon.iconSize = new GSize(14, 28);icon.iconAnchor = new GPoint(7, 14);break;
            case 13: icon.iconSize = new GSize(16, 32);icon.iconAnchor = new GPoint(8, 16);break;
            case 14: icon.iconSize = new GSize(18, 36);icon.iconAnchor = new GPoint(9, 18);break;
            case 15: icon.iconSize = new GSize(20, 40);icon.iconAnchor = new GPoint(10, 20);break;
            case 16: icon.iconSize = new GSize(22, 44);icon.iconAnchor = new GPoint(11, 22);break;
            case 17: icon.iconSize = new GSize(24, 48);icon.iconAnchor = new GPoint(12, 24);break;
            default: icon.iconSize = new GSize(20, 40);icon.iconAnchor = new GPoint(7, 14);break;
        }
        
        
        icon.shadowSize = new GSize(0,0);                 
        
        switch (carrier)
        {
            case '0': icon.image = "img/TOWATNT.PNG";break;
            case '1': icon.image = "img/TOWSPRINT.PNG";break;
            case '3': icon.image = "img/TOWNEXTEL.PNG";break;
            case '4': icon.image = "img/TOWTMOBILE.PNG";break;
            case '7': icon.image = "img/TOWVERIZON.PNG";break;
            default: icon.image = "img/TOWER.PNG";break;            
        }
        if (isCarrierIDChecked(carrier))  //only show towers markers that related to a checked carrier, filter as of state
        {
            var marker ;
            marker = new GMarker(point, icon);            
            towers.push(new towerObj(id, carrier, point.lat(), point.lng(), date, address, city, state, 
                        null, null, null,null,null,marker));
            marker.myhtml = '<table>';
            
            marker.myhtml += '<tr><td rowspan="4"><img src="' + icon.image + '" width="30" Alt="Tower icon"/></td><td><b><big>Tower Information</big></b></td></tr>';
            marker.myhtml += '<tr><td>Carrier: <b>' + getCarrierName(carrier) + '</b></td></tr>';
            marker.myhtml += '<tr><td>Location:<b> ' + address + ', ' + city + ', ' + state + '</b></td>';            
            marker.myhtml += '<tr><td colspan="2">Date constructed:<b> ' + (trimString(date)!=""?trimString(date):"Not Available") + '</b></td></tr>';
            marker.myhtml += '<tr><td colspan="2">StructureType:<b> ' + structureType + '</b></td></tr>';
            marker.myhtml += '<tr><td colspan="2">Height:<b> ' + heightOfStructure + 'm</b></td></tr>';
            marker.myhtml += '<tr><td colspan="2">Ground elevation:<b> ' + groundElevation + 'm</b></td></tr>';
            marker.myhtml += '<tr><td colspan="2">Height above ground:<b> ' + heightAboveGround + 'm</b></td></tr>';
            marker.myhtml += '<tr><td colspan="2">Overal height above mean sea level:<b> ' + heightAMSL + 'm</b></td></tr>';            
            
            marker.myhtml += '</table>';                      
            map.addOverlay(marker);               
        }
    }     
}

function loadXmlBuildings(result)
{
    var xml = result;       
    if(typeof(map) == 'undefined')
        return;    
        
    buildingMarkers = xml.documentElement.getElementsByTagName("marker");    
    if (buildings != null)    
        for (i=0; i < buildings.length; i++)         
            map.removeOverlay(buildings[i].marker);            
            
    if  (map.getZoom() < minTowerVisibleZoom ) 
        return;
         
    buildings = new Array();    
    totalBuildings=buildingMarkers.length;
    
    for (i = 0; i < buildingMarkers.length; i++) 
    {
        var point = new GLatLng(parseFloat(buildingMarkers[i].getAttribute("lat")),parseFloat(buildingMarkers[i].getAttribute("lng")));        
        var id = parseInt(buildingMarkers[i].getAttribute("id"), 10);        
        var entityname =buildingMarkers[i].getAttribute("entityname");        
        var address = buildingMarkers[i].getAttribute("address");        
        var city = buildingMarkers[i].getAttribute("city");
        var state = buildingMarkers[i].getAttribute("state");
        var date =  buildingMarkers[i].getAttribute("date");                
        var heightAboveGround = buildingMarkers[i].getAttribute("heightAboveGround");
        var heightOfStructure = buildingMarkers[i].getAttribute("heightOfStructure");                
        var groundElevation = buildingMarkers[i].getAttribute("groundElevation");                
        var heightAMSL = buildingMarkers[i].getAttribute("heightAMSL");                
        var structureType = buildingMarkers[i].getAttribute("structureType");                

        var icon = new GIcon(G_DEFAULT_ICON);
        var cZoom=map.getZoom();
        switch (cZoom)
        {
            case 10: icon.iconSize = new GSize(15, 30);icon.iconAnchor = new GPoint(7, 14);break;
            case 11: icon.iconSize = new GSize(17, 34);icon.iconAnchor = new GPoint(8, 16);break;
            case 12: icon.iconSize = new GSize(19, 38);icon.iconAnchor = new GPoint(9, 18);break;
            case 13: icon.iconSize = new GSize(21, 42);icon.iconAnchor = new GPoint(10, 20);break;
            case 14: icon.iconSize = new GSize(23, 46);icon.iconAnchor = new GPoint(11, 22);break;
            case 15: icon.iconSize = new GSize(25, 50);icon.iconAnchor = new GPoint(12, 24);break;
            case 16: icon.iconSize = new GSize(27, 54);icon.iconAnchor = new GPoint(14, 28);break;
            case 17: icon.iconSize = new GSize(29, 58);icon.iconAnchor = new GPoint(15, 30);break;
            default: icon.iconSize = new GSize(20, 40);icon.iconAnchor = new GPoint(10, 20);break;
        }
        
        
        icon.shadowSize = new GSize(0,0);                 
        icon.image = "img/Building.png";                        
        var marker ;
        marker = new GMarker(point, icon);            
        buildings.push(new buildingObj(id, entityname, point.lat(), point.lng(), date, address, city, state, 
                    null, null, null,null,null,marker));
        marker.myhtml = '<table>';        
        marker.myhtml += '<tr><td rowspan="4"><img src="' + icon.image + '" width="30" Alt="Tower icon"/></td><td><b><big>Building Information</big></b></td></tr>';
        marker.myhtml += '<tr><td>Owner: <b>' + entityname + '</b></td></tr>';
        marker.myhtml += '<tr><td>Location:<b> ' + address + ', ' + city + ', ' + state + '</b></td>';            
        marker.myhtml += '<tr><td colspan="2">Date constructed:<b> ' + (trimString(date)!=""?trimString(date):"Not Available") + '</b></td></tr>';
        marker.myhtml += '<tr><td colspan="2">StructureType:<b> ' + structureType + '</b></td></tr>';
        marker.myhtml += '<tr><td colspan="2">Height:<b> ' + heightOfStructure + 'm</b></td></tr>';
        marker.myhtml += '<tr><td colspan="2">Ground elevation:<b> ' + groundElevation + 'm</b></td></tr>';
        marker.myhtml += '<tr><td colspan="2">Height above ground:<b> ' + heightAboveGround + 'm</b></td></tr>';
        marker.myhtml += '<tr><td colspan="2">Overal height above mean sea level:<b> ' + heightAMSL + 'm</b></td></tr>';                    
        marker.myhtml += '</table>';                      
        map.addOverlay(marker);                       
    }     
}

function loadXmlLocations(result)
{       
    var xml = result;      
    
    if (comments != null)
    {
        for (i=0; i < comments.length; i++) 
        {
            map.removeOverlay(comments[i].marker);        
        }
    }    
    
    if  (map.getZoom() < minCommentVisibleZoom ) 
        return;
    
    comments = new Array();
         
    markers = xml.documentElement.getElementsByTagName("marker");
    
    totalComment=0;
    for (i = 0; i < markers.length; i++) 
    {
        if (isCarrierChecked(markers[i].getAttribute("carrier")))
            totalComment++;
    }
    
    
    for (i = 0; i < markers.length; i++) 
    {
        point = new GLatLng(parseFloat(markers[i].getAttribute("lat")),
                           parseFloat(markers[i].getAttribute("lng")));
        rating = parseInt(markers[i].getAttribute("rating"), 10);
        id = parseInt(markers[i].getAttribute("id"), 10);
        display = markers[i].getAttribute("display");
        overallrating = parseInt(markers[i].getAttribute("overallrating"), 10);
        carrier = markers[i].getAttribute("carrier");
        phoneb = markers[i].getAttribute("phoneb");
        phonem = markers[i].getAttribute("phonem");
        zip = markers[i].getAttribute("zip");
        address = markers[i].getAttribute("address");
        address2 = markers[i].getAttribute("address2");
        city = markers[i].getAttribute("city");
        state = markers[i].getAttribute("state");
        date =  markers[i].getAttribute("date");
        comment =  markers[i].getAttribute("comment");
        username =  markers[i].getAttribute("username");
        avatarPic =  markers[i].getAttribute("avatarpic");
        phonePic =  markers[i].getAttribute("phonepic");
        signalIcon0 =  markers[i].getAttribute("signalicon0"); 
        signalIcon1 =  markers[i].getAttribute("signalicon1"); 
        signalIcon2 =  markers[i].getAttribute("signalicon2"); 
        signalIcon3 =  markers[i].getAttribute("signalicon3"); 
        signalIcon4 =  markers[i].getAttribute("signalicon4"); 
        signalIcon5 =  markers[i].getAttribute("signalicon5"); 
        logo_small =  markers[i].getAttribute("logo_small");        
               
        var icon = new GIcon(GRbaseIcon);
        switch(rating)
        {
            case 0:
                icon.image = grRoot + "UploadedImages/" + signalIcon0;
                break;
            case 1:
                icon.image = grRoot +  "UploadedImages/" + signalIcon1;
                break;
            case 2:
                icon.image = grRoot +  "UploadedImages/" + signalIcon2;
                break;
            case 3:
                icon.image = grRoot +  "UploadedImages/" + signalIcon3;
                break;
            case 4:
                icon.image = grRoot +  "UploadedImages/" + signalIcon4;
                break;
            case 5:
                icon.image = grRoot +  "UploadedImages/" + signalIcon5;
                break;                
        }                                          
                    
        if (isCarrierChecked(carrier))  //only show comments markers that related to a checked carrier
        {                    
            var marker = new GMarker(point, icon);            
            comments.push(new commentObj(id, point.lat(), point.lng(), rating, overallrating, carrier, phoneb, phonem, zip, address, address2, city, state, date, comment, username, avatarPic, phonePic, logo_small, marker));           
            marker.myhtml = '<table><tr><td colspan="2">';
            marker.myhtml += '<b>Signal: <img class="rate" src="img/signal/' + rating + '.gif" alt="' + rating + '" /><br>Carrier: ' + carrier + '<br>Phone: ' + phoneb + ' ' + phonem + '<br>Address: ' + address + '<br>' + address2 + '</b>';
            marker.myhtml += '</td></tr>';
            marker.myhtml += '<tr><td><b>' + city + '<br>' + state + ', ' + zip + '</b></td>'
            marker.myhtml += '</td>';
            marker.myhtml += '<td>';
           if (phonePic != '')
                if(phonePic.indexOf('http')==0)
                    marker.myhtml += '<img src="' + phonePic  + '" alt="' + phonem +'" width="80" />&nbsp;&nbsp;';
                else
                    marker.myhtml += '<img src="UploadedImages/' + phonePic  + '" alt="' + phonem +'" width="80" />&nbsp;&nbsp;';
           if (avatarPic != '')
                marker.myhtml += '<img src="' + grRoot + 'UploadedImages/' + avatarPic  + '" alt="' + username +'" width="80" />';
           marker.myhtml += '</td>';
           marker.myhtml += '</tr>';
           marker.myhtml += '<tr>';
           marker.myhtml += '<td colspan="2">';
           marker.myhtml += '<a href="http://www.cellswapper.com" target=_blank >Escape any cell phone contract</a>';
           marker.myhtml += '</td>';
           marker.myhtml += '</tr>';
           marker.myhtml += '</table>';           
           map.addOverlay(marker);
           }
   }
}

//========== go to get lat/long from address+zip and move the map to that location
function go()
{
        var addr =$('txtLocation').value;            
        geocoder.getLocations(addr, gotAddress);
}

function getCityStateCallBack()
{
    if (HttpRequest.readyState == 4 && HttpRequest.status == 200)
    {
        var query = $('txtAddress').value + ", ";
        query += HttpRequest.responseText;
        query += " " + $('txtZipCode').value;                       
        geocoder.getLocations(query, gotAddress);            
    }
}    
 
 function getZipCoordCallBack()
    {
        if (HttpRequest.readyState == 4 && HttpRequest.status == 200)
        {
            var point=new GLatLng(eval(HttpRequest.responseText.split(',')[0]),eval(HttpRequest.responseText.split(',')[1]));
            //map.setCenter(point, map.getZoom());
            if($('map').style.display=="none")
            {
                window.open(grRoot+"default.aspx?exactmap=true&lat=" + point.lat() + "&lng=" + point.lng() + "&zoom=" + map.getZoom())
            }
            else
            {
                map.setCenter(point, zoom);                
            }            
        }
        else
        {
            alert("We were unable to find your zip code");
        }
    }
    
function gotAddress(response) 
{       
    if (!response || response.Status.code != 200) 
    {
          //alert("We were unable to find your location");
    } 
    else 
    {
        if(response.Placemark.length>0)
        {
            place = response.Placemark[0];
            point = new GLatLng(place.Point.coordinates[1], place.Point.coordinates[0]);
            if($('map').style.display=="none")
            {
                window.open(grRoot+"default.aspx?exactmap=true&lat=" + point.lat() + "&lng=" + point.lng() + "&zoom=15") ; //+ map.getZoom())
            }
            else
            {
                map.setCenter(new GLatLng(point.lat(),point.lng()),zoom);                
            }
        }
        else
            alert("We were unable to find your location, try inserting more details into address");
    }
}
//==========

function commentObj (_id, _lat, _lng, _rat, _orat, _carr, _phonb, _phonm, _zip, _add1,
                        _add2, _city, _st, _dat, _comm, _us, _av,
                        _php, _lsm, _mark)
{
    this.id = _id;
    this.lat = _lat;
    this.lng = _lng;
    this.rating = _rat;
    this.overallrating = _orat;
    this.carrier = _carr;
    this.phoneb = _phonb;
    this.phonem = _phonm;
    this.zip = _zip;
    this.address = _add1;
    this.address2 = _add2;
    this.city = _city;
    this.state = _st;
    this.date =  _dat;
    this.comment = _comm;
    this.username = _us;
    this.avatarPic = _av;
    this.phonePic = _php;
    this.logoSmall = _lsm;
    this.marker = _mark;    
}


function towerObj (_id, _carrierfk, _doublelat, _doublelon, _date, _street, _city, _state, _height,
                     _groundele, _overalheight, _heightamsl, _structuretype, _marker)
{
    this.id=_id;
    this.carrierfk=_carrierfk;
    this.doublelat= _doublelat;
    this.doublelon= _doublelon;
    this.date=_date; //date_constructed
    this.street= _street; //structure_street_address
    this.city= _city;
    this.state= _state;
    this.height= _height;
    this.groundele=_groundele;
    this.overalheight= _overalheight;
    this.heightamsl= _heightamsl;
    this.structuretype= _structuretype;
    this.marker=_marker;
}

function buildingObj (_id, _entityname, _doublelat, _doublelon, _date, _street, _city, _state, _height,
                     _groundele, _overalheight, _heightamsl, _structuretype, _marker)
{
    this.id=_id;
    this.entityname=_entityname;
    this.doublelat= _doublelat;
    this.doublelon= _doublelon;
    this.date=_date; //date_constructed
    this.street= _street; //structure_street_address
    this.city= _city;
    this.state= _state;
    this.height= _height;
    this.groundele=_groundele;
    this.overalheight= _overalheight;
    this.heightamsl= _heightamsl;
    this.structuretype= _structuretype;
    this.marker=_marker;
}

function updateEmbedURL()
{
}
    
function trimString(str)
{

    while(str.charAt(0)==' ')
    {
        str=str.substring(1,str.length);
    }

    while(str.charAt(str.length-1)==' ')
    {
            str=str.substring(0,str.length-1);
    }

    return str;
}