/*
 ## 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, 17);
					   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, 17);
			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 handleNoFlash(errorCode) {
  if (errorCode == 603) {
    alert("Google Maps Street View Error: Flash doesn't appear to be supported by your browser");
    return;
  }
}

    function setStreetFlash()
	{

	if(document.getElementById(this.setStreetMapId))
	{

				if(glatlng!=undefined)
				{

					try
						  {
							myPano = new GStreetviewPanorama(document.getElementById(this.setStreetMapId));
							myPano.setLocationAndPOV(glatlng);
							GEvent.addListener(myPano, "error", handleNoFlash);
						  }
						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;
}
