/*Google maps POI overlay

//requires markermanager.js

*/

var aaPOIMarkers = []; 
var aaPOImgr;

/*data*/
var aaSinglePOIData="/aaservlet/poi-summary";



/*hotel variables*/
var iconHotelImagePath="/images/routes/poi/";
var iconHotelShadowFileName="shadow-17x17sq.png";
var iconHotelFileName="hotel-icon.png";
var iconSmallHotelFileName="aa-marker-dot6.gif";
var iconSmallHotelMarkerUrl=iconHotelImagePath + iconSmallHotelFileName;
var iconMedHotelFileName="hotel-icon-mid.gif";
var iconMedHotelShadowFileName="shadow-10x10sq.png";
var iconMedHotelMarkerUrl=iconHotelImagePath + iconMedHotelFileName;

/*restaurant variables*/
var iconRestaurantImagePath="/images/routes/poi/";
var iconRestaurantShadowFileName="shadow-17x17sq.png";
var iconRestaurantFileName="restaurant-icon.png";
var iconSmallRestaurantFileName="aa-marker-dot6.gif";
var iconSmallRestaurantMarkerUrl=iconRestaurantImagePath + iconSmallRestaurantFileName;
var iconMedRestaurantFileName="restaurant-icon-mid.gif";
var iconMedRestaurantShadowFileName="shadow-10x10sq.png";
var iconMedRestaurantMarkerUrl=iconRestaurantImagePath + iconMedRestaurantFileName;

/*speedcamera variables*/
var iconCameraImagePath="/images/routes/poi/";
var iconCameraShadowFileName="";
var iconCameraFileName="speed-camera17x17.png";
var iconSmallCameraFileName="aa-marker-dot6.gif";
var iconSmallCameraMarkerUrl=iconCameraImagePath + iconSmallCameraFileName;
var iconMedCameraFileName="speed-camera10x10.gif";
var iconMedCameraShadowFileName="";
var iconMedCameraMarkerUrl=iconCameraImagePath + iconMedCameraFileName;




var hotelIcon = new GIcon(G_DEFAULT_ICON,iconHotelImagePath +iconHotelFileName);
	hotelIcon.iconSize = new GSize(17, 17);
	hotelIcon.iconAnchor = new GPoint(9, 9);
	hotelIcon.infoWindowAnchor = new GPoint(8, 0);
	hotelIcon.printImage=iconHotelImagePath +"hotel-icon-print.gif";
	hotelIcon.mozPrintImage=iconHotelImagePath +"hotel-icon-print.gif";
	hotelIcon.shadow = iconHotelImagePath +iconHotelShadowFileName;
	hotelIcon.shadowSize = new GSize(20, 21);
	hotelIcon.imageMap=[0,0,0,17,17,17,17,0];

var hotelMedIcon = new GIcon(G_DEFAULT_ICON,iconMedHotelMarkerUrl);
	hotelMedIcon.iconSize = new GSize(10, 10);
	hotelMedIcon.iconAnchor = new GPoint(5, 5);
	hotelMedIcon.infoWindowAnchor = new GPoint(5, 0);
	hotelMedIcon.printImage=iconMedHotelMarkerUrl;
	hotelMedIcon.mozPrintImage=iconMedHotelMarkerUrl;
	hotelMedIcon.shadow = iconHotelImagePath +iconMedHotelShadowFileName;
	hotelMedIcon.shadowSize = new GSize(12, 13);
	hotelMedIcon.imageMap=[0,0,0,10,10,10,10,0];
		


var restaurantIcon = new GIcon(G_DEFAULT_ICON,iconRestaurantImagePath +iconRestaurantFileName);
		restaurantIcon.iconSize = new GSize(17, 17);
		restaurantIcon.iconAnchor = new GPoint(9, 9);
		restaurantIcon.infoWindowAnchor = new GPoint(8, 0);
		restaurantIcon.printImage=iconRestaurantImagePath +"restaurant-icon-print.gif";
		restaurantIcon.mozPrintImage=iconRestaurantImagePath +"restaurant-icon-print.gif";
		restaurantIcon.shadow = iconRestaurantImagePath +iconRestaurantShadowFileName;
		restaurantIcon.shadowSize = new GSize(20, 21);
    restaurantIcon.imageMap=[0,0,0,17,17,17,17,0];

var restaurantMedIcon = new GIcon(G_DEFAULT_ICON,iconRestaurantImagePath +iconMedRestaurantFileName);
		restaurantMedIcon.iconSize = new GSize(10, 10);
		restaurantMedIcon.iconAnchor = new GPoint(5, 5);
		restaurantMedIcon.infoWindowAnchor = new GPoint(5, 0);
		restaurantMedIcon.printImage=iconRestaurantImagePath +iconMedRestaurantFileName;
		restaurantMedIcon.mozPrintImage=iconRestaurantImagePath +iconMedRestaurantFileName;
		restaurantMedIcon.shadow = iconRestaurantImagePath +iconMedRestaurantShadowFileName;
		restaurantMedIcon.shadowSize = new GSize(12, 13);
    restaurantMedIcon.imageMap=[0,0,0,10,10,10,10,0];



var cameraIcon = new GIcon(G_DEFAULT_ICON,iconCameraImagePath +iconCameraFileName);
		cameraIcon.iconSize = new GSize(17, 17);
		cameraIcon.iconAnchor = new GPoint(9, 9);
		cameraIcon.infoWindowAnchor = new GPoint(8, 0);
		cameraIcon.printImage=iconCameraImagePath +"speed-camera17x17.gif";
		cameraIcon.mozPrintImage=iconCameraImagePath +"speed-camera17x17.gif";
		cameraIcon.shadow = "";
		cameraIcon.shadowSize = new GSize(20, 21);
    cameraIcon.imageMap=[0,0,0,17,17,17,17,0];

var cameraMedIcon = new GIcon(G_DEFAULT_ICON,iconMedCameraMarkerUrl);
		cameraMedIcon.iconSize = new GSize(10, 10);
		cameraMedIcon.iconAnchor = new GPoint(5, 5);
		cameraMedIcon.infoWindowAnchor = new GPoint(5, 0);
		cameraMedIcon.printImage=iconMedCameraMarkerUrl;
		cameraMedIcon.mozPrintImage=iconMedCameraMarkerUrl;
		cameraMedIcon.shadow = "";
		cameraMedIcon.shadowSize = new GSize(12, 13);
		cameraMedIcon.imageMap=[0,0,0,10,10,10,10,0];



function addLocalPOIMarkers(map,lat,lon,poiMsgID,poiTypeID,bolUpdateHotelBar)
{
    	    addPOIJsonData(map,lat,lon,poiMsgID,poiTypeID,bolUpdateHotelBar,'',false);

}

function createQueryParamString(poiType, poiTypeId, maxResults, gazLocString, lat, lon)
{
	var params='poitype=' + poiTypeId + '&maxresults=' + maxResults;
	if (poiType=='hotel')
	{
		if (gazLocString=='' || gazLocString===undefined)
		{
			params += '&lat=' + lat + '&long=' + lon;
		}
		else
		{
			params += '&gazLocation=' + gazLocString;
		}
	}
	else if (poiType == 'restaurant')
	{
		params += '&lat=' + lat + '&long=' + lon;
	}
	return params;
}


function showSinglePOI(map,lat,lng,poiID,poiTypeID,bolShowInfoWindow,bolZoomToPOI,poiTitle)
{
  //display marker if it doesn't exist...

  	
         var poiType=getPOITypeFromID(poiTypeID);
        var   point = new GLatLng(lat,lng);
        var   poiMarker = createPOIMarker(point,poiID,'l',poiTypeID,poiTitle); //actual icon            
        var   poiMediumMarker=createPOIMarker(point,poiID,'m',poiTypeID,poiTitle); //med icons
        var   poiSmallMarker=createPOIMarker(point,poiID,'s',poiTypeID,poiTitle); //small icons
     
        //prevent duplication
        //check key doesn't already exist
        if(aaPOIMarkers[poiID]===undefined)
        {          
          aaPOIMarkers[poiID]=new Array(poiID,poiTypeID,poiTitle,point,poiMarker,poiMediumMarker,poiSmallMarker);
          aaPOImgr.addMarker(poiMarker,11,17); 
          aaPOImgr.addMarker(poiMediumMarker,8,10); 
          aaPOImgr.addMarker(poiSmallMarker,0,7);
        }
       

       aaPOImgr.refresh();
	
	
	
  if(bolZoomToPOI)
    {
	   //zoom to at least 11
      var currentZoomLevel=map.getZoom();

      if(currentZoomLevel<11)
      {
      map.setCenter(new GLatLng(lat,lng), 11);
      }
      else {
      map.setCenter(new GLatLng(lat,lng));
      }
	  }



    //wait for map
    if(bolShowInfoWindow)
    {
      setTimeout(function(){showPOIInfoWindow(point,poiID,poiTypeID);point=null;poiID=null;poiType=null},400);
    }
    
    
}

function showPOIInfoWindow(point,poiID,poiTypeID)
{
  var tmpStrPOItype=getPOITypeFromID(poiTypeID);
	mapGoogle.openInfoWindowHtml(point , "<div id=\'aa-iwindow\' class='iw-" + tmpStrPOItype + "'></div>") 
	//marker.openInfoWindowHtml("<div id=\'aa-iwindow\' class='iw-" + poiType + "'></div>");
	getSinglePOIData(poiID,poiTypeID);
    

}


function createPOIMarker(point,poiID,clusterIconSize,poiTypeID,poiTitle) 
{

//SpeedCamera - poiTypeID=-1

  var poiMarker;
  poiTitle=unescape(poiTitle);
  if(poiTypeID==102 || poiTypeID==103 || poiTypeID==118 || poiTypeID==130)
  {
    poiTitle=poiTitle + " (accommodation)";
  }
  else if(poiTypeID==100){
    poiTitle=poiTitle + " (restaurant)";
  }

  if(clusterIconSize=='l'||clusterIconSize=='m')
  {
    if(clusterIconSize=='l')
    {
      if(poiTypeID==102||poiTypeID==103||poiTypeID==104||poiTypeID==118 || poiTypeID==130)
      {
        poiMarker = new GMarker(point,{icon:hotelIcon,title:poiTitle});
      }
      else if (poiTypeID==100||poiTypeID==113)
      {
        poiMarker=new GMarker(point,{icon:restaurantIcon,title:poiTitle});
      }
      else if (poiTypeID==-1)
      {
        poiMarker=new GMarker(point,{icon:cameraIcon,clickable:false,title:poiTitle});
      }
      else {
        //default icon
        poiMarker=new GMarker(point,{title:poiTitle});
      }
    }
    else if (clusterIconSize=='m')
    {
      if(poiTypeID==102||poiTypeID==103||poiTypeID==104||poiTypeID==118 || poiTypeID==130)
      {
        poiMarker = new GMarker(point,{icon:hotelMedIcon,title:poiTitle});
      }
        else if (poiTypeID==100||poiTypeID==113)
      {
        poiMarker=new GMarker(point,{icon:restaurantMedIcon,title:poiTitle});
      }
        else if (poiTypeID==-1)
      {
        poiMarker=new GMarker(point,{icon:cameraMedIcon,clickable:false,title:poiTitle});
      }
      else {
        //default icon
        poiMarker=new GMarker(point,{title:poiTitle});
      }
    }
    
    if(poiTypeID==102||poiTypeID==103||poiTypeID==104||poiTypeID==118 || poiTypeID==130)
    {
      poiType='hotel';
    }
    else if (poiTypeID==100||poiTypeID==113)
    {
      poiType='restaurant';
    }
    
    //no info windows for certain poitypes
    if(!(poiTypeID==-1))
    {
      GEvent.addListener(poiMarker, 'click', function() {  
              // When clicked, open an Info Window  
              poiMarker.openInfoWindowHtml("<div id=\'aa-iwindow\' class=\'iw-" + poiType + "\'></div>"); 
       });        
      /*only fire contents call once window is open*/        
      GEvent.addListener(poiMarker,'infowindowopen',function() {
        getSinglePOIData(poiID,poiTypeID);
      });
    }
            
          
  }
  else if (clusterIconSize=='s')
  {
    //small icons ,light marker, default hotel
    var tmpIconURL=iconSmallHotelMarkerUrl;
    if(poiTypeID==100||poiTypeID==113)
    {
      tmpIconURL=iconSmallRestaurantMarkerUrl;
    }
    poiMarker=new MarkerLight(point,{image:tmpIconURL,height:6,width:6});
  }

	return poiMarker;
}
	

function clearPOIMarkers(mgr) {
	try {
		
  		mgr.clearMarkers();
	}
	catch(e) {};
}

function clearAllPOIMarkers()
{
	try{
		aaPOImgr.clearMarkers();
		aaPOIMarkers = [];  
	}
	catch(e) {}
}	

function showPOIMarkers(mgr)
{
  mgr.show();
}

function hidePOIMarkers(mgr)
{
  mgr.hide();
}


function addPOIJsonData(map,lat,lon,poiMsgID,poiTypeID,bolUpdateHotelBar,gazLocString,bolZoomToLocation)
{

//max results determined by zoom level?

  var url='/aaservlet/poi-search';
  var params='poitype=' + poiTypeID + '&lat=' + lat + '&long=' + lon + '&maxresults=25';
  if(aaMapPage!='') params+='&ref=' + aaMapPage;
  if(gazLocString!='') params+='&gazLocation=' + gazLocString;
    
  //display loading
  displayPOIMsg("#" + poiMsgID,'<p>Loading...</p>',false);
  

	 $.ajax({
  url:url,
  type: "get",
  data: params,
  dataType: "json",
  error: function(xhr, desc, exceptionobj) { 
          displayPOIMsg("#" + poiMsgID,"<p>There was a problem loading the data. Please try again later.</p>",true);
  },
  success:function(json)
  {
  
        var tmpLmarker=[];
        var tmpMmarker=[];
        var tmpSmarker=[];
  
      //now we have an array of poi
      $.each(json.summaries, function(i,poiItem)
      {
      
        var strName=poiItem.name;
        var strPOIid=poiItem.id;
        var  tmpMarkerFunc=createPOIMarker;
        var   point = new GLatLng(poiItem.latitude,poiItem.longitude);
        var   poiMarker = tmpMarkerFunc(point,strPOIid,'l',poiTypeID,strName); //actual icon            
        var   poiMediumMarker=tmpMarkerFunc(point,strPOIid,'m',poiTypeID,strName); //med icons
        var   poiSmallMarker=tmpMarkerFunc(point,strPOIid,'s',poiTypeID,strName); //small icons
          
        //only add if POI ID does not exist in array
        //or simply clear down existing markers?


        /* checking array
        if(!chkMarkerExists(strPOIid))
        {
            aaPOIMarkers.push(new Array(strPOIid,poiTypeID,strName,point));
          tmpLmarker.push(poiMarker);
          tmpMmarker.push(poiMediumMarker);
          tmpSmarker.push(poiSmallMarker);
        }
        */
        //prevent duplication
        //check key doesn't already exist
        if(aaPOIMarkers[strPOIid]===undefined)
        {
          tmpLmarker.push(poiMarker);
          tmpMmarker.push(poiMediumMarker);
          tmpSmarker.push(poiSmallMarker);
          
          aaPOIMarkers[strPOIid]=new Array(strPOIid,poiTypeID,strName,point,poiMarker,poiMediumMarker,poiSmallMarker);
                    
        }


       });
       
       aaPOImgr.addMarkers(tmpLmarker,11,17); 
       aaPOImgr.addMarkers(tmpMmarker,8,10); 
       aaPOImgr.addMarkers(tmpSmarker,0,7);
       aaPOImgr.refresh();
	
  //clear loading
  hidePOIMsg("#overlayMapMessage");
  
  if(bolZoomToLocation&&lat!=''&&lon!='')
  {
    mapGoogle.setCenter(new GLatLng(lat,lon),11);
  }
  else if(bolZoomToLocation&&gazLocString!='')
  {
    //get northings and eastings from gaz string
    
    var arrGazString=gazLocString.split("%7C");
    var tmpEastings=arrGazString[3];
    var tmpNorthings=arrGazString[4]; 
    
    var geo=ConvertBNGtoWGS84(tmpEastings,tmpNorthings);
    var newGLocation=new GLatLng(geo.latitude, geo.longitude)
    mapGoogle.setCenter(newGLocation); 

  }
  if(bolZoomToLocation)
  {
   //zoom to at least 11
      var currentZoomLevel=map.getZoom();

      if(currentZoomLevel<11)
      {
        mapGoogle.setZoom(11);
      }    
  } 

  if(bolUpdateHotelBar&&poiTypeID==118)
	{

    var maxHotelsToDisplay=25;
    
    //get number of hotels to return from hotel bar width
    if(aaMapPage=='mapfinder')
    {
        var nearbyHotelsElement = $('#nearbyHotels');
        var padding = 14;
        var margin = 20;
        var hotelBarWidth = nearbyHotelsElement.outerWidth(true) - padding - margin;
        maxHotelsToDisplay = Math.floor( hotelBarWidth/213 );
    }

      // Populate hotel bar with results of search that excludes non-AA hotels
				$.ajax({
					url:url,
					type: "get",
					data: createQueryParamString('hotel', '123', maxHotelsToDisplay, gazLocString, lat, lon),
					dataType: "json",
					error: function(xhr, desc, exceptionobj) { 
						// Do not display an error message
					},
					success:function(aaratedjson)
					{
						populateHotelsBarFromJson(aaratedjson,true,poiMsgID,'');
					} 
				});
	}
	if(poiTypeID==118&&json.summaries.length==0)
	{
		displayPOIMsg("#" + poiMsgID,"Sorry, we couldn't find any suitable accommodation in your selected area.",true);
	}
     	if(poiTypeID==102&&json.summaries.length==0)
	{
		displayPOIMsg("#" + poiMsgID,"Sorry, we couldn't find any suitable restaurants in your selected area.",true);
	}

    } //end if success
    
    });//end ajax request


}


function addMarkersFromLatLngArray(arrLatLng,poiTypeID)
{


      var tmpLmarker=[];
      var tmpMmarker=[];
      var tmpSmarker=[];
  
      //now we have an array of poi
      for(i=0;i<arrLatLng.length;i++)
      {
      
        var strName="";
        if(poiTypeID==-1)
        {
          strName='Speed camera';
        }
        var strPOIid="";
        //generate ID from latlng
        strPOIid=arrLatLng[i][0] + "" + arrLatLng[i][1];
        strPOIid=strPOIid.replace(/-/g, "");
        strPOIid=strPOIid.replace(/\./g, "");
        strPOIid=strPOIid.replace(/,/g, "");
        
        
        var  tmpMarkerFunc=createPOIMarker;
        var   point = new GLatLng(arrLatLng[i][0],arrLatLng[i][1]);
        var   poiMarker = tmpMarkerFunc(point,strPOIid,'l',poiTypeID,strName); //actual icon            
        var   poiMediumMarker=tmpMarkerFunc(point,strPOIid,'m',poiTypeID,strName); //med icons
        var   poiSmallMarker=tmpMarkerFunc(point,strPOIid,'s',poiTypeID,strName); //small icons
          
        //prevent duplication
        //check key doesn't already exist
        if(aaPOIMarkers[strPOIid]===undefined)
        {
          tmpLmarker.push(poiMarker);
          tmpMmarker.push(poiMediumMarker);
          tmpSmarker.push(poiSmallMarker);
          
          aaPOIMarkers[strPOIid]=new Array(strPOIid,poiTypeID,strName,point,poiMarker,poiMediumMarker,poiSmallMarker);
                    
        }
       }
       
       aaPOImgr.addMarkers(tmpLmarker,11,17); 
       aaPOImgr.addMarkers(tmpMmarker,8,10); 
       aaPOImgr.addMarkers(tmpSmarker,0,7);
       aaPOImgr.refresh();
}


function chkMarkerExists(strPOIid)
{
  for(i=0;i<aaPOIMarkers.length;i++)
  {
            if(aaPOIMarkers[i][0]==strPOIid)
            {
              return true;
            }
  }
  return false;
}

function chkMarkerExistsInArrayString(strPOIid)
{
  var strMarkers=aaPOIMarkers.toString();
  if(strMarkers.indexOf(strPOIid)>-1)
  {
    return true;
  }
   return false;
}







function checkAndCreateMgr(mgr,poiType,map)
{
  if(mgr===undefined && poiType=='hotel')
  {
    hotelmgr=new MarkerManager(map);
  }
  else if(mgr===undefined && poiType=='restaurant')
  {
    restaurantmgr=new MarkerManager(map);
  }
  else if(mgr===undefined && poiType=='bandb')
  {
    bandbmgr=new MarkerManager(map);
  }
}





function getSinglePOIData(poiID,poiTypeID)
{
  $("#aa-iwindow").html("<p>Loading...</p>");
  //timeout required for infowindow to initialise
  setTimeout(function(){callSinglePOIAjax(poiID,poiTypeID);poiID=null;poiTypeID=null;},200);
  
  
}

function callSinglePOIAjax(inpPoiID,inpPoiTypeID)
{
  var strOutput='';
  var strMoreInfoURL='';
  var inpPOIType=getPOITypeFromID(inpPoiTypeID);
  
  $.ajax({
  url:aaSinglePOIData,
  type: "get",
  data: "poiId=" + inpPoiID,
  dataType: "json",
  error: function(xhr, desc, exceptionobj) { 
  var strErrorOutput="Sorry, there was a problem showing these details. ";
    if(inpPOIType=='hotel'||inpPOIType=='bandb')
    { 
      strErrorOutput+="You can <a href='travel/index.jsp'>search for accommodation here</a>.";
    }
    else if (inpPOIType=='restaurant')
    {
      strErrorOutput+="You can <a href='travel/index.jsp'>search for a restaurant here</a>.";
    }
    $("#aa-iwindow").html(strErrorOutput);
  },
  success:function(json)
  {
    
    var isRedStars=isEmpty(json.isRedStars); //false;
   
    var poiName=isEmpty(json.poiName);
    var category=isEmpty(json.category);
    var imageUrl=isEmpty(json.imageUrl);
    var detailsUrl=isEmpty(json.detailsUrl);
    var poiTypeID=isEmpty(json.poiType); //102
    var percent=isEmpty(json.percent); //76;
    var bookingUrl=isEmpty(json.bookingUrl); 
    var description=isEmpty(json.description);
    //var poiId=json.poiId;
    var rosettes=isEmpty(json.rosettes); //2
    var qualityRating=isEmpty(json.qualityRating); //4
    var priceFrom=isEmpty(json.priceFrom);//105}
    var postcode=isEmpty(json.postcode);
    var bolaaRated=isEmpty(json.aaRated);
    var bolMembershipDiscountAvailable=isEmpty(json.membershipDiscountAvailable);
    var encodedBookingURL=isEmpty(json.encodedBookingURL);
    var appointmentCurrent=isEmpty(json.appointmentCurrent);
    var additionalParms='';
    	
	var starImage="star_" + qualityRating + ".gif";
		if (poiTypeID==102) {
			if(isRedStars)
			{
				starImage="redstar_" + qualityRating + ".gif";
			}
		}
		if (poiTypeID==104) {
			if(isRedStars)
			{
				starImage="yellow-star-" + qualityRating + ".gif";
			}
		}
		
    
    
    if(poiTypeID=='102'||poiTypeID=='103')
    { 
      strMoreInfoURL="/travel/details/hotel/" + inpPoiID;
    }
    else if (poiTypeID=='104')
    {
      strMoreInfoURL="/travel/details/bandb/" + inpPoiID;
    }
    else if (poiTypeID=='100')
    {
      strMoreInfoURL="/travel/details/restaurant/" + inpPoiID;
    }
    
	if(description=='...')
	{
	description='';
	}	


     var isYellowStars=false;
      var isPieRated=false;
      var isEggRated=false;
    
    strOutput+='<p id="iw-poiTitle" >' + poiName + '</p>'
    + '\n<div id="iw-rhs">';

	if(imageUrl!='')
	{
	strOutput+='\n<div id="iw-poiImage"><a href="' + strMoreInfoURL +'""><img src="' + imageUrl + '" alt="' + poiName + '"/></a></div>'
	}
	else
	{
	strOutput+='\n<div id="iw-poiImage"><img src="/images/routes/poi/no-poi-image.gif" alt="No image available"/></div>'
	}

    strOutput+='\n<div id="iw-poiData">';


    var strRHSOutput="";
    
    
  
    if(bolaaRated && (poiTypeID==102 || poiTypeID==103 ||poiTypeID==104))
    {
    strRHSOutput+= '\n<li >';
    strRHSOutput+='<img src="/images/logos/aa-logo-16.gif" alt="AA logo" />';
    

      if(appointmentCurrent=='U')
      {
        //no star ratings if unclassified
        strRHSOutput+='<img class="rating-unconfirmed" src="/images/getaway/hotels/ungraded_icon.gif" alt="Unconfirmed grading" />';
      }
      else 
      {

        if(qualityRating!='' && !isNaN(qualityRating))
        {
          if(appointmentCurrent=='A')
          {
            strRHSOutput+='<img class="rating-associate" src="/images/getaway/hotels/associate_cross.gif" alt="AA Associate" />';
          }
          strRHSOutput+= '<a href="/travel/accommodation_restaurants_grading.html#stars" id="iw-starrating"><img src="/images/travel/places_to_stay/' + starImage + '" alt="' + qualityRating + ' star" /></a>';
        }
      }
      
    strRHSOutput+='</li>'; 
     //end bolAArated 
    }  
    
    strRHSOutput+= '\n<li id="iw-poiDesignator">' + category + '</li>';
    
    if(rosettes!=0&&rosettes!='' && !isNaN(rosettes))
    {
    strRHSOutput+='\n<li ><a href="/travel/accommodation_restaurants_grading.html#restaurants"></a><img src="/images/common/rosette_' + rosettes +'.gif" alt="' + rosettes + ' AA Rosettes" /></li>';
    }
    if(percent!='' && !isNaN(percent) && !isRedStars && poiTypeID==102)
    {
    strRHSOutput+= '\n<li >AA merit score: ' + percent + '%</li>';
    }
    
    //strOutput+='\n<a href="/travel/accommodation_restaurants_grading.html#symbols"><img src="/images/eggcup.gif" alt="egg cup"/></a> '
    //strOutput+= '\n<a href="/travel/accommodation_restaurants_grading.html#symbols"><img src="/images/pie.gif" alt="pie"/></a>'
    //strOutput+= '\n<a href="/travel/accommodation_restaurants_grading.html#symbols"><img src="/images/yellow-star-1.gif" alt="yellow star"/></a>'

    if(priceFrom!='')
    {
      strRHSOutput+=  '\n<li >Price from <strong>&pound;' + priceFrom + '</strong></li>'
    }

    if (strRHSOutput!="" && poiTypeID!=130) 
    {
      strOutput+="\n<ul>" + strRHSOutput + "\n</ul>";
    }
    if(bookingUrl!='')
    {
        strOutput+=  '\n<a href="' + bookingUrl + '" id="iw-poiBook"><img src="/images/buttons/buttonyellow_bookonline-ni.gif" alt="Book online"></a>';
        additionalParms='?only_available=true&bookingURL=' + escape(bookingUrl);
        //Members link
        //check flag
        
        if(bolMembershipDiscountAvailable&&encodedBookingURL!='')
        {
        strOutput+= '\n<a href="/travel/basicsearch/hotels/hotels_member_confirm.jsp?sucessRedirectURL=' + encodedBookingURL + '" id="iw-memberlink">5% discount<br/>for AA Members &raquo;</a>';
        }
    }
    
       

    strOutput+=  '\n</div>'
    + '\n</div>'
    + '\n<p id="iw-poiContent">';
    /*if(poiTypeID==130)
    {
      strOutput+="This establishment is not currently a member of the <a href='/travel_editorial/hotel_services_index.html'>AA ratings scheme</a>.";
    }*/
    strOutput+=description;

    strOutput+='</p>'
    + '\n<p id="iw-moreinfolink">';
    
    // Is this establishment an AA-rated hotel, B and B or restaurant?
    if (poiTypeID==100 || poiTypeID==102  || poiTypeID==103 || poiTypeID==104 )
    { 
        if (additionalParms!='' && (poiTypeID==102  || poiTypeID==103 || poiTypeID==104 )) {
              strOutput+= '\n<a href="' + strMoreInfoURL + additionalParms + '">More info</a>&nbsp;&#0187;';
        }

        else {
           strOutput+= '\n<a href="' + strMoreInfoURL + '">More info</a>&nbsp;&#0187;';
        }
    }
    strOutput+="\n</p>";
    
    if(postcode!='')
    {
    
    
      if(bolRedirectToRP)
      {
        strOutput+='\n<p id="iw-newroute">Plan a new route <a href="/route-planner/index.jsp?toPlace='  + escape(postcode) + '">to here</a> or <a href="/route-planner/index.jsp?fromPlace=' + escape(postcode) + '">from here</a>';
      }
      else
      {
        strOutput+='\n<p id="iw-newroute">Plan a new route <a href="#" onclick="startNewRoute(' + "'mmRouteTo','" + escape(postcode) + "'" + ');"> to here</a> '
    + 'or <a  href="#" onclick="startNewRoute(' + "'mmrouteFrom','" +  escape(postcode) + "'"+ ');">from here</a>';
      }
	
      if(bolShowVia)
      {
      //via link
      strOutput+='<br/>Update route <a href="#" onclick="startNewViaFromPOI(' + "'" + escape(poiName) + "'," +"'" + escape(postcode) + "'," + inpPoiID + ",'" + poiTypeID + "')" + ';">via here</a>';
      strOutput+='</p>';
      }
    }//end if postcode
    strOutput+='\n<br style="clear:both;"/>';

    
    $("#aa-iwindow").html(strOutput);
  }
  });
}


function showMarkerFromPOIID(poiID,lat,lon)
{
  
  $.ajax({
  url:aaSinglePOIData,
  type: "get",
  data: "poiId=" + poiID,
  dataType: "json",
  error: function(xhr, desc, exceptionobj) { 
    
  },
  success:function(json)
  {
     var strPOIName='';
      var strPOIType='';

      //showSinglePOI(mapGoogle,json.latitude,json.longitude,poiID,json.poiType,false,true,json.poiName);
  }
  });
}


function showPOIByDestination(e,lat,lon,poiTypeID,poiMsgID,gazLocString,bolUpdateHotelBar)
{
  //stop any other events firing;
  /*
  if (!e) var e = window.event;
	e.cancelBubble = true;
	if (e.stopPropagation) e.stopPropagation();
  */
  mapGoogle.closeInfoWindow();

  if(poiTypeID==102&&(gazLocString==''||gazLocString===undefined))
  {
    //show hotels on map
    //displayLocalPOIs(mapGoogle,lat,lon,poiMsgID,poiType,url,params,hotelmgr,'',true);
    addPOIJsonData(mapGoogle,lat,lon,poiMsgID,118,bolUpdateHotelBar,'',true)
  }
  else if (poiTypeID==100)
  {
    //show restaurants on map
    //displayLocalPOIs(mapGoogle,lat,lon,poiMsgID,poiType,url,params,restaurantmgr,'',false);
    addPOIJsonData(mapGoogle,lat,lon,poiMsgID,100,bolUpdateHotelBar,'',true)
  }
  
  if(poiTypeID==102&&gazLocString!=''&&gazLocString!==undefined)
  {
    addPOIJsonData(mapGoogle,lat,lon,poiMsgID,118,bolUpdateHotelBar,gazLocString,true)
  }

}


function isEmpty(tmp)
{
    if(tmp===undefined)
    {
      tmp='';
    }
   return tmp;
}


function startNewRoute(field,location)
{
  location=unescape(location);

  if(field=='mmRouteTo')
  {
	$("#routeTo").val(location).css("background-color","#FFFFFF");
	$("#confirmTo").val("");
	$("#confirmToMatches").html("").hide();
	if(isNewToValue!=null)
	{
		isNewToValue=true;
	}
	$("#routeFrom").focus().css("background-color","#FF9900");
  }
  else if (field=='mmrouteFrom')
  {
	$("#routeFrom").val(location).css("background-color","#FFFFFF");
	$("#confirmFrom").val("");
	$("#confirmFromMatches").html("").hide();
	if(isNewFromValue!=null)
	{
		isNewFromValue=true;
	}
	$("#routeTo").focus().css("background-color","#FF9900");

  }
  return false;
}


function startNewViaFromPOI(poiName,poiPostCode,poiId,poiTypeID)
{
	var confFromStr=$("#confirmFrom").val();
	var confToStr=$("#confirmTo").val();
	
	var confFromPlace=getGazPlaceFromString(confFromStr);
	var confToPlace=getGazPlaceFromString(confToStr);

  if(confFromPlace==''||confToPlace==''||poiPostCode=='')
  {
    //can't auto re-route so display error
  }
  


  var viaValue=poiName + ', ' + poiPostCode;
	startNewViaPCRoute(confFromPlace,confToPlace,viaValue,poiId,poiTypeID,poiName);
	return false;
}

function startNewViaPCRoute(fromPlace,toPlace,viaValue,poiId,poiTypeID,poiTitle)
{
  var GInfoWindow=mapGoogle.getInfoWindow();
  var GInfoWindowPoint=GInfoWindow.getPoint();
  var tmpPOILat=GInfoWindowPoint.lat();
  var tmpPOILng=GInfoWindowPoint.lng();
  
  //grab info window lat long
  mapGoogle.closeInfoWindow();
  
  //check existing vias
	if(viaCount>viaLimit)
	{
    displayPOIMsg("#overlayMapMessage",'Sorry, only ' + (viaLimit+1) + ' via locations allowed.',true);
    return; 
	}
  
  
  displayPOIMsg("#overlayMapMessage","Re-calculating your route...",false)
 
	
	//existing vias?
	//repopulateStartVias();
	
	//create via
	createVia();
  
	var tmpViaID="#via" + (viaCount-1);
	$(tmpViaID).val(unescape(viaValue));
	
	//submit route...
	onGetRouteClicked();
	
	hidePOIMsg("#overlayMapMessage");
	
	//display marker for via
	setTimeout(function(){showSinglePOI(mapGoogle,tmpPOILat,tmpPOILng,poiId,poiTypeID,false,false,poiTitle);tmpPOILat=null;tmpPOILng=null;poiId=null;poiTypeID=null;},500);
	
	
  return false;
}

function repopulateStartVias()
{
  var tmpViaCount=viaCount;
  var arrViaPlaces=new Array();
  for (i=0;i<tmpViaCount;i++)
  {
    arrViaPlaces[i]=getGazPlaceFromString($("#viaChoice" + i).val());
  }
 
  clearViaInputs(); 
    
  for(i=0;i<arrViaPlaces.length;i++)
  {
    createVia();
    $("#via" + i).val(arrViaPlaces[i]);
  }
}

function getGazPlaceFromString(str)
{
	strOut="";
	try {
		var arrStr=str.split("|");
		strOut=arrStr[1];
	}
	catch(e) {
	}
	return strOut;
}



function displayPOIMsg(id,msg,bolIsError)
{
	if(bolIsError)
	{
		msg='<div class="msgRow"><a href="#" onclick="'
		+ 'hidePOIMsgRow(this,' 
		+ "'#overlayMapMessage'); return false;" 
		+ '" class="msgClose"><img width="10" height="10" src="/images/traffic/btn-10-close.gif" alt="Close message"></a>' 
		+ msg 
		+  "</div>";
		
		$(id).append(msg).show();
		//$(id).html(msg).append(" <a href='#' onclick=" + '"hidePOIMsg(' + "'#overlayMapMessage'); return false;" + '">Close message</a>').show();
		
		//hide one 'loading' row
		$(".msgReplaceRow:first",$(id)).remove();
	}
	else {
		msg='<div class="msgReplaceRow">' + msg + '</div>';
		$(id).append(msg).show();
		//$(id).html(msg).show();	
	}

}




function hidePOIMsg(id)
{
	var $msgHolderID=$(id);
	//$msgHolderID.find(".msgRow").remove();
	
	//$(".msgReplaceRow",$msgHolderID).remove();
	$("div",$msgHolderID).remove();

	$msgHolderID.hide();
}

function hidePOIMsgRow(obj,id)
{
	//remove row
	$(obj).parent().remove();
	
	//if last message then hide whole box
	if ($(".msgRow",id).length==0)
	{
		$(id).html("").hide();
	}
}

function removePOIsByPOIType(poiTypeID)
{
  //call marker manager remove marker method
  //aaPOIMarkers[strPOIid]=new Array(strPOIid,poiTypeID,strName,point,poiMarker,poiMediumMarker,poiSmallMarker);
  for(var i in aaPOIMarkers) {

	var tmpPOITypeID=aaPOIMarkers[i][1];
		
  if(tmpPOITypeID==poiTypeID)
  {
    aaPOImgr.removeMarker(aaPOIMarkers[i][4]);
    aaPOImgr.removeMarker(aaPOIMarkers[i][5]);
    aaPOImgr.removeMarker(aaPOIMarkers[i][6]);
    
    delete aaPOIMarkers[i];
  }
}
  aaPOImgr.refresh();

}


function getPOITypeFromID(id) {

//NB - 118 and 130 are poi groups

  var strOut;
  switch(id) {
 
  case 100: 
	strOut='restaurant';
	break;
  case 102: 
	strOut='hotel';
	break;
	case 103: 
	strOut='hotel';
	break;
  case 104: 
	strOut='bandb';
	break;
  case 118: 
	strOut='hotel';
	break;
	case 130: 
	strOut='hotel';
	break;
  default:  
	strOut='';
  }
  return strOut;
}
function getPOIIDFromType(strPOIType) {

  var intOut='';
  switch(strPOIType) {
 
  case 'restaurant': 
	intOut=100;break;
  case 'hotel': 
	intOut=102;break;
  case 'bandb': 
	intOut=104;break;
  case 'accommodation': 
	intOut=118;break;
  default:intOut='';
  }
  return intOut;
}


/*maps / parking overlay

//requires markermanager.js
//now uses poi message layer for loading and errors


*/

var parkingmgr;
var parkingCallTimer=0;
var parkingDisplayed=false;
var parkingitemurl='/aaservlet/carparks';

/*parking variables*/
var iconParking={};
iconParking.imagePath="/images/routes/poi/";
iconParking.shadowFileName="shadow-17x17sq.png";
iconParking.parkFileName="parking-marker-17.gif";
iconParking.printFileName="park-icon-print.gif";
iconParking.smallParkFileName="aa-marker-dot6.gif";
iconParking.smallParkMarkerUrl=iconParking.imagePath + iconParking.smallParkFileName;
iconParking.medParkFileName="shadow-10x10sq.png";
iconParking.medParkMarkerUrl=iconParking.imagePath +iconParking.medParkFileName;
iconParking.medParkShadowFileName="shadow-10x10sq.png";

var parkIcon = new GIcon(G_DEFAULT_ICON,iconParking.imagePath +iconParking.parkFileName);
		parkIcon.iconSize = new GSize(17, 17);
		parkIcon.iconAnchor = new GPoint(9, 9);
		parkIcon.infoWindowAnchor = new GPoint(8, 0);
		parkIcon.printImage=iconParking.imagePath +iconParking.printFileName;
		parkIcon.mozPrintImage=iconParking.imagePath +iconParking.printFileName;
		parkIcon.shadow = iconParking.imagePath +iconParking.shadowFileName;
		parkIcon.shadowSize = new GSize(20, 21);
		parkIcon.imageMap=[0,0,0,17,17,17,17,0];

var parkMedIcon = new GIcon(G_DEFAULT_ICON,iconParking.medParkMarkerUrl);
		parkMedIcon.iconSize = new GSize(10, 10);
		parkMedIcon.iconAnchor = new GPoint(5, 5);
		parkMedIcon.infoWindowAnchor = new GPoint(5, 0);
		parkMedIcon.printImage=iconParking.medParkMarkerUrl;
		parkMedIcon.mozPrintImage=iconParking.medParkMarkerUrl;
		parkMedIcon.shadow = iconParking.imagePath + iconParking.medParkShadowFileName;
		parkMedIcon.shadowSize = new GSize(12, 13);
		parkMedIcon.imageMap=[0,0,0,10,10,10,10,0];
		

function callCarParks(map)
{
  //set timeout to reduce calls
  if(parkingCallTimer!=0) clearTimeout(parkingCallTimer);
  parkingCallTimer=setTimeout(function(){addCarParks(map);map=null;},800);
}

function addCarParks(map) { 

	var mapoverlayMsgID="overlayMapMessage";
	if(aaMapPage=="maphomepage")
	{
		mapoverlayMsgID="overlayParkingMapMessage";
	}
   if(parkingDisplayed)
   {
       replaceParkingJsonData(map,mapoverlayMsgID);
   }
}

function doParkingClick(map,bolIsSelected)
{
	var mapoverlayMsgID="overlayMapMessage";
	if(aaMapPage=="maphomepage")
	{
		mapoverlayMsgID="overlayParkingMapMessage";
	}
   if(bolIsSelected)
   {
      //
      replaceParkingJsonData(map,mapoverlayMsgID);
   }
   else {
      removeParkingPois();
   }
}

function removeParkingPois()
{
  parkingmgr.clearMarkers();
  parkingmgr.refresh();
}

function replaceParkingJsonData(map,poiMsgID)
{

  //remove existing markers
  removeParkingPois();

  //max results determined by zoom level?
  var url='/aaservlet/carparks';
  var bounds = map.getBounds();
  var southWest = bounds.getSouthWest();
  var northEast = bounds.getNorthEast();
  var params='nelat=' + northEast.lat() + '&nelng=' + northEast.lng()  + '&swlat=' + southWest.lat() + '&swlng=' + southWest.lng() + '&maxitems=100';
 
  //display loading
  displayPOIMsg("#" + poiMsgID,'<p>Loading...</p>',false);
  
	 $.ajax({
  url:url,
  type: "get",
  data: params,
  dataType: "json",
  cache: "true",
  error: function(xhr, desc, exceptionobj) { 
          displayPOIMsg("#" + poiMsgID,"<p>There was a problem loading the data. Please try again later.</p>",true);
  },
  success:function(json)
  {
  
      var tmpLmarker=[];
		
      //now we have an array of poi
	  var street;
	  var strTitle;
	  var strCarparkID;
	  var point;
	  var poiMarker;
      $.each(json.parkingData, function(i,item)
      {
      
        strTitle='Car park';
		street=isEmpty(item.street);
		
		if(street!=''){
			strTitle=street;
		}
        strCarparkID=item.id;
        point = new GLatLng(item.lat,item.lng);
        poiMarker = createParkingMarker(point,strCarparkID,'l',strTitle); //actual icon            

        tmpLmarker.push(poiMarker);

     });
       
       parkingmgr.addMarkers(tmpLmarker,11,17); 
       parkingmgr.refresh();
	
		//clear loading
		hidePOIMsg("#" + poiMsgID);
		var mapCurrentZoom=map.getZoom();
		
		if(mapCurrentZoom<11 && $("#" + poiMsgID).length>0)
		{
			if(aaMapPage!='maphomepage')
			{
				displayPOIMsg("#" + poiMsgID,"<p>Please <a href='#' onclick='setAAMapZoom(11,true,'overlayMapMessage',mapGoogle);return false;'>zoom in</a> to view car parks.</p>",true);
			}
			displayPOIMsg("#" + poiMsgID,"<p>Please <a href='#' onclick='setAAMapZoom(11,true,'overlayParkingMapMessage',aaObjParking.map);return false;'>zoom in</a> to view car parks.</p>",true);
		}
	} //end if success
   });//end ajax request
} //end addparking function

function setAAMapZoom(zoomlevel,bolClearMessage,poiMsgID,map)
{
	map.setZoom(zoomlevel);
	if(bolClearMessage)
	{
	hidePOIMsg('#' + poiMsgID);
	}
}


function createParkingMarker(point,carparkID,clusterIconSize,carparkTitle) 
{
	var carparkMarker;
	carparkTitle=unescape(carparkTitle);
	carparkMarker = new GMarker(point,{icon:parkIcon,title:carparkTitle});

	if(aaMapPage!="maphomepage")
	{
		GEvent.addListener(carparkMarker, 'click', function() {  
				  // When clicked, open an Info Window  
				  carparkMarker.openInfoWindowHtml("<div id=\'aa-iwindow\' class=\'iw-carpark\'></div>"); 
		});    
		   
		 /*only fire contents call once window is open*/        
		GEvent.addListener(carparkMarker,'infowindowopen',function() {
				var destdivID="aa-iwindow";
				getSingleCarParkData(carparkID,destdivID);
		});
	}
	else {
		GEvent.addListener(carparkMarker,'click',function() {
				var destdivID="aa-parkinfo";
				$("#" + destdivID).css("display","block").html("<p>Loading...</p>");
				$("#aa-parkinfo-container").css("display","block");
				//show iphone link
				getSingleCarParkData(carparkID,destdivID);
				
		});
	}	
	return carparkMarker;
}



function getSingleCarParkData(carparkID,destdivID)
{
  $("#aa-iwindow").html("<p>Loading...</p>");
  //timeout required for infowindow to initialise
  setTimeout(function(){callSingleCarParkAjax(carparkID,destdivID);destdivID=null;carparkID=null;},200); 
}

function callSingleCarParkAjax(inpID,destdivID)
{
  var strOutput='';

  
  $.ajax({
  url:parkingitemurl,
  type: "get",
  data: "carparkid=" + inpID,
  dataType: "json",
  cache: "true",
  error: function(xhr, desc, exceptionobj) { 
    $("#"+destdivID).html("Sorry, there was a problem showing these details. ");
  },
  success:function(json)
  {
    
	var id=isEmpty(json.parkingDetailsData.id)
    var title=isEmpty(json.parkingDetailsData.title); //false;
	var street=isEmpty(json.parkingDetailsData.street);
	var city=isEmpty(json.parkingDetailsData.city);
	var postcode=isEmpty(json.parkingDetailsData.postcode);
	var numspaces=isEmpty(json.parkingDetailsData.numspaces);
	var numdisabledspaces=isEmpty(json.parkingDetailsData.numdisabledspaces);
	var restrictions=isEmpty(json.parkingDetailsData.restrictions);
	
	if(title=='') title=street;
	
    strOutput+='<p id="iw-poiTitle" >' + title + '</p>'
	+ '\n<div id="iw-poi-rhs">';
	
	if(numspaces!='') strOutput+='<p>' + numspaces + ' spaces</p>';
	if(numdisabledspaces!='') strOutput+='<p>' + numdisabledspaces + ' disabled spaces</p>'
	if(restrictions!='') strOutput+='<p>' + restrictions + '</p>';
	strOutput+='</div>';
	
    strOutput+='\n<div id="iw-poiInfo">';
	if(street!='') strOutput+='<p>' + street + '</p>';
	if(city!='') strOutput+='<p>' + city + '<p>';
	if(postcode!='') strOutput+='<p>' + postcode + '</p>';
	strOutput+='\n</div>';
       
	strOutput+="\n<div id='iw-footer'>";
    strOutput+="\n<div id='iw-logocontainer'><img id='iw-parkopedialogo' src='/images/routes/poi/parkopedia.gif' width='82' height='15' alt='Data supplied by Parkopedia'></div>";
    
    if(postcode!='')
    {
      if(bolRedirectToRP)
      {
        strOutput+='\n<p id="iw-newroute">Plan a new route <a href="/route-planner/index.jsp?toPlace='  + escape(postcode) + '">to here</a><br /> or <a href="/route-planner/index.jsp?fromPlace=' + escape(postcode) + '">from here</a>';
      }
      else
      {
        strOutput+='\n<p id="iw-newroute">Plan a new route <a href="#" onclick="startNewRoute(' + "'mmRouteTo','" + escape(postcode) + "'" + ');"> to here</a> '
    + '<br />or <a  href="#" onclick="startNewRoute(' + "'mmrouteFrom','" +  escape(postcode) + "'"+ ');">from here</a>';
      }
	
    }//end if postcode
	strOutput+="\n<div id='iw-ad-footer'>"
	+ '<p>Check out the <a href="/iphone/parking-iphone-app.html" id="lnkAAiPhoneApp">AA Parking</a> iPhone App <a href="/iphone/parking-iphone-app.html" id="lnkAAiPhoneApp"><img src="/images/common/blue-chevron-up.gif" alt=""/></a></p>'
	+ '<p><span class="redalert"><strong>New!</strong></span> Text your location to the AA to find local car parks. <a href="/travelwatch/roadwatch.jsp#carpark" id="lnkAAParking">Find out how</a> <img src="/images/common/blue-chevron-up.gif" alt=""/></p>'
	+ "\n</div>";
    strOutput+='\n<br style="clear:both;"/>';

    
    $("#"+destdivID).html(strOutput);
  }
  });
}
/*end parking overlay functions*/



function goToAndShowMarker(map,inpLat,inpLng,inpZoom,inpPOIid,inpPOIType,inpPOIName)
{
//check for float
  inpLat=parseFloat(inpLat) || null;
  inpLon=parseFloat(inpLon) || 13;
  inpZoom=parseInt(inpZoom) || null;
  inpPOIid=parseInt(inpPOIid) || null;
  inpPOIType=inpPOIType||null;
  inpPOIName=inpPOIName||'';
  
  if(inpZoom>17||inpZoom<0) inpZoom=13;
  //if got a POIID then do lookup and show on map
    
    if(inpLat!=null&&inpLon!=null)
    {

      if(inpPOIid!=null&&inpPOIType!=null)
      {
        var poiTypeID=getPOIIDFromType(inpPOIType);
        //get poitype and name
       showSinglePOI(map,inpLat,inpLon,inpPOIid,poiTypeID,true,true,inpPOIName);

      }
      else if(inpPOIName!=''){
			var newGLocation=new GLatLng(inpLat, inpLon);
          map.setCenter(newGLocation, inpZoom);
          addLocationMarker(map,newGLocation,inpPOIName);
		}
	else {
          var newGLocation=new GLatLng(inpLat, inpLon);
          map.setCenter(newGLocation, inpZoom);
          addLocationMarker(map,newGLocation,'');
        }
    }
}


function addLocationMarker(map,point,loctitle)
{
 var locMarker=new GMarker(point,{title:loctitle});
 if(loctitle!='')
 {
  GEvent.addListener(locMarker, 'click', function() {  
            // When clicked, open an Info Window  
            locMarker.openInfoWindowHtml(loctitle); 
          });       
  }
  map.addOverlay(locMarker);
} 
