/*
 ## Author: Abhishek V.P
 ## Class : Google map builder
*/

var abmap=null
 var geocoder = null;
 var marker;
var classObject;
	 var myPano;
	 var glatlng;
	 var panoClient;
	 var closeevnt=false;
	 var panoRemoved=false;
	 var setStreetMap=false;
	 var setStreetMapId='pann';
	 var setAddress='';
	 var hybridMap=true;
function GmapClass()
{	
/*
 ## Author: Abhishek V.P
 ## Class : Google map builder
*/

this.loadGmap= loadGmap;
this.setMapType=setMapType;
this.setCenter=setCenter;
this.setStreetFlash=setStreetFlash;
this.createdummyElement=createdummyElement;
this.enableScroll=true;
this.setStreetMap=setStreetMap;
this.setStreetMapId=setStreetMapId;
this.setAddress=setAddress;
this.hybridMap=hybridMap;

this.lat=-37.848676;
this.lng=145.079256;

this.mapcontrol=new GSmallMapControl();
this.markerText="Marker window Text, you can modify the object.markerText property";


function setCenter()
{
  this.center=new GLatLng(this.lat, this.lng);
}

function setMapType(type)
{
 if(type=='big')
 {
   this.mapcontrol=new GLargeMapControl();

 }
 else
 {
   this.mapcontrol=new GSmallMapControl();
 }
}

	function wheelevent(e)
	{
	 if (!e) {  e = window.event } if (e.preventDefault) {  e.preventDefault() } e.returnValue = false;
	}	
	function createdummyElement()
	{
	 if(document.getElementById('examap'))
	 {
	 var elem=document.createElement('<div>');
		  elem.id='pano';
		  elem.innerHTML='test';
		  elem.style.display='none';
		  elem.style.width='600px';
		  elem.style.height='300px';		  
		  document.body.appendChild(elem);
	 }
	 else
	 {
	  setTimeout('classObject.createdummyElement()',1000);
	 }
	}

	function loadGmap() { 
	var localObject=this;
	      if (GBrowserIsCompatible()) {
		  
            abmap = new GMap2(document.getElementById("examap"));
			panoClient = new GStreetviewClient();
		    geocoder = new GClientGeocoder();
			if(this.enableScroll)
			{
		     abmap.enableScrollWheelZoom();
			} 
			abmap.addControl(this.mapcontrol);
			abmap.addControl(new GMapTypeControl());
			
			 if(this.setAddress!='')       
			{		
			        
					geocoder.getLatLng(localObject.setAddress, function(point) { 
					if (point) {
					
					 localObject.center=point ;
					 abmap.setCenter(localObject.center, 13);
					   var marker = new GMarker(point);
			           abmap.addOverlay(marker);
					abmap.setMapType(G_HYBRID_MAP);
					 marker.openInfoWindowHtml(localObject.markerText);
					 GEvent.addListener(marker, "click", function() {
	                marker.openInfoWindowHtml(localObject.markerText);				
			  });  
					 
					}
					else{
					// alert(this.setAddress + " not found");
					 }
					 }   );
            }  		
           else
		   {		
 			this.center=new GLatLng(this.lat, this.lng);
			abmap.setCenter(this.center, 13);
			additions(abmap,this)
		    }
      }
    } 


function additions(abmap,object)
{
if(object.hybridMap)
{
	abmap.setMapType(G_HYBRID_MAP);
}			
		 
		    marker = new GMarker(object.center, {draggable:false});
		    abmap.addOverlay(marker);
		    
			if(object.setStreetMap && document.getElementById(object.setStreetMapId))
			{
			 svOverlay = new GStreetviewOverlay();
			 abmap.addOverlay(svOverlay);
		    } 
				GEvent.addListener(marker, "click", function() {
	                marker.openInfoWindowHtml(object.markerText);				
			  });  
			  
	
			
			
		   if(object.setStreetMap && document.getElementById(object.setStreetMapId))
			{
				 GEvent.addListener(abmap,"click", function(overlay,latlng) {
				 glatlng=latlng;
				 setStreetFlash();
				 }); 
			}
			
		 
			  marker.openInfoWindowHtml(object.markerText);
}

	
    function setStreetFlash()
	{
			
	if(document.getElementById(this.setStreetMapId))
	{
		
				if(glatlng!=undefined)
				{
					
					try
						  {
							myPano = new GStreetviewPanorama(document.getElementById(this.setStreetMapId));  
							myPano.setLocationAndPOV(glatlng);
						  }
						catch(err)
						  {
						  txt="There was an error on this page.\n\n"
						  txt+="Error description: " + err.description + "\n\n"
						  txt+="Click OK to continue.\n\n"
						 // alert(txt)
						  }
					
				}
				
				
	}
	else
	{
  
	   setTimeout('classObject.setStreetFlash()',1000);
	
	} 

	}
	 classObject=this;
}	