function mangle(x) {
 if (x.indexOf("/")>=0)
   x=x.substring(0,x.indexOf("/"))
 x=x.replace(/[`\.\(\)&']/g,"");
 x=x.replace(/[ -+]/g,"_");
 return x;
}
function distkm(lat1,lng1,lat2,lng2) {
 var R=6371;
 var dl=(lat2-lat1)*Math.PI/360;
 var dm=(lng2-lng1)*Math.PI/360; 
 var a=Math.sin(dl)*Math.sin(dl)+Math.cos(lat1*Math.PI/180)*Math.cos(lat2*Math.PI/180)*Math.sin(dm)*Math.sin(dm); 
 return R*2*Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
}
function bearing(lat1,lng1,lat2,lng2) {
 var dl=(lng2-lng1)*Math.PI/360; 
 var y=Math.sin(dl)*Math.cos(lat2*Math.PI/180);
 lat1*=(Math.PI/180);
 lat2*=(Math.PI/180);
 var x=Math.cos(lat1)*Math.sin(lat2)-Math.sin(lat1)*Math.cos(lat2)*Math.cos(dl);
 return ((Math.atan2(y,x)*4/Math.PI+10.5)%8)|0;
}
function dstlist(lat,lng) {
 var lst=new Array();
 var cnt=0,x;
 for (x in shops) {
  var xa=shops[x].split("|");
  var dst=(distkm(lat,lng,xa[0],xa[1])|0);
  if (dst<=99) {
   dst=dst.toString();
   if (dst.length==1) dst="0"+dst;
   dst+= ' km <img src="/is/dir' + bearing(lat,lng,xa[0],xa[1]).toString() + '.png" width="16" height="16" border="0" align="middle" /> <a href="javascript:shinf('+x+')">'+manshp(xa[3])+'</a>';
   lst[cnt++]=dst;
  }
 }
 lst.sort();
 return lst;
}
function showdist(lat,lng) {
 var lst=dstlist(lat,lng);
 var ht=gsCloseShop,x;
 for (x in lst) {
   if (x>=15) break;
   ht+="<br>"+lst[x];
 }
 document.getElementById("side_bar").innerHTML=ht;
}
function manshp(x) {
 if (x.substring(x.length-1)==")") x=x.substring(0,x.length-4);
 return x;
}
function doOpenInfo() {
 var contentString = glInfo;
 if (glEbb!="") {
   contentString += "<p /><p />"+glEbb;
 }
 if (glInfoWindow == null) {
    glInfoWindow = new google.maps.InfoWindow({
     content: contentString
    });
    google.maps.event.addListener(glInfoWindow, 'closeclick', function(event) {
      if (map.getZoom() >= 13) {
        map.setZoom(phZm);
      }
    });
  } else {
    glInfoWindow.setContent(contentString);
  }
  glInfoWindow.open(map,glMark);
}

function cm(num) {
 var xa = shops[num].split("|");
 var cN = (xa[2].charCodeAt(0)-"A".charCodeAt(0));
 if (glBImages[cN] == null) { 
   glBImages[cN] = new google.maps.MarkerImage("http://www.cosman.nl/is/mrk_" + xa[2] + ".png",
    new google.maps.Size(23, 23), new google.maps.Point(0, 0),
    new google.maps.Point(12, 12) );
 }
 var titl = manshp(xa[3])+" ("+xa[6]+")";
 var mlat = new google.maps.LatLng(xa[0], xa[1]);
 var marker = new google.maps.Marker({
      position: mlat,
      //map: map,
      //shadow: glBShadow,
      icon: glBImages[cN],
      title: titl
  });
 google.maps.event.addListener(marker, "click", function() { shinf(num,0); });
 marks.push(marker);
}
function locateAddress(response, status) {
 if (status != google.maps.GeocoderStatus.OK) {
  alert(gsFailGeo);
 } else {
  placell = response[0].geometry.location;
  map.panTo(placell);
  map.setZoom(9);
  showdist(placell.lat(),placell.lng());
 }
}
function findAddress(addr,styp) {
  var x, match;
  var mcnt=0;
  var fhit=-1;
  var tlat=0,tlng=0;
  var addr2 = addr.toUpperCase();
  if (styp!="c") {
   for (x in shops) {
    if (shops[x] != null && shops[x].toUpperCase().indexOf(addr2,19)>0) {
     var xt = shops[x].split("|");
     match=1;
     if (styp=="w" && xt[3].toUpperCase().indexOf(addr2)<0) match=0;
     if (styp=="s" && xt[4].toUpperCase().indexOf(addr2)<0) match=0;
     if (styp=="p" && xt[5].toUpperCase().indexOf(addr2)!=0) match=0;
     if (match==1 && xt[6].toUpperCase() != addr2) {
      if (styp=="p") {
        mcnt++;
        if (fhit<0) fhit=x;
        tlat=tlat+parseFloat(xt[0]);
        tlng=tlng+parseFloat(xt[1]);
      } else {
 	      shinf(x,1);
	      return;
	    }
	   }
	  }
   }
  }
  if (mcnt==1) {
   shinf(fhit,1);
   return;
  } else if (mcnt>1) {
   tlat=tlat/mcnt;
   tlng=tlng/mcnt;
   map.panTo(new google.maps.LatLng(tlat, tlng));
   map.setZoom(9);
   showdist(tlat,tlng);
   return;
  }
  gsFailGeo=gsFailGeo0.replace(/sterm/,addr);
  match=0;
  if (styp!="w" && styp!="s" && styp!="p") {
    if (addr.indexOf(",")<0 && (addr.indexOf(" ")<0 || addr.substring(addr.length-2).toLowerCase()!=phCn)) addr=addr+", "+phCn;
    if (geocoder == null) geocoder=new google.maps.Geocoder();
    if (geocoder) {
      geocoder.geocode( { 'address': addr }, locateAddress);
      match=1;
    }
  }
  if (match==0)
    alert(gsFailGeo);
}
function doMarkers() {
 var x;
 for (x in shops) { if (shops[x] != null) cm(x); }
 var mrkOpts = new Object({ 'gridSize': 40, 'imagePath': "http://www.cosman.nl/is/m", 'maxZoom': 12 });
 var markerCluster = new MarkerClusterer(map, marks, mrkOpts);
}
function stl(a) {
 var d=new Date();
 d.setFullYear(d.getFullYear()+1);
 document.cookie="lang="+a+";expires="+d.toGMTString()+";path=/";  
}
function setLoc(cntry) {
 var loc=document.forms[0].regio;
 if (loc.selectedIndex>0) {
  var xa=regions[loc.selectedIndex-1].split(",");
  if (xa[0][0]!='-') {
   if (xa[1][0]=='!') {
    window.location.replace("map_"+cntry+".php?cn="+xa[2]);
   } else {
    map.setCenter(new google.maps.LatLng(xa[1], xa[2]));
    map.setZoom(parseInt(xa[3]));
   }
  }
 }
}
function dlink(cntry) {
  window.location.replace("map_"+cntry+".php?cn="+phCn+"&lat="+map.getCenter().lat().toFixed(5)+"&lng="+map.getCenter().lng().toFixed(5)+"&zm="+map.getZoom());
}
function loadmap(cntryCode) {
 glZmlim=7;
 if (cntryCode == "AT" || cntryCode == "IE" || cntryCode == "NO" || cntryCode == "SE") glZmlim=6;
   glBImages = new Array(26);
   glBShadow = new google.maps.MarkerImage("http://www.cosman.nl/is/shd.png",
    new google.maps.Size(25, 25), new google.maps.Point(0, 0),
    new google.maps.Point(12, 12) );
  
  marks = [];
  var latlng = new google.maps.LatLng(phLat, phLng);
  var mapOptions = {
      zoom: phZm,
      center: latlng,
      mapTypeId: google.maps.MapTypeId.ROADMAP
  };

  map = new google.maps.Map(document.getElementById("map"), mapOptions);
  google.maps.event.addListener(map, 'click', function(event) {
    if (event.latLng!=null)
     showdist(event.latLng.lat(),event.latLng.lng());
  }); 
  if (phCls==1) {
    showdist(phLat,phLng);
  }
  setTimeout(doMarkers, 200);
}
function trackr(cntr,loca)
{
 var trImg = new Image();
 var now = new Date();
 trImg.src = "/tracker.gif?cn="+cntr+"&loc="+loca+"&ts="+now.getTime();
 return true;
}

