var BASE_URL = "http://www.mailboxmap.com";
//var BASE_URL = "http://localhost";
var freezeFrame = 0;
var current_size = 0;
var MAX_BOXES = 20;
var AUTO_ZOOM = 1;

function createRequestObject() {
    var ro;
    var browser = navigator.appName;
    if(browser == "Microsoft Internet Explorer"){
        ro = new ActiveXObject("Microsoft.XMLHTTP");
    }else{
        ro = new XMLHttpRequest(); 
    }
    //ro.overrideMimeType('text/xml');
    return ro;
}

function getBoxes(n,s,e,w) {
    
    var ups = 0;
    var office = 0;
    var mailbox = 0;
    AUTO_ZOOM=0;
    
    if(document.getElementById('upscheck').checked){
        AUTO_ZOOM=1;
    	ups = 1;
    	}
    if(document.getElementById('uspscheck').checked){
        AUTO_ZOOM=1;
    	office = 1;
    	}	
    if(document.getElementById('mailboxcheck').checked){
        AUTO_ZOOM=1;
    	mailbox = 1;
    	}
    	
    URL = BASE_URL+'/php/getBoxesv2.php?north='+n+'&south='+s+'&east='+e+'&west='+w+'&ups='+ups+'&office='+office+'&boxes='+mailbox;    
           
    //document.getElementById('test').innerHTML = URL;
    try {
	    if(jxmlhttp) {
	    	//alert(URL);
		    jxmlhttp.open('get', URL);
	    	jxmlhttp.onreadystatechange = handleBoxResponse;
	    	jxmlhttp.send(null);
	    }
    	else {
	    	alert('null');
			jxmlhttp = new ActiveXObject("Microsoft.XMLHTTP");	
		}
    } catch(e){ alert(e);}
}



function handleBoxResponse() {

    
    if(jxmlhttp.readyState == 1) {
		document.getElementById('warning').style.display='none';
	    document.getElementById('loading').style.display='block';
		document.getElementById('map').style.marginTop='0px';
    }
    else if(jxmlhttp.readyState == 4){
        
        document.getElementById('loading').style.display='none';
		document.getElementById('warning').style.display='none';
   		document.getElementById('map').style.marginTop='0px';
        
		//alert(jxmlhttp.responseText);
        BOXES = eval('(' + jxmlhttp.responseText + ')');
	
		if (BOXES == null) {
			current_size = 0;
			if(AUTO_ZOOM == 1)
				map.setZoom(map.getZoom()-1);
		} else{
			current_size = BOXES.length;
		}
			
		for(i = 0;i<current_size; i++) {
		     	
			map.addOverlay(createMarker(BOXES[i], i));
			
		}         
				
		if(current_size == MAX_BOXES) {
		
				document.getElementById('warning').style.display='block';		
				document.getElementById('map').style.marginTop='-44px';
		}
                
     }
        
}

//////////////////////////////////////////////////
///////////////////////////////////////////////////


    var selected = -1;
    var map = null;
    var geocoder = null;
    var userMarker = null;
	// Create a base icon for all of our markers that specifies the
	// shadow, icon dimensions, etc.
	var baseIcon = new GIcon();
	baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
	//baseIcon.image = "http://www.google.com/mapfiles/marker.png";
	baseIcon.image = BASE_URL+"/images/map/marker.png";
	baseIcon.iconSize = new GSize(20, 36);
	baseIcon.shadowSize = new GSize(37, 34);
	baseIcon.iconAnchor = new GPoint(9, 34);
	baseIcon.infoWindowAnchor = new GPoint(9, 2);
	baseIcon.infoShadowAnchor = new GPoint(18, 25);

	function updateBoxes(){
	    
	     map.clearOverlays();
		 var bounds = map.getBounds();
		 var southWest = bounds.getSouthWest();
		 var northEast = bounds.getNorthEast();
		 if(userMarker)
			 createUserMarker(userMarker);
		 getBoxes(northEast.lat(), southWest.lat(),northEast.lng(), southWest.lng());


	}


	function createMarker(box, index) {
   	     // Create a lettered icon for this point using our icon class
   	     var letter = String.fromCharCode("A".charCodeAt(0) + index);
   	     var icon; 
   	     if(box.location_type==1) {
   	     	 baseIcon.iconSize = new GSize(28, 33);
		   	 icon = new GIcon(baseIcon);
	   	     icon.image = "/images/map/ups-logo-sd.png";   	     
	   	     }
   	     else if(box.location_type=='BUSINESS' || box.location_type=='RESIDENTIAL') {
   	     	 baseIcon.iconSize = new GSize(20, 36);
		   	 icon = new GIcon(baseIcon);
	   	     icon.image = BASE_URL+"/images/map/expressbox-sd.png";
	   	 } else if (box.location_type == 2){
			baseIcon.iconSize = new GSize(40, 27);
		   	icon = new GIcon(baseIcon);
	   	    icon.image = BASE_URL+"/images/map/logo_usps_eagle-sd-t.png";
	   	 }

		 var marker = new GMarker(new GLatLng(box.lat, box.lng), icon);

   	     GEvent.addListener(marker, "click", function() {
   	       freezeFrame = 1;
   	      if(box.location_type=='BUSINESS' || box.location_type=='RESIDENTIAL') {
			  	   marker.openInfoWindowHtml("<div class='winDesc'><img src='"+BASE_URL+"/images/map/expressbox-sd.png' />&nbsp;&nbsp;<span style='vertical-align:middle'><b>"+box.description + "</b></span></div><table style='width:200px;'><tr><td>Pick-up Times</td><td><div>" + box.pickup_stringA + "</div></td></tr><tr><td>Service Class</td><td><div>" + box.service_class + "</div></td></tr></table>");
	   	       }
 	   	   else if(box.location_type==1) {
 	   	   	   var shippers =  "none";
	 	   	   	   if(box.fedexFlag == 1)
	 	   	   	   		shippers = "FedEx";
				   if(box.uspsFlag == 1 && shippers == "none")
 	   	   		   		shippers = "USPS";
 	   		   	   else if(box.uspsFlag == 1)
 		   	   	   		shippers += ", USPS"; 	   	   	   
				   if(box.upsFlag == 1  && shippers == "none")
 		   	   	   		shippers = "UPS";
				   else if(box.upsFlag == 1)
   	   	   		   		shippers += ", UPS";
				   if(box.dhlFlag == 1 && shippers == "none")
 		   	   	   		shippers = "DHL";
	 	   	   	   else if(box.dhlFlag == 1 && shippers == "none")
 	   	   		   		shippers += ", DHL";
				   marker.openInfoWindowHtml("<div style='margin-right:-80px;text-align:left;'><table><tr><td style='vertical-align:top;'><img src='"+BASE_URL+"/images/map/ups-logo-sd.png' /></td><td style='text-align:left;'><b>The UPS Store</b> <br>"+
							box.address+"<br>"+box.description+"<br>"+box.phone+"&nbsp;&nbsp;<a href='"+box.url+"' target='new'><u>more info</u></a><br></td></tr></table>"+
							"<div style='padding-top:5px;text-align:left;'><b>Hours of Operation:</b></div>"+
							"<table><tr><td>Mon "+
							box.hoursMon+"</td><td style='text-align:left;'>&nbsp;&nbsp;Sat "+
							box.hoursSat+"</td></tr><tr><td>Tue "+
							box.hoursTues+"</td><td>&nbsp;&nbsp;Sun "+
							box.hoursSun+"</td></tr><tr><td>Wed "+
							box.hoursWeds+"</td></tr><tr><td>Thu "+
							box.hoursThurs+"</td></tr><tr><td>Fri "+
							box.hoursFri+"</td></tr></td></tr></table>"+
							"<div style='padding-top:4px;text-align:left'><b>Additional Carriers:</b></div>"+
							"<div style='text-align:left;'>"+shippers+"</div></div>");
					}
	 	   	   else if(box.location_type==2) {
				   marker.openInfoWindowHtml("<div style='text-align:left;'><table><tr><td style='vertical-align:top;'><img src='"+BASE_URL+"/images/map/logo_usps_eagle-sd-t.png' /></td><td><b>US Post Office</b> <br>"+
							box.address+"<br>"+box.phone+"</td></tr></table>"+
							"<table><tr><td><div style='padding-top:5px;text-align:left;'><b>Hours of Operation (Last Collection):</b></div>"+
							"<table><tr style='text-align:left;'><td style='text-align:left;'>Mon "+
							box.hoursMon+" ("+box.LCMon+")</td><td style='text-align:left;'>&nbsp;&nbsp;Sat "+
							box.hoursSat+" ("+box.LCSat+")</td></tr><tr><td>Tue "+
							box.hoursTues+" ("+box.LCTues+")</td><td>&nbsp;&nbsp;Sun "+
							box.hoursSun+" ("+box.LCSun+")</td></tr><tr><td>Wed "+
							box.hoursWeds+" ("+box.LCWeds+")</td></tr><tr><td>Thu "+
							box.hoursThurs+" ("+box.LCThurs+")</td></tr><tr><td>Fri "+
							box.hoursFri+" ("+box.LCFri+")</td></tr></td></tr></table></tr></td></table>");
				  }
	
			//remove warning bubble
			document.getElementById('warning').style.display='none';   	
			document.getElementById('map').style.marginTop='0px';

   	       var resultS = index;
   	       var myBox = box

   	     });
   	     return marker;
	   }	


//////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////

    function load() {
    
// 	 document.getElementById('addressInput').value="Enter ANY Address for Local USPS Mailboxes";
    
      if (GBrowserIsCompatible()) {
        map = new GMap2(document.getElementById("map"));
        map.addControl(new GSmallMapControl());
	    //map.addControl(new GMapTypeControl());
        map.setCenter(new GLatLng(40, -97), 3);
        GEvent.addListener(map, "moveend", function() {
	 	if(freezeFrame != 1) updateBoxes();
	 	freezeFrame = 0;
	});

        geocoder = new GClientGeocoder();        
        
      }
    }



    function showAddress(address) {
      if (geocoder) {
        geocoder.getLatLng(
          address,
          function(point) {
            if (!point) {
              alert(address + " not found");
            } else {
            		 freezeFrame = 1;
             		 map.setCenter(point, 16);
					 userMarker = point
					 updateBoxes();
            }
          }
        );
      }  
    }
    
      function createUserMarker(point) {
       
           baseIcon.iconSize = new GSize(20, 36);
		   var marker = new GMarker(point, new GIcon(baseIcon));
      	   map.addOverlay(marker);
      	   GEvent.addListener(marker, "click", function() {
      	    freezeFrame = 1;
	  	   	marker.openInfoWindowHtml("<div style='vertical-align:middle;text-align:center;' class='winDesc'>You Are Here</div>");
   	     });
      }
      
   
   
function showtip(txt)
{
	 offset = 2;
	 if (document.all) {
    	tempX = window.event.clientX + document.body.scrollLeft;
	    tempY = window.event.clientY + document.body.scrollTop;
	  } else {
    	tempX = e.pageX;
	    tempY = e.pageY;
	  }

	  if (tempX < 0){tempX = 0}
	  if (tempY < 0){tempY = 0}

	document.getElementById('tip').innerHTML='&nbsp;'+txt+'&nbsp;';
	document.getElementById('tip').style.top  = (tempY + offset) + 'px';
	document.getElementById('tip').style.left  = (tempX + offset) + 'px';
	document.getElementById('tip').style.display='block';

}

function resettip()
{
	document.getElementById('tip').innerHTML="";
	document.getElementById('tip').style.display='none';
}

      
      
///////////////////////////////////////////////////
//////////////////////////////////////////////////     
   /*   
   
   var showingDirections = 0;
   
      function makeDirections(point, box) {
            
	      if(point) {
	          
	          document.getElementById('directionsTab').style.display="block";		      	
		      mapRoute(point.lat(),point.lng(),box.address,box.city,box.state,box.zip);

	      }
	      		
     
      
      }
  
        function mapRoute(sLat,sLng,dAdd,dCity,dState,dZip)
		{
			mqRoute = new MQRoute("directionsBox");

			//alert(dAdd + " " + dCity);

			if(showingDirections == 1)
				document.getElementById('loadingDirections').style.display="block";	

			var overviewSize = new MQSize();
			overviewSize.setHeight(300);
			overviewSize.setWidth(300);

			mqRoute.primaryMapSize = overviewSize;

			mqRoute.origin.setLatitude(sLat);
			mqRoute.origin.setLongitude(sLng);
			mqRoute.origin.setName("orig");
			
			mqRoute.destination.setAddress(dAdd);
			mqRoute.destination.setCity(dCity);
			mqRoute.destination.setStateProvince(dState);
			mqRoute.destination.setPostalCode(dZip);
			mqRoute.destination.setName("dest");

			mqRoute.doRoute("routeReturn");
		}
  
  
      
      */
      
      