﻿/****************************** Way Of Calling JF_Gmap Class******************************************************/
 /*
 Note:
 ----
 Before Calling JF_Gmap Class  Google API Webservice Url need to be added in aspx Head Tag as below.
 <script language="javascript" src="http://maps.google.com/maps?file=api&amp;v=2.115&amp;&key=ABQIAAAAZmIcRORXplmWAqg_YxqoEBTEARcy6ayBSAZFktdPo9VeJKBFexS2J3UZIz75s9QesTvDMpcuo5cxIQ"></script>
  
 var mapObj = new JF_Gmap();
 mapObj.SetMapObj("map",false,'919','442');                                             //Map Container Object , Map Display ,object width,object height
 mapObj.SetMapZoom(16);                                                                 //Map Zoom when tooltip opened
 mapObj.SetOffice(true,'51.496434000','-.143713000','Victoria','map_office_icon.png')   //Optional If office Location Exists set (true,lat,long,officename,officeiconname)
 mapObj.HtlNamMarkerReq(true);                                                          //Optional If Hotel Name Marker Required Pass true.
 mapObj.SetLatitude("51.485384000|51.489033000");                                       //Set Latitude with Pipe Seperated. 
 mapObj.SetLongitude("-0.141319000|-0.141665000");                                      //Set Longitude with Pipe Seperated. 
 mapObj.SetHtlCode("D9562|F7692");                                                      //Set Est_cd with Pipe Seperated. 
 mapObj.SetHtlName("King William IV Hotel|Hart House Hotel");                           //Set Hotel Name with Pipe Seperated. 
 mapObj.SetCntry("GB|GB");                                                              //Set Country Code with Pipe Seperated. 
 mapObj.SetStarRtng("4 Star|4 Star");                                                   //Set Star Rating Desc with Pipe Seperated.
 mapObj.SetStarRtngcd("40|40");                                                         //Set Star Rating Code with Pipe Seperated.
 mapObj.SetAddress("111 Grosvenor SW1V 3LG|51 Gloucester Place,W1H 3PE");               //Set Address with Pipe Seperated.
 mapObj.SetHtlimgnam("0145_02_t.jpg|waiting.gif");                                      //Set Hotel Base Image with Pipe Seperated.
 mapObj.SetHtlRmrks("4 Star Hotel|");                                                   //Set Hotel General Remarks with Pipe Seperated.
 mapObj.SetMapIcon("1.png|2.png");                                                      //Set Map Icon with Pipe Seperated.
 mapObj.SetMapIconSize(20,34);                                                          //Set Map Icon Size.
 mapObj.SetDomainUrl("http://devserver05/tctsmev1/images/");                            //Set Domain Url Where Images Need to be Reterived.
 mapObj.SetBaseImgDomainUrl("http://www.corporateteam.com/hotelimages/");               //Set Domain Url Where Hotel Base Images Need to be Reterived.
 mapObj.MarkerToolTipReq(true);                                                         //Set true if tooltip Required else false;
 mapObj.ToolTipLink(true,'JF_test()','click here for more...');                         //Optional If Tooltip Link Required Set (true,function Name,Link Text)
 mapObj.ToolTipLinkUrl('Grange-Holborn.htm|Grange.htm');                                //Optional Tooltip Link Url with Pipe Seperated.
 mapObj.ToolTipLinkText('Grange Holborn Rates From|Grange Rates From');                 //Optional Tooltip Link Text with Pipe Seperated(If Link text are Different).
 mapObj.Loadmap();                                                                      //Call Load Map.
 mapObj.SetCityDesc                                                                     //Sets city description
 
Inorder to Open Tooltip set Lat,Long,Rowcount
---------------------------------------------
function JF_Opentooltip(lat,longi,rownum)
{
  if(mapObj)
  {
    mapObj.OpenTooltip(lat,longi,rownum);  
  }
} 
 */

function JF_Gmap()
 {  
        var GmapBHRCObj = "",previousCenterPoint="",previousZoom="";
        var tooltipHtml = [];      
        var mapobj,latitude="",longitude="",estcd="",htlname="",cntry="",rtngcd="",rtng="",address="",htlimg="",rmrks="",url="",icon="",baseimgurl="";
        var office=false,offlat="",offlong="",offnam="",offimgnam="",htlmarreq=false,ttlink=false,functionnam="",linktext="",zoom=0;
        var ttlinkurl="",ttlinktxt="",marttreq=true,iconwidth=0,iconheight=0,mapdisplay=true;
        var mapwidth="",mapheight="",citydesc="",mapzoom="";
        this.SetMapObj = SetMapObj;
        this.SetMapZoom = SetMapZoom;        
        this.SetOffice = SetOffice;
        this.SetLatitude = SetLatitude;
        this.SetLongitude = SetLongitude;     
        this.SetHtlCode = SetHtlCode;
        this.SetHtlName = SetHtlName;
        this.SetCntry = SetCntry;
        this.SetStarRtng = SetStarRtng;
        this.SetStarRtngcd = SetStarRtngcd;
        this.SetAddress = SetAddress;
        this.SetHtlimgnam = SetHtlimgnam;
        this.SetHtlRmrks = SetHtlRmrks;
        this.SetMapIcon = SetMapIcon;
        this.SetMapIconSize=SetMapIconSize;
        this.SetDomainUrl = SetDomainUrl;
        this.SetBaseImgDomainUrl = SetBaseImgDomainUrl;      
        this.Loadmap = Loadmap;
        this.OpenTooltip = OpenTooltip;
        this.HtlNamMarkerReq = HtlNamMarkerReq;
        this.MarkerToolTipReq= MarkerToolTipReq;
        this.ToolTipLink = ToolTipLink;       
        this.ToolTipLinkUrl = ToolTipLinkUrl; 
        this.ToolTipLinkText = ToolTipLinkText; 
        this.SetCityDesc = SetCityDesc;
        this.SetLoadZoom=SetLoadZoom;
          
         function SetMapObj(smapobj,bmapdisplay,imapwidth,imapheight)
         {       
            mapobj=JF_GetObject(smapobj);
            if(bmapdisplay !=undefined)mapdisplay=bmapdisplay; 
            if(imapwidth !=undefined)mapwidth=imapwidth;  
            if(imapheight !=undefined)mapheight=imapheight; 
         }
         function SetMapZoom(izoom)
         {       
            if(izoom !=undefined)zoom=izoom;            
         }
         function SetOffice(boffice,sofflat,sofflong,soffnam,soffimgnam)
         {       
            if(boffice !=undefined)office=boffice;
            if(sofflat !=undefined)offlat=sofflat;
            if(sofflong !=undefined)offlong=sofflong;
            if(soffnam !=undefined)offnam=soffnam; 
            if(soffimgnam !=undefined)offimgnam=soffimgnam;        
         }
         function SetLatitude(slatitude)
         {
            if(slatitude !=undefined)latitude=slatitude;       
         }
         function SetLongitude(slongitude)
         {       
            if(slongitude !=undefined)longitude=slongitude;       
         }
         function SetHtlCode(sestcd)
         {       
            if(sestcd !=undefined)estcd=sestcd;       
         }
         function SetHtlName(shtlname)
         {       
            if(shtlname !=undefined)htlname=shtlname;       
         }
         function SetCntry(scntry)
         {       
            if(scntry !=undefined)cntry=scntry;       
         }
         function SetStarRtng(srtng)
         {       
            if(srtng !=undefined)rtng=srtng;       
         }
         function SetStarRtngcd(srtngcd)
         {       
            if(srtngcd !=undefined)rtngcd=srtngcd;       
         }
         function SetAddress(saddress)
         {       
            if(saddress !=undefined)address=saddress;       
         }
         function SetHtlimgnam(shtlimg)
         {       
            if(shtlimg !=undefined)htlimg=shtlimg;       
         }
         function SetHtlRmrks(srmrks)
         {       
            if(srmrks !=undefined)rmrks=srmrks;       
         }
         function SetMapIcon(sicon)
         {       
            if(sicon !=undefined)icon=sicon;       
         }
         function SetMapIconSize(iiconwidth,iiconheight)
         {       
             if(iiconwidth !=undefined)iconwidth=iiconwidth; 
             if(iiconheight !=undefined)iconheight=iiconheight;      
         }
         function SetDomainUrl(surl)
         {       
            if(surl !=undefined)url=surl;       
         }
         function SetBaseImgDomainUrl(sbaseimgurl)
         {       
            if(sbaseimgurl !=undefined)baseimgurl=sbaseimgurl;       
         }
         function HtlNamMarkerReq(bhtlmarreq)
         {       
            if(bhtlmarreq !=undefined)htlmarreq=bhtlmarreq;             
         }
         function MarkerToolTipReq(bmarttreq)
         {       
            if(bmarttreq !=undefined)marttreq=bmarttreq;             
         }
         function ToolTipLink(bttlink,sfunctionnam,slinktext)
         {       
            if(bttlink !=undefined)ttlink=bttlink;
            if(sfunctionnam !=undefined)functionnam=sfunctionnam; 
            if(slinktext !=undefined)linktext=slinktext;            
         }
         function ToolTipLinkUrl(sttlinkurl)
         {       
            if(sttlinkurl !=undefined)ttlinkurl=sttlinkurl;                 
         }      
         function ToolTipLinkText(sttlinktxt)
         {       
            if(sttlinktxt !=undefined)ttlinktxt=sttlinktxt;                 
         } 
         function SetCityDesc(scitydesc) 
         {       
            if(scitydesc !=undefined)citydesc=scitydesc;                 
         }
         function SetLoadZoom(smapzoom) 
         {       
            if(smapzoom !=undefined)mapzoom=smapzoom;                 
         }                         
         function Loadmap()
         {   
           try
            {
                if(mapobj && GBrowserIsCompatible())
                {
                    if(mapwidth !="" && mapheight !="")
                      GmapBHRCObj = new GMap2(mapobj,{size:new GSize(mapwidth,mapheight)}); 
                    else
                      GmapBHRCObj = new GMap2(mapobj);
                    //GmapBHRCObj.enableScrollWheelZoom();
                    GmapBHRCObj.addControl(new GLargeMapControl());
	                GmapBHRCObj.addControl(new  GScaleControl());
	                GmapBHRCObj.addControl(new GOverviewMapControl());  
	                var mapControl = new GMenuMapTypeControl();
	                GmapBHRCObj.addMapType(G_PHYSICAL_MAP);
	                GmapBHRCObj.addControl(mapControl);
        
                    var mainIcon = new GIcon();                    
                    if(iconwidth==0 && iconheight==0)
                    {
                      mainIcon.iconSize = new GSize(18, 17);                    
                    }
                    else
	                  mainIcon.iconSize = new GSize(iconwidth,iconheight); 
	                  
	                //iconheight=17;
	                mainIcon.shadowSize = new GSize(22, 20);
	                mainIcon.iconAnchor = new GPoint(6, 20);
	                mainIcon.infoWindowAnchor = new GPoint(5, 1)
                  
                    var officeIcon = new GIcon();
	                officeIcon.iconSize = new GSize(20, 34);
	                officeIcon.shadowSize = new GSize(22, 20);
	                officeIcon.iconAnchor = new GPoint(6, 20);
	                officeIcon.infoWindowAnchor = new GPoint(5, 1);
                    officeIcon.image = url+offimgnam;
                     
                    var bounds = new GLatLngBounds();
                    var js_latarr = latitude.split("|");var js_longarr = longitude.split("|");
                    var js_estcdarr = estcd.split("|");var js_htlnamarr = htlname.split("|");
                    var js_cntryarr = cntry.split("|");var js_rtngarr = rtng.split("|");
                    var js_rtngcdarr = rtngcd.split("|");var js_addressarr = address.split("|");
                    var js_htlimgarr = htlimg.split("|");var js_rmrksarr = rmrks.split("|");
                    var js_iconarr = icon.split("|");var js_ttlinkurlarr =ttlinkurl.split("|");
                    var js_ttlinktxtarr =ttlinktxt.split("|");var js_citydescarr=citydesc.split("|");
                    
                    var js_lat,js_long,js_estcd,js_htlnam,js_cntry,js_rtng,js_rtngcd,js_address,js_htlimg;
                    var js_rmrks,js_icon,js_ttlinkurl,js_ttlinktxt,i=0;
                    var blatlangexist=false;                    
                    for(i=0;i<=js_latarr.length-1;i++)
                    {
                        js_lat=JF_GetArrayVal(js_latarr[i]);
                        js_long=JF_GetArrayVal(js_longarr[i]);                        
                        if(js_lat !=""  && js_long !="")
                        {
                           blatlangexist=true;
                           js_estcd=JF_GetArrayVal(js_estcdarr[i]);
                           js_htlnam=JF_GetArrayVal(js_htlnamarr[i]);
                           js_cntry=JF_GetArrayVal(js_cntryarr[i]);
                           js_rtng=JF_GetArrayVal(js_rtngarr[i]);
                           js_rtngcd=JF_GetArrayVal(js_rtngcdarr[i]);
                           js_address=JF_GetArrayVal(js_addressarr[i]);
                           js_htlimg=JF_GetArrayVal(js_htlimgarr[i]);
                           js_rmrks=JF_GetArrayVal(js_rmrksarr[i]);
                           js_icon=JF_GetArrayVal(js_iconarr[i]);
                           js_ttlinkurl=JF_GetArrayVal(js_ttlinkurlarr[i]);
                           js_ttlinktxt=JF_GetArrayVal(js_ttlinktxtarr[i]);
                           js_citydesc =JF_GetArrayVal(js_citydescarr[i]);               
                           var latlng=new GLatLng(js_lat,js_long);
                           if(mapzoom =="")
		                     GmapBHRCObj.setCenter(latlng)
		                   else
		                     GmapBHRCObj.setCenter(latlng,parseInt(mapzoom))
                           mainIcon.image =url+js_icon;                           
                            
                            if(marttreq)
                            {
                                var sb = new JF_StringBuilder();
                                sb.Append("<table width=\"300px\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\" >");
                                sb.Append("<tr><td  rowspan=\"2\" valign=\"top\" class=\"nrm_txt\">" + js_htlnam + "</td>");
                                sb.Append("<tr><td class=\"nrm_txt\" >");
                                if (js_rtngcd != "")
                                    sb.Append("<img src=\"images/Rating/"+ js_rtngcd + "_newstar.gif\" style=\"border:0;\" title=\"" + js_rtng + "\" alt=\"" + js_rtng + "\" />");
                                sb.Append("</td></tr><tr><td colspan=\"2\">&nbsp</td></tr>");
                                sb.Append("<tr><td colspan=\"2\" valign=\"top\" class=\"nrm_txt\">" + js_address + "</td>");
                                sb.Append("</tr><tr><td colspan=\"2\">&nbsp</td></tr>");
                                var sImgPath="";
                                if (js_htlimg != "")
                                    sImgPath =baseimgurl+ js_htlimg;
    //                          else
    //                              sImgPath =url+"waiting.gif";
                                
                                sb.Append("<tr><td colspan=\"2\" style=\"width:300px;\"><table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\"><tr>");
                                sb.Append("<td style=\"width:30%;\" rowspan=\"2\">");
                                if(sImgPath !="")
                                  sb.Append("<img src=" + sImgPath + " hspace=\"5\" vspace=\"5\"  style=\"border:0;height:68px;width:100px\" title=\"" + js_htlnam + "\" alt=\"" + js_htlnam + "\" />");
                                sb.Append("</td><td valign=\"top\" align=\"left\" class=\"nrm_txt\">");
                                if (js_rmrks !="" && js_rmrks.length > 150)
                                    sb.Append(js_rmrks.substring(0,150)+"..."); 
                                else
                                    sb.Append(js_rmrks);          
                                sb.Append("</td></tr><tr><td style=\"font-family: Arial;font-size: 11px;width:70%;\"><div style=padding-top:8px;font-family:Arial;width:190px;font-size:11px>");
                                if(ttlink && functionnam !="")
                                {    
                                     var jfunnam="";                        
                                     if(js_ttlinkurl !="")
                                     {
                                       jfunnam=functionnam;
                                       if(functionnam.indexOf('()') > 0)
                                       {
                                          jfunnam=jfunnam.replace(/\(/gi,""); 
                                          jfunnam=jfunnam.replace(/\)/gi,""); 
                                       }
                                       jfunnam=jfunnam+"('"+js_ttlinkurl+"')";
                                       //sb.Append("<a href=\""+js_ttlinkurl+"\" onclick=\"javascript:return "+jfunnam+"\" class=\"ttlink\">"+js_ttlinktxt+"</a>");
                                     
                                     }
                                     else if(js_ttlinktxt !="")
                                     {
                                       if(functionnam.indexOf('()') < 0)
                                       {   
                                         var js_url=""; 
                                         if(window.JF_GetPageURL)                                   
                                          js_url=JF_GetPageURL(js_htlnam,js_citydesc,js_estcd,"E");
                                         jfunnam=functionnam+"('" + js_url +"')";
                                       }
                                       else
                                         jfunnam=functionnam;
                                       //sb.Append("<a href=\""+js_url+"\" onclick=\"javascript:return "+jfunnam+"\" class=\"ttlink\">"+js_ttlinktxt+"</a>");
                                     
                                     }
                                                   
                                }
                                sb.Append("</div></td></tr></table></td>");
                                sb.Append("</tr></table>");                   
                           
                                tooltipHtml.push(sb.ToString());
                                GmapBHRCObj.addOverlay(JF_InfoWindow(latlng,mainIcon,js_htlnam,i) );                                                     
                            }
                            else
                            {
                              tooltipHtml.push(i);                           
                              GmapBHRCObj.addOverlay(new GMarker(latlng,{title: js_htlnam, icon: mainIcon}));
                            }                     
                            if(htlmarreq)
                            {                              
                              var jscnt=parseInt(js_htlnam.length/2);
                              if(jscnt > 0)
		                        GmapBHRCObj.addOverlay(new Htlname_marker(latlng,'<div align="left" class="Htlnam_Marker">'+js_htlnam+'</div>',new GSize(eval('-'+jscnt)*5,parseInt(iconheight)-4))); //14
                            }                            
                            bounds.extend(latlng);                       
                        
                        }
                        else
                           tooltipHtml.push(i);
                      
                   
                    }
                     if(office && offlat!="" && offlong !="" && offnam !="")
                     {
                       var jofflatlng=new GLatLng(offlat,offlong);
		               GmapBHRCObj.setCenter(jofflatlng)
                       GmapBHRCObj.addOverlay(new GMarker(jofflatlng,{title: offnam, icon: officeIcon}));
                       if(htlmarreq)
                       {                              
                         var jsoffcnt=parseInt(offnam.length/2);
                         if(jsoffcnt > 0)
		                   GmapBHRCObj.addOverlay(new Htlname_marker(jofflatlng,'<div align="left" class="Htlnam_Marker">'+offnam+'</div>',new GSize(eval('-'+jsoffcnt)*5,28)));
                       }
                       bounds.extend(jofflatlng);
                     }
                    
                     if(blatlangexist)
                     {
                         if(mapzoom =="")
                         {
                           GmapBHRCObj.setZoom(GmapBHRCObj.getBoundsZoomLevel(bounds));
                           GmapBHRCObj.setCenter(bounds.getCenter());
                           previousCenterPoint = GmapBHRCObj.getCenter(); 
                           previousZoom = GmapBHRCObj.getZoom(); 
                         }                         
                         GEvent.addListener(GmapBHRCObj.getInfoWindow(),"closeclick", function(){GmapBHRCObj.setCenter(previousCenterPoint,previousZoom);}); 
                         GmapBHRCObj.savePosition();
                         if(mapdisplay)
                           mapobj.style.display ='';                   
                     }
                     else if(mapdisplay)
                         mapobj.style.display ='none';               
                    
                }  
                try
	            {  if(document.getElementById('hid_ASSN_Lat') && document.getElementById('hid_ASSN_Long') && document.getElementById('hid_ASSN_Lat').value !="" && document.getElementById('hid_ASSN_Long').value !="" )
	                {
	               
	                var js_Assn_lat=document.getElementById('hid_ASSN_Lat').value;
	                var js_Assn_log=document.getElementById('hid_ASSN_Long').value;
	                var js_assn_Desc=document.getElementById('hid_ASSN_Desc').value;
	                var js_Ass_Icn=new GIcon();
	                 js_Ass_Icn.iconSize = new GSize(20,25);	    
	                js_Ass_Icn.shadowSize = new GSize(22, 20);
	                js_Ass_Icn.iconAnchor = new GPoint(6, 20);
	                js_Ass_Icn.infoWindowAnchor = new GPoint(5, 1)

	                js_Ass_Icn.image =url+"Blue_icon.png";
	                
                    var js_assn_LatLog=new GLatLng(js_Assn_lat,js_Assn_log);
                   
                      GmapBHRCObj.addOverlay(JF_InfoWindowAssn(js_assn_LatLog,js_Ass_Icn,js_assn_Desc,1) );                             
                   
                  
                   }
                }
	            catch(exp)
	            {
		           alert(exp.message)
	            }                    
                
            }
            catch(exp)
            {
	            alert(exp.message)
            }
         }  
         
        
         
            
         function OpenTooltip(lati,longi,rowcnt)
         {
             if(lati !="" && longi !="" && rowcnt !="" && GmapBHRCObj)
             {
                try
	            {  
                   var latlng=new GLatLng(lati,longi);
                   GmapBHRCObj.setCenter(latlng, parseInt(zoom));
                   GmapBHRCObj.openInfoWindowHtml(latlng,tooltipHtml[rowcnt-1]);
                }
	            catch(exp)
	            {
		           alert(exp.message)
	            }         
             }      
         
         }        
       /******************Private functions******************************/   
       function JF_InfoWindow(latlng,icon,htlnam,icount) 
        {  
            var marker="";
            marker = new GMarker(latlng,{title: htlnam, icon: icon});  
            GEvent.addListener(marker, "click", function() { 
            GmapBHRCObj.setCenter(latlng,parseInt(16));
            GmapBHRCObj.openInfoWindowHtml(latlng,tooltipHtml[icount]);
        });
        return marker;
        }
        
        function JF_InfoWindowAssn(latlng,icon,htlnam,icount) 
        {  
            var marker="";
            marker = new GMarker(latlng,{title: htlnam, icon: icon});  
            //GEvent.addListener(marker, "", "");
        return marker;
        }
        
        
      
         function Htlname_marker(point,html,pixelOffset) 
          {
                // Mandatory parameters
                this.point = point;
                this.html = html;                
               // Optional parameters
               this.pixelOffset = pixelOffset||new GSize(0,0);        
         
          }          
          Htlname_marker.prototype = new GOverlay();
          Htlname_marker.prototype.initialize = function() {
            var div = document.createElement("div");
            div.style.position = "absolute";
            div.innerHTML = '<div>' + this.html + '</div>' ;
            GmapBHRCObj.getPane(G_MAP_FLOAT_SHADOW_PANE).appendChild(div);
            this.map_ = GmapBHRCObj;
            this.div_ = div;
         
          }          
          Htlname_marker.prototype.redraw = function() {
            var p = this.map_.fromLatLngToDivPixel(this.point);
            var h = parseInt(this.div_.clientHeight);
            this.div_.style.left = (p.x + this.pixelOffset.width) + "px";
            this.div_.style.top = (p.y +this.pixelOffset.height - h) + "px";
          }    
     
        function JF_StringBuilder()
        {
            var _AppndString="";	
            this.Append = Append;
            this.ToString = ToString;
            function Append(sData)
            {
                _AppndString = _AppndString.concat(sData);
            }
            function ToString()
            {
                return _AppndString;
            }
        }
        function JF_GetObject(sobj)
        {
           if (document.getElementById(sobj)== null)
             return(document.getElementsByName(sobj))
           else
             return(document.getElementById(sobj))            
        }
        function JF_GetArrayVal(obj)
        {
           if(obj!=undefined)
              return obj;
           else
              return "";     
        }
        
 }





