/**
 * enable/disable map selectors
 */
 
var onoffcount = 0;

var vtglobal = 'off';

var feedWiki = 0;
var feedPano = 0;
var feed1 = 0;
var feed2 = 0;

function enableSearchMap() {
	document.getElementById('search_map').style.display = 'block';
	document.getElementById('info_box').style.display = 'block';
	document.getElementById('map_selectors').style.display = 'none';
}
	
function enableMapSelectors() {
	document.getElementById('search_map').style.display = 'none';
	document.getElementById('info_box').style.display = 'none';
	document.getElementById('map_selectors').style.display = 'block';
}


/**
 * switch on/off all map options
 */
function switchAll() {
	var minZoom = 9;
	var minExtraZoom = 11;
	
	var val = !getElement('selAll').checked;
	//if (document.all) val = !val;
	
	
	
	
    onoffcount ++;
    
    
	var boxes = document.getElementsByTagName('input');
	ids = "";

	for (var i=0; i<boxes.length; i++) {

		if (boxes[i].type=="checkbox" && boxes[i].id.substring(boxes[i].id.length-3,boxes[i].id.length) == 'box') {
			ids += boxes[i].id+" \n";

			boxes[i].checked = val;
			var box = boxes[i];
			var category_id = boxes[i].alt;
			
			if (boxes[i].alt !='')
			if (box.checked) {
				show(category_id);
			} else {
				hide(category_id);
			}
			
			if (box.id =='Feed1box') {
				switchFeed(!val, 'g1');
			}
			if (box.id =='Feed2box') {
				switchFeed(!val, 'g2');
			}
			if (box.id =='Wikibox' && map.getZoom()>minExtraZoom-1 && wikipedia ) {
				switchFeed(!val, 'wikipedia');
			}
			if (box.id =='Panobox' && map.getZoom()>minExtraZoom && wikipedia ) {
				switchFeed(!val, 'panoramio');
			}
			
		}
		
	}
	
	document.getElementById('selAll').checked = val;
	//alert(ids);

	cluster.replaceMarkers(gmarkers);
	cluster.refresh(true);
}


/**
 * gmap functions
 */

function createMarkerHP(ad_id, ad_cat_id, ad_cat_fatherid, point, title, html, category, av_pet, av_smoking, av_children, av_parking, av_handicap, av_internet, av_garden, ad_totalscore, ad_grading, ad_bedrooms, ad_beds, av_vt) {
	var options = { title: title+" ("+category+")", icon: gicons[category] };		  
	var marker = new FanMarker(point, options);

	// === Store the category and name info as a marker properties ===
	marker.mycategory = category;                                 
	marker.myname = title;
	marker.bubbleInfo = html;
	marker.enabled = true;
	marker.ad_id = ad_id;
	marker.ad_cat_id = ad_cat_id;
	marker.ad_cat_fatherid = ad_cat_fatherid;
	marker.av_pet = av_pet;
	marker.av_smoking = av_smoking;
	marker.av_children = av_children;
	marker.av_parking = av_parking;
	marker.av_handicap = av_handicap;
	marker.av_internet = av_internet;
	marker.av_garden = av_garden;
	marker.ad_totalscore = ad_totalscore;
	marker.ad_grading = ad_grading;
	marker.ad_bedrooms = ad_bedrooms;
	marker.ad_beds = ad_beds;
	marker.av_vt = av_vt;
	
	GEvent.addListener(marker, "mousedown", function() {marker.openInfoWindowHtml(html);});
	

	
	gmarkers.push(marker);

	return marker;
}
 
function createTabbedMarker(point,name,tab1,html1,tab2,html2,category) {
	var options = { title: name+" ("+category+")", icon: gicons[category] };		  
	var marker = new FanMarker(point, options);

	// === Store the category and name info as a marker properties ===
	marker.mycategory = category;                                 
	marker.myname = name;
	marker.bubbleInfo = html1;
	GEvent.addListener(marker, "mousedown", function() {
		marker.openInfoWindowHtml(html1);
	});
	gmarkers.push(marker);

	return marker;
}

function createMarker(point,name,html1,category) {
	var options = { title: name+" ("+category+")", icon: gicons[category] };		  
	var marker = new GMarker(point, options);

	// === Store the category and name info as a marker properties ===
	marker.mycategory = category;                                 
	marker.myname = name;
	GEvent.addListener(marker, "mousedown", function() {
	  marker.openInfoWindowHtml(html);
	});
	gmarkers.push(marker);

	return marker;
}



function mainCBcheckExtras() //set status of man checkbox of EXTRAS
{
 if (getElement('Feed1box').checked || getElement('Feed2box').checked || getElement('Wikibox').checked || getElement('Panobox').checked)
   getElement('mainCBExtras').checked = true;
 else
   getElement('mainCBExtras').checked = false;
}


function setExtrasCB() //turn on/off all EXTRAS
{
 nst = getElement('mainCBExtras').checked;
 
 getElement('Feed1box').checked = nst;
 switchFeed(!nst, 'g1');
 
 getElement('Feed2box').checked = nst;
 switchFeed(!nst, 'g2');
 
 getElement('Ferries').checked = nst;
 ferrySwitch();
 
 getElement('Wikibox').checked = nst;
 switchFeed(!nst, 'wikipedia');
 
 getElement('Panobox').checked = nst;
 switchFeed(!nst, 'panoramio');
}


function setSliderCB(ci)
{
 for (i=0; i<cat_id_js.length; i++)
   {
    if (cat_id_js[i]==ci) cn = cat_name_js[i];
   }
 
 if (cn!='')
   {
    ii = 0;
    
    for (i=0; i<cat_fatherid_js.length; i++)
      {
       if (cat_fatherid_js[i]==ci && getElement(cat_name_js[i]+'box').checked) ii++;
      }
    
    if (ii>0) getElement(cn+'box').checked = true;
    else      getElement(cn+'box').checked = false;
   }
}



function golfCourseCBControl(b)
{
 if (b=='top')
   {
    //yav_boxclick(getElement('GOLF COURSESbox'),'39');
    //boxclick(getElement('GOLF COURSESbox'),'GOLF COURSES');
    
    
   }
 getElement('GOLF COURSESbox').checked = getElement('GolfCourseSliderbox').checked;
 yav_boxclick(getElement('GOLF COURSESbox'),'39');
 boxclick(getElement('GOLF COURSESbox'),'GOLF COURSES');
 
// hpExtFilters();
 //VTonlyEntries();
}


function golfCourseMainCBControl(v)
{
 getElement('GolfCourseSliderbox').checked = v;
 
 VTonlyEntries();
}


var fltChildrenOn = new Image;
fltChildrenOn.src = 'http://www.cuppatours.com/img/icons-filter/sm/arran-children.gif';

var fltChildrenOff = new Image;
fltChildrenOff.src = 'http://www.cuppatours.com/img/icons-filter/sm/arran-children-off.gif';

var fltPetsOn = new Image;
fltPetsOn.src = 'http://www.cuppatours.com/img/icons-filter/sm/arran-pets.gif';

var fltPetsOff = new Image;
fltPetsOff.src = 'http://www.cuppatours.com/img/icons-filter/sm/arran-pets-off.gif';

var fltSmokingOn = new Image;
fltSmokingOn.src = 'http://www.cuppatours.com/img/icons-filter/sm/arran-smoking.gif';

var fltSmokingOff = new Image;
fltSmokingOff.src = 'http://www.cuppatours.com/img/icons-filter/sm/arran-smoking-off.gif';

var fltParkingOn = new Image;
fltParkingOn.src = 'http://www.cuppatours.com/img/icons-filter/sm/arran-parking.gif';

var fltParkingOff = new Image;
fltParkingOff.src = 'http://www.cuppatours.com/img/icons-filter/sm/arran-parking-off.gif';

var fltHandicapOn = new Image;
fltHandicapOn.src = 'http://www.cuppatours.com/img/icons-filter/sm/arran-handicap.gif';

var fltHandicapOff = new Image;
fltHandicapOff.src = 'http://www.cuppatours.com/img/icons-filter/sm/arran-handicap-off.gif';

var fltInternetOn = new Image;
fltInternetOn.src = 'http://www.cuppatours.com/img/icons-filter/sm/arran-internet.gif';

var fltInternetOff = new Image;
fltInternetOff.src = 'http://www.cuppatours.com/img/icons-filter/sm/arran-internet-off.gif';

var fltGardenOn = new Image;
fltGardenOn.src = 'http://www.cuppatours.com/img/icons-filter/sm/arran-garden.gif';

var fltGardenOff = new Image;
fltGardenOff.src = 'http://www.cuppatours.com/img/icons-filter/sm/arran-garden-off.gif';



function resetHPExtFilters()
{
  getElement('fAVpets').checked = false;
  getElement('fAVsmoking').checked = false;
  getElement('fAVchildren').checked = false;
  getElement('fAVparking').checked = false;
  getElement('fAVhandicap').checked = false;
  getElement('fAVinternet').checked = false;
  getElement('fAVgarden').checked = false;
  //getElement('fAVvt').checked = false;
  
  getElement('flticochildren').src = fltChildrenOff.src;
  getElement('flticopets').src = fltPetsOff.src;
  getElement('flticosmoking').src = fltSmokingOff.src;
  getElement('flticoparking').src = fltParkingOff.src;
  getElement('flticohandicap').src = fltHandicapOff.src;
  getElement('flticointernet').src = fltInternetOff.src;
  getElement('flticogarden').src = fltGardenOff.src;
  //getElement('flticovt').src = 'img/icons-filter/sm/arran-vt-off.gif';
  
  jQuery("#sliderrating").slider('option', 'values', [0,5]);
  jQuery("#sliderrating").slider('enable');
  jQuery("#valuserrating").val('0 - 5');
  ratingMin = 0;
  ratingMax = 10;
  
  jQuery("#touristboardgrading").slider('option', 'values', [0,5]);
  jQuery("#touristboardgrading").slider('enable');
  jQuery("#valtouristboardgrading").val('0 - 5');
  gradingMin = 0;
  gradingMax = 5;

  if (!officialVersion)
    {
     jQuery("#sliderbedrooms").slider('option', 'values', [0,defBedroomsMax]);
     jQuery("#sliderbedrooms").slider('enable');
     jQuery("#valbedrooms").val('0 - '+defBedroomsMax);
     bedroomsMin = 0;
     bedroomsMax = defBedroomsMax;
     
     jQuery("#sliderbeds").slider('option', 'values', [0,defBedsMax]);
     jQuery("#sliderbeds").slider('enable');
     jQuery("#valbeds").val('0 - '+defBedsMax);
     bedsMin = 0;
     bedsMax = defBedsMax;
    }
  
  //hpExtFilters('');
  
  hpExtFiltersUpdateNo();
}



function switchFltIcoOption(eln)
{
 if (eln=='children')
   {
    if (getElement('fAV'+eln).checked) getElement('fltico'+eln).src = fltChildrenOff.src;
    else                               getElement('fltico'+eln).src = fltChildrenOn.src;
   }
 
 if (eln=='pets')
   {
    if (getElement('fAV'+eln).checked) getElement('fltico'+eln).src = fltPetsOff.src;
    else                               getElement('fltico'+eln).src = fltPetsOn.src;
   }
 
 if (eln=='smoking')
   {
    if (getElement('fAV'+eln).checked) getElement('fltico'+eln).src = fltSmokingOff.src;
    else                               getElement('fltico'+eln).src = fltSmokingOn.src;
   }
 
 if (eln=='parking')
   {
    if (getElement('fAV'+eln).checked) getElement('fltico'+eln).src = fltParkingOff.src;
    else                               getElement('fltico'+eln).src = fltParkingOn.src;
   }
 
 if (eln=='handicap')
   {
    if (getElement('fAV'+eln).checked) getElement('fltico'+eln).src = fltHandicapOff.src;
    else                               getElement('fltico'+eln).src = fltHandicapOn.src;
   }
 
 if (eln=='internet')
   {
    if (getElement('fAV'+eln).checked) getElement('fltico'+eln).src = fltInternetOff.src;
    else                               getElement('fltico'+eln).src = fltInternetOn.src;
   }
 
 if (eln=='garden')
   {
    if (getElement('fAV'+eln).checked) getElement('fltico'+eln).src = fltGardenOff.src;
    else                               getElement('fltico'+eln).src = fltGardenOn.src;
   }
 
 /*
if (getElement('fAV'+eln).checked) nico = '-off';
 else                               nico = '';
 
 getElement('fltico'+eln).src = 'img/icons-filter/sm/arran-'+eln+nico+'.gif';
*/
 
 getElement('fAV'+eln).checked = (!getElement('fAV'+eln).checked);
 
 
 if (eln=='vt')
   {
   }
 
 
 hpExtFilters('filter');
}



// !Use filters for displaying places on map
function hpExtFilters(src)
{
 j = 0;
 ttt = 0;
 
 for (var i=0; i<gmarkers.length; i++)
   {
    if (getElement(gmarkers[i].mycategory+'box').checked == true || onoffcount==0)
      {
       j++;
       nmst = true;
       
       if (getElement('fAVpets').checked)
        {
         if (gmarkers[i].av_pet=='0')      nmst = false;
        }
       if (getElement('fAVsmoking').checked)
        {
         if (gmarkers[i].av_smoking=='0')  nmst = false;
        }
       if (getElement('fAVchildren').checked)
        {
         if (gmarkers[i].av_children=='0') nmst = false;
        }
       if (getElement('fAVparking').checked)
        {
         if (gmarkers[i].av_parking=='0')  nmst = false;
        }
       if (getElement('fAVhandicap').checked)
        {
         if (gmarkers[i].av_handicap=='0') nmst = false;
        }
       if (getElement('fAVinternet').checked)
        {
         if (gmarkers[i].av_internet=='0') nmst = false;
        }
       if (getElement('fAVgarden').checked)
        {
         if (gmarkers[i].av_garden=='0')   nmst = false;
        }
//       if (getElement('vtopt18').checked)
  //      {
    //     if (gmarkers[i].av_vt=='0')   nmst = false;
      //  }
        
        
        if ( gmarkers[i].ad_totalscore!='' && ( (gmarkers[i].ad_totalscore*1) < (ratingMin*1) || (gmarkers[i].ad_totalscore*1) > (ratingMax*1) ) )
          {
           nmst = false;
          }
        if ( gmarkers[i].ad_grading!='' && ( (gmarkers[i].ad_grading*1) < (gradingMin*1) || (gmarkers[i].ad_grading*1) > (gradingMax*1) ) )
          {
           nmst = false;
          }
        
        if ( gmarkers[i].ad_bedrooms!='' && ( (gmarkers[i].ad_bedrooms*1) < (bedroomsMin*1) || (gmarkers[i].ad_bedrooms*1) > (bedroomsMax*1) ) )
          {
           nmst = false;
          }
         
        if ( gmarkers[i].ad_beds!='' && ( (gmarkers[i].ad_beds*1) < (bedsMin*1) || (gmarkers[i].ad_beds*1) > (bedsMax*1) ) )
          {
           nmst = false;
          }
        
        
        if (getElement('vtopt'+gmarkers[i].ad_cat_fatherid).checked)
          {
           if (gmarkers[i].av_vt=='0')
             {
              nmst = false;
             }
          }
       
             
       

       
       gmarkers[i].enabled = nmst;
      }
    }
    
    
    
    hpExtFiltersUpdateNo();
    
   
    //VTonlyEntries();
  //alert(ttt);
  //if (j>0 && src=='filter')
    {
     //rebuild the clusters			
     cluster.replaceMarkers(gmarkers);
     cluster.refresh(true);
     
     //alert(j);
    }
}



function hpExtFiltersUpdateNo()
{
 act = 0;
 
 if (getElement('fAVpets').checked) act++;
 if (getElement('fAVsmoking').checked) act++;
 if (getElement('fAVchildren').checked) act++;
 if (getElement('fAVparking').checked) act++;
 if (getElement('fAVhandicap').checked) act++;
 if (getElement('fAVinternet').checked) act++;
 if (getElement('fAVgarden').checked) act++;
 //if (getElement('fAVvt').checked) act++;
 
 if (ratingMin>0 || ratingMax<10) act++;
 if (gradingMin>0 || gradingMax<5) act++;

  if (!officialVersion)
    {
     if (bedroomsMin>0 || bedroomsMax<defBedroomsMax) act++;
     
     if (bedsMin>0 || bedsMax<defBedsMax) act++;
    }
}







function VTonlyEntries()
{
 hpExtFilters('');
 //alert(cb.checked+' '+parent_cat_id);
/*
 
 chi = 0;
 hi=0;
 
 for (var i=0; i<gmarkers.length; i++)
   {
    hi++;
    if (getElement(gmarkers[i].mycategory+'box').checked)
      {
       if (!getElement('vtopt'+gmarkers[i].ad_cat_fatherid).checked)
         {
          nmst = true;
          chi++;
         }
       else
         {
          if (gmarkers[i].av_vt=='0')
            {
             nmst = false;
            }
          else
            {
             nmst = true;
             chi++;
            }
         }
       
      }
    else nmst = false;
    
    
 
    gmarkers[i].enabled = nmst;
   }
*/
 
 //alert(chi+' | '+hi);
 
 //if (useExtFilters) hpExtFilters();
 
 //hpExtFilters('');
 
 //cluster.replaceMarkers(gmarkers);
 //cluster.refresh(true);
 
 
 //alert('done');
}








function showAllVT()
{
 if (vtglobal=='off')
   {
    for (i=0; i<cat_name_js.length; i++)
      {
       getElement(cat_name_js[i]+'box').checked = true;
       
       yav_boxclick(getElement(cat_name_js[i]+'box'), cat_name_js[i]);
       
       if (cat_fatherid_js[i]!='5') getElement('vtopt'+cat_fatherid_js[i]).checked = true;
      }
    
    if (golfAV)
      {
       getElement('vtopt39').checked = true; //click Golf VT only
       
       getElement('GolfCourseSliderbox').checked = true;
      }
    
    getElement('vtbut').src = 'img/icons-filter/VTbutton-OFF.png';
    
    vtglobal = 'on';
   }
 else
   {
    for (i=0; i<cat_name_js.length; i++)
      {
       getElement(cat_name_js[i]+'box').checked = true;
       
       yav_boxclick(getElement(cat_name_js[i]+'box'), cat_name_js[i]);
       
       if (cat_fatherid_js[i]!='5') getElement('vtopt'+cat_fatherid_js[i]).checked = false;
      }
    
    if (golfAV)
      {
       getElement('vtopt39').checked = false; //click Golf VT only
       
       getElement('GolfCourseSliderbox').checked = true;
      }
    
    getElement('vtbut').src = 'img/icons-filter/VTbutton-ON.png';
    
    
    vtglobal = 'off';
   }
 
 
 hpExtFilters('');
 
 //alert(cb.checked+' '+parent_cat_id);
 
/*
 chi = 0;
 hi=0;
 
 for (var i=0; i<gmarkers.length; i++)
   {
    getElement(gmarkers[i].mycategory+'box').checked = true;
    
    
    getElement('vtopt'+gmarkers[i].ad_cat_fatherid).checked = true;
    
    if (gmarkers[i].av_vt=='0')
      {
       nmst = false;
      }
    else
      {
       nmst = true;
       chi++;
      }
    
    gmarkers[i].enabled = nmst;
      
   }
 
 //hpExtFilters('');
 resetHPExtFilters();
 //alert(chi);
 cluster.replaceMarkers(gmarkers);
 cluster.refresh(true);
*/
 
 
}







// == shows all markers of a particular category, and ensures the checkbox is checked ==
function show(category) {
	for (var i=0; i<gmarkers.length; i++) {
	  if (gmarkers[i].mycategory == category) {
		//gmarkers[i].show();
		gmarkers[i].enabled = true;
	  }
	}
    
    
    
    
	// == check the checkbox ==
	//if (document.getElementById(category+"box"))
	//	document.getElementById(category+"box").checked = true;
}
	
// == hides all markers of a particular category, and ensures the checkbox is cleared ==
function hide(category) {

	for (var i=0; i<gmarkers.length; i++) {
	  if (gmarkers[i].mycategory == category) {
		//gmarkers[i].hide();
		gmarkers[i].enabled = false;
	  }
	}

	// == clear the checkbox ==
	var catBox = document.getElementById(category+"box");
	if (catBox!=null)
		document.getElementById(category+"box").checked = false;

	// == close the info window, in case its open on a marker that we just hid
	map.closeInfoWindow();
	
}

// == a checkbox has been clicked ==
function yav_boxclick(box,category_id) {
    
    
    
    if (onoffcount==0)
      {
       
       switchAll();
       
       
       box.checked = true;
       
       //document.getElementById('selAll').checked = !document.getElementById('selAll').checked;
      }
    
    onoffcount ++;
	
	
	
	if (box.checked) {
	  
		//show(cat_name_js[category_id]);  - bug with selecting Places to see element when clicking on group Food and drink
		
	  for(var i=0; i<cat_fatherid_js.length; i++){
		if(cat_fatherid_js[i]==category_id){
			show(cat_name_js[i]);
			
			document.getElementById(cat_name_js[i]+"box").checked = true;
		}
	  }
	} else {
	   
	   for(var i=0; i<cat_fatherid_js.length; i++){
		if(cat_fatherid_js[i]==category_id){
			hide(cat_name_js[i]);
			
			document.getElementById(cat_name_js[i]+"box").checked = false;
		}
	  }
	 
	 getElement('vtopt'+category_id).checked = false;
     	 
     getElement('vtbut').src = 'img/icons-filter/VTbutton-ON.png';
     
     
     vtglobal = 'off';
	}


	//boxclick(box,category_id);	
    
    
    VTonlyEntries();
    
    //if (useExtFilters) hpExtFilters();
    
    
	//rebuild the clusters			
	//cluster.replaceMarkers(gmarkers);
	//cluster.refresh(true);
	
}
	
	
function boxclick(box,category) {


    if (onoffcount==0)
      {
       switchAll();
       
       box.checked = true;
      }
    
    onoffcount ++;
	
    
	if (box.checked) {
	  show(category);
	} else {
	  hide(category);
	}
	
//	if (useExtFilters) hpExtFilters();
    
    
    VTonlyEntries();
    
    
	//rebuild the clusters
//	cluster.replaceMarkers(gmarkers);
//	cluster.refresh(true);
}
	
function myclick(i) {
	GEvent.trigger(gmarkers[i],"mouseover");
}
	
// == rebuilds the sidebar to match the markers currently displayed ==
function makeSidebar() {
	var html = "";
	for (var i=0; i<gmarkers.length; i++) {
	  if (!gmarkers[i].isHidden()) {
		html += '<a href="javascript:myclick(' + i + ')">' + gmarkers[i].myname + '</a><br>';
	  }
	}
}

/**
 * Switching on/off feeds
 */
var g1, g2, wikipedia, panoramio;

function switchFeed(visible, overlay_name) {
    
    
    
    if (overlay_name=='g1')
      {
       if (feed1==0)
         {
          if (feed1Url!="")
            {
   	         g1 = new GGeoXml(feed1Url , function() { if (g1.loadedCorrectly()==false) alert('error feed 1'); } );//switchFeed(false, g1)
	         //document.getElementById('Feed1box').checked = true;
	         
	         feed1=1;
            }
         }
       
       overlay = g1;
      }
    
    
    
    if (overlay_name=='g2')
      {
       if (feed2==0)
         {
          if (feed2Url!="")
            {
	         g2 = new GGeoXml(feed2Url , function() { if (g2.loadedCorrectly()==false) alert('error feed 2'); } );//switchFeed(false, g1)
	         //document.getElementById('Feed1box').checked = true;
	         
	         feed2=1;
            }
         }
         
       overlay = g2;
      }
    
    
    
    if (overlay_name=='panoramio')
      {
       if (feedPano==0)
         {
          panoramio = new GLayer("com.panoramio.all");
          //map.addOverlay(panoramio);
          
          feedPano=1;
         }
       
       overlay = panoramio;
      }
    
    
    
    if (overlay_name=='wikipedia')
      {
       if (feedWiki==0)
         {
          wikipedia = new GLayer("org.wikipedia.en");
          //switchFeed(true, wikipedia);
          //map.addOverlay(wikipedia);
          
          feedWiki=1;
         }
       
       overlay = wikipedia;
      }
    

    
    
	if (!visible) {
		if (map.getZoom()>10) {
			map.addOverlay(overlay);
		}
		
	}
	else {
		map.removeOverlay(overlay);
	}
}

function refreshFeeds() {
	var minZoom = 10;
	var minExtraZoom = 11; 
	
	if (document.getElementById('Feed1box'))
	if (map.getZoom()>minZoom && g1 && document.getElementById('Feed1box').checked)  {
		map.removeOverlay(g1);
		map.addOverlay(g1);
	} else {
		if (g1)
			map.removeOverlay(g1);
	}

	if (document.getElementById('Feed2box'))
	if (map.getZoom()>minZoom && g2 && document.getElementById('Feed2box').checked)  {
		map.removeOverlay(g2);
		map.addOverlay(g2);
	} else {
		if (g2)
			map.removeOverlay(g2);
	}

	if (document.getElementById('Wikibox'))
	if (map.getZoom()>minExtraZoom-1 && wikipedia && document.getElementById('Wikibox').checked)  {
		map.removeOverlay(wikipedia);
		map.addOverlay(wikipedia);
	} else {
		if (wikipedia)
			map.removeOverlay(wikipedia);
	}

	if (document.getElementById('Panobox'))
	if (map.getZoom()>minExtraZoom && panoramio && document.getElementById('Panobox').checked)  {
		map.removeOverlay(panoramio);
		map.addOverlay(panoramio);
	} else {
		if (panoramio)
			map.removeOverlay(panoramio);
	}
 
 //! zoom control - switch to hybrid when zoom > 10
 currentZoom = map.getZoom();
 
 if (currentZoom>11) map.setMapType(G_HYBRID_MAP);
 else                map.setMapType(G_PHYSICAL_MAP);
}

/**
 * Read the markers from the server
 */ 
function setupMarkersOld() {
	var d = new Date();

	//if (user_id*1 == 0) user_id = "";
	var user_id = "";
	
	GDownloadUrl("../mapdata.xml?user_id="+user_id+"&t="+d.getTime(), function(doc) {
	var bounds = new GLatLngBounds();
	var xmlDoc = GXml.parse(doc);
	var markers = xmlDoc.documentElement.getElementsByTagName("marker");
	  
	for (var i = 0; i < markers.length; i++) {
	  // obtain the attribues of each marker
	  var lat = parseFloat(markers[i].getAttribute("lat"));
	  var lng = parseFloat(markers[i].getAttribute("lng"));
	  var point = new GLatLng(lat,lng);
	  var street1 = markers[i].getAttribute("street1");
	  var street2 = markers[i].getAttribute("street2");
	  var city = markers[i].getAttribute("city");
	  var postcode = markers[i].getAttribute("postcode");
	  var image = markers[i].getAttribute("image");
	  var imagewidth = parseInt(markers[i].getAttribute("imagewidth")*0.75);
	  var imageheight = parseInt(markers[i].getAttribute("imageheight")*0.75);
	  var entryID = markers[i].getAttribute("entryID");
	  var name = markers[i].getAttribute("label");
	  var viewed = markers[i].getAttribute("viewed");
	  var rating = markers[i].getAttribute("rating");
	  var voters = markers[i].getAttribute("voters");
	  var added = markers[i].getAttribute("added");
	  var expires = markers[i].getAttribute("expires");
	  var category = markers[i].getAttribute("icontype");
	  var catID = markers[i].getAttribute("catID");
	  var ad_type = markers[i].getAttribute("ad_type");
	  var ad_desc = markers[i].getAttribute("ad_desc");
	  
	  if (image == "") {
		image="no_image.gif";
		imagewidth="40";
		imageheight="40";
	  }
	  
	  var tab1 = "About";
	  var html1 = "";
	  
	  //marin paid entries
	  
	  if (ad_type=="premium") {
		// a premium entry
		html1 =  "<div class='bubbleInfo'>";
		html1+=  "<a style='position:absolute;margin-left:220px;font-size:10px; ' href='detail.php?id="+entryID+"'>More info&gt;&gt;</a>";
		html1+=  "<a href=detail.php?id="+entryID+"><strong style='font-size:14px;'>"+name+"</strong></a><br />";
		html1+=  "Category: <a href='index.php?catid="+catID+"'>"+category+"</a><br /><br />";
		//html1+=  "<a href=detail.php?id="+entryID+" style='text-decoration:none;border:0px;'>";
		html1+=  "<table border=0><tr><td>";
		html1+=  "<img src=images/"+image+" width="+imagewidth+" height="+imageheight+" border=0 /></a><br />";
		html1+=  "</td><td valign=bottom>";
		html1+=  street1+" "+street2+"<br/>"+city+" "+postcode+"";
		html1+=  "</td></tr></table>";
		html1+=  "<br/>";
		html1+=  ""+ad_desc+" <small>";
		html1+=  "<a href=detail.php?id="+entryID+">Read more</a></small><br /><br /></div>";
	  
	  } else {
		//a free entry
		html1 =  "<div style='width:300px;font-family:verdana,arial,helvetica,sans-serif;font-size:80%;line-height:normal;'><a style='text-decoration:none;border:0px;'><img src=images/"+image+" width="+imagewidth+" height="+imageheight+" border=0 /></a><br /><a><strong>"+name+"</strong></a><br />Category: <a href='index.php?catid="+catID+"'>"+category+"</a><br /><br />"+ad_desc+" <small><a href=detail.php?id="+entryID+">Read more</a></small><br /><br /></div>";
	  }
	  //marin paid entries
	  
	  var tab2 = "Statistics";
	  var html2 = "<div style='font-family:verdana,arial,helvetica,sans-serif;font-size:80%;line-height:normal;'><table><tr><td>Viewed: </td><td><strong>"+viewed+"</strong></td></tr><tr><td>Rating:</td><td>"+rating+" ("+voters+" votes)</td></tr><tr><td>Date Added:</td><td>"+added+"</td></tr><tr><td>Date Expires:</td><td>"+expires+"</td></tr></table><br /><br /><small><a href=detail.php?id="+entryID+">More Information</a></small><br /><br /></div>";
	  
	
	  // create the marker - auto pushed in gmarkers
	  var marker = createTabbedMarker(point,name,tab1,html1,tab2,html2,category);
	  marker.enabled = true;
	  marker.ad_id = entryID;
	  bounds.extend(point);
	}
	
	// == show or hide the categories initially ==
	for(var cat=0; cat<cat_name_js.length; cat++){
		show(cat_name_js[cat]);
	}
	
	cluster=new ClusterMarker(map, { markers:gmarkers } );
	cluster.refresh();

	if (window.fitToMarkers) {

		window.fitToMarkers(bounds);
	}
	
	//setup featured entries on the main page
	setupFeaturedEntries();
	});
	
	
	
	
}


/**
 * Text functions
 */
// ===== list of words to be standardized =====
    var standards = [   ["road","rd"],   
                        ["street","st"], 
                        ["avenue","ave"], 
                        ["av","ave"], 
                        ["drive","dr"],
                        ["saint","st"], 
                        ["north","n"],   
                        ["south","s"],    
                        ["east","e"], 
                        ["west","w"],
                        ["expressway","expy"],
                        ["parkway","pkwy"],
                        ["terrace","ter"],
                        ["turnpike","tpke"],
                        ["highway","hwy"],
                        ["lane","ln"]
                     ];

    // ===== convert words to standard versions =====
    function standardize(a) {
      for (var i=0; i<standards.length; i++) {
        if (a == standards[i][0])  {a = standards[i][1];}
      }
      return a;
    }

    // ===== check if two addresses are sufficiently different =====
    function different(a,b) {
      // only interested in the bit before the first comma in the reply
      var c = b.split(",");
      b = c[0];
      // convert to lower case
      a = a.toLowerCase();
      b = b.toLowerCase();
      // remove apostrophies
      a = a.replace(/'/g ,"");
      b = b.replace(/'/g ,"");
      // replace all other punctuation with spaces
      a = a.replace(/\W/g," ");
      b = b.replace(/\W/g," ");
      // replace all multiple spaces with a single space
      a = a.replace(/\s+/g," ");
      b = b.replace(/\s+/g," ");
      // split into words
      awords = a.split(" ");
      bwords = b.split(" ");
      // perform the comparison
      var reply = false;
      for (var i=0; i<bwords.length; i++) {
        //GLog.write (standardize(awords[i])+"  "+standardize(bwords[i]))
        if (standardize(awords[i]) != standardize(bwords[i])) {reply = true}
      }
      //GLog.write(reply);
      return (reply);
    }

/**
 * Geocoding place function
 */

      // ====== Plot a marker after positive reponse to "did you mean" ======
      function place(lat,lng) {
        var point = new GLatLng(lat,lng);
        map.setCenter(point,14); 
        //map.addOverlay(new GMarker(point));
        var html1 = "<b>Search results:</b><br/><br/>"+document.getElementById("message").innerHTML;
        var marker = createTabbedMarker(point,"Search result","About",html1,"test1","test2","Shop");
	 	marker.enabled = true;
        
        document.getElementById("message").innerHTML = document.getElementById("origmessage").innerHTML;
		
		cluster.replaceMarkers(gmarkers);
		cluster.refresh();
		
		marker.openInfoWindowHtml(html1);
		
		//window.setTimeout(setupMarkers, 0);
      }


/**
 * Zoomback !!! 
 */
var zoomBack = 0;
var mapCenter = null;
var gotoZoomBackLevel = 0;
var gotoMapCenter = null;

function initZoomBack(level) {
	zoomBack = map.getZoom();
	gotoZoomBackLevel = zoomBack;
	mapCenter = map.getCenter();
	gotoMapCenter = mapCenter;
}

function refreshZoomBack() {
	var curZoom = map.getZoom();
	if (zoomBack > curZoom) {
		//zoom out
		document.getElementById('zoomBack').style.visibility = 'hidden';
	} else {
		//zoom in
		if ( curZoom - zoomBack > 3 ) {
			document.getElementById('zoomBack').style.visibility = 'visible';
			gotoZoomBackLevel = zoomBack;
			gotoMapCenter = mapCenter;
		}
	}
	zoomBack = curZoom;
	mapCenter = map.getCenter();
}

function goZoomBack() {
	map.setCenter( gotoMapCenter, gotoZoomBackLevel );
}

// change map type for different zoom
function refreshMapType() {
	var curZoom = map.getZoom();


	if (curZoom < 11)
	  {
	   if (map.getCurrentMapType()!=G_PHYSICAL_MAP) map.setMapType(G_PHYSICAL_MAP);
	  }
	else
	  {
	   if (map.getCurrentMapType()!=G_HYBRID_MAP) map.setMapType(G_HYBRID_MAP);
	  }
	
	//map.setMapType(G_HYBRID_MAP);
/*
	if (map.getCurrentMapType()== G_SATELLITE_MAP || map.getCurrentMapType()== G_HYBRID_MAP) {
		return;
	}
	
	if (curZoom > 10) {
		
		if (map.getCurrentMapType()!=G_NORMAL_MAP) 
			map.setMapType(G_NORMAL_MAP);
		
		
	} else {
		if (map.getCurrentMapType()!=G_PHYSICAL_MAP) 
			map.setMapType(G_PHYSICAL_MAP);
		
	}
*/

//	alert(map.getCurrentMapType());

}

/**
 * Intialization
 */

if (GBrowserIsCompatible()) {
	
	var map;
    var geo;
    var reasons=[];
    var markersArray=[];
	
      var gmarkers = [];
      var baseIcon = new GIcon();
          baseIcon.iconSize=new GSize(32,32);
          baseIcon.shadowSize=new GSize(56,32);
          baseIcon.iconAnchor=new GPoint(16,32);
          baseIcon.infoWindowAnchor=new GPoint(16,0);
      
      // === Create an associative array of GIcons() ===
	  //yav categories load from DB
	  
	  var gicons = [];
	  
	  for(var i=0; i<cat_name_js.length; i++){
		 gicons[cat_name_js[i]] = new GIcon(baseIcon, "http://www.cuppatours.com/forms_icons/"+cat_image_js[i], null, null);
	  }
	
}

/**
 * Setup the featured entries on the HP
 * show bubble on hover
 */

showFeatured = function(fEntry) {
	
	if (fEntry!=entryToHide)
	  {
	   if (fmarkersSetup && fmarkers[fEntry] && fmarkers[fEntry].openInfoWindowHtml) {
	      if (entryToHide=='')
	        {
   		     fZoom = map.getZoom();
		     fCenter = map.getCenter();
   		     //alert(fZoom+' '+fCenter);
		    }
		  map.setCenter( fmarkers[fEntry].origPoint,  10);
		  map.openInfoWindowHtml(fmarkers[fEntry].origPoint, fmarkers[fEntry].bubbleInfo);
	  }
	}
}


var entryToHideCount = 0;
var entryToHide = '';
var entryToHideTimer = null;
var entryToHideTimerCall = 250;
var entryHideBreakCount = false;


function markToHideFeatured(fEntry)
{
 entryToHide = fEntry;
 entryToHideCount = 0;
}


function checkIfAnyEntryToHide()
{
 if (entryToHide!='' && !entryHideBreakCount)
   {
    entryToHideCount++;
   }
   
 
 if (entryToHideCount==12)
   {
    hideFeatured(entryToHide);
    entryToHideCount=0;
    
    entryToHide = '';
   }
 
 clearTimeout(entryToHideTimer);
 entryToHideTimer = setTimeout("checkIfAnyEntryToHide()", entryToHideTimerCall);
}

var zoomBackAfterFeatView = true;

hideFeatured= function(fEntry) {
	map.closeInfoWindow();
	//if (fCenter!='' && fZoom!='')
	if (zoomBackAfterFeatView) map.setCenter(fCenter, fZoom);
	
	zoomBackAfterFeatView = true;
	//alert(fZoom+' '+fCenter);
	//fZoom = '';
	//fCenter = '';
}



function hideFeaturedEntry()
{
 //alert('?');
 zoomBackAfterFeatView = false;
 
 hideFeatured(entryToHide);
}


fmarkers = new Array();
fmarkersSetup = false;

function setupFeaturedEntries() {

	if (!document.getElementById('featEntry-0-id')) {
		//alert('not found');
		return;
	}
	var gmarkers = cluster._mapMarkers;
	
	for (var f=0;f<6;f++) {
		var f_id = getElement('featEntry-'+f+'-id').className;
		for (var m=0;m<gmarkers.length;m++) {
			if (gmarkers[m].ad_id == f_id) {
				fmarkers[f] = gmarkers[m];
				break;
			}
		}
	}
	fmarkersSetup =true;
}
	
function saveMapPosition() {
	var c = map.getCenter();
	jar.put('pos', {
		'zoom': map.getZoom(),
		'lat': c.lat(),
		'lng': c.lng()
	});
}




var FerriesMDone = 0;
var FerriesMarkers = new Array();


function ferrySwitch()
{
 if (FerriesMDone==0)
   {
    for(var i = 0; i < ferryPoint.length; i++)
      {
       var point = new GPoint(ferryPoint[i][1],ferryPoint[i][0]);
       var popuphtml = ferryPoint[i][4] ;
       var marker = createMarkerFerry(point,ferryPoint[i][2],popuphtml);
       
       FerriesMarkers[i] = marker;
      }
    
    FerriesMDone = 1;
   }
 
 
 for(var i = 0; i < FerriesMarkers.length; i++)
   {
    if (getElement('Ferries').checked && map.getZoom()>9)  map.addOverlay(FerriesMarkers[i]);
    else                                                   map.removeOverlay(FerriesMarkers[i]);
   }
 
}


function createMarkerFerry(point, icon, popuphtml) {
	var popuphtml = "<div id=\"popup\">" + popuphtml + "<\/div>";
	var marker = new GMarker(point, icon);
	GEvent.addListener(marker, "click", function() {
		marker.openInfoWindowHtml(popuphtml);
	});
	return marker;
}

