/*
 ## 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;
	 var lat='';
	 var lng='';
	 var id='';
	 
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.id=id;

/*this.lat=-37.848676;
this.lng=145.079256;*/

this.lat=lat;
this.lng=lng;

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(this.id));
					panoClient = new GStreetviewClient();
					geocoder = new GClientGeocoder();
					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, 17);
										 var marker = new GMarker(point);
										 abmap.addOverlay(marker);
										 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, 17);
							var marker = new GMarker(this.center);
										 abmap.addOverlay(marker);
										 marker.openInfoWindowHtml(localObject.markerText);
										 GEvent.addListener(marker, "click", function() 
										   {
											 marker.openInfoWindowHtml(localObject.markerText);				
										   });  
							//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;
}	