
/* map related function  */

MMMapTypeWidget.prototype.mmlxb=function(o,d,n)
{
   var m=this.mmpwb(o);
   var b=m.elements.concat(m.toggles);
   for(var g=0,f=b.length;
         g<f;
         ++g)
   {
      var e=b[g];
      if(!e)
      {
         continue
      }

      // 20090113 Jamie - don't add css class 'MMmore' to aerial link 
      if(e.id == "id_map_type_link__aerial")
         continue;

      var h=" "+e.className+" ";
      var c=h.indexOf(" "+n+" ")!=-1;
      if(c&&!d)
      {
         e.className=e.className.replace(new RegExp(" ?"+n,"g"),"")
      }
      if(!c&&d)
      {
         e.className+=" "+n
      }

   }

};



/*
MultimapViewer.prototype.mmlsb=
function(mmmb) {
  var mmmsb='';
  switch(mmmb)
  {
    case MM_UK_MAP:
    case MM_WORLD_MAP:
      mmmsb='Map';
      break;
    case MM_UK_AERIAL:
    case MM_WORLD_AERIAL:
      mmmsb='衛星';
      break;
    case MM_UK_HYBRID:
    case MM_WORLD_HYBRID:
      mmmsb='Hybrid';
      break;
    default:
      if(mmmb instanceof MMMapType)
        mmmsb=mmmb.getName();
  }
  return mmmsb;
}

// [ Begin - cracking pan zoom widget prompt

MMPanZoomWidget.prototype.constructHTML=
function(){
   var element;
   var mmjj;
   var mmve=this;
   this.mmad=this.mmib.getAvailableZoomFactors();
   this.mmdi=this.mmib.getZoomFactor();
   var mmkj=document.createElement('div');
   var mmvh=document.createElement('div');
   this.mmlj=document.createElement('div');
   mmvh.className='MMpan';
   this.mmlj.className='MMzoom';
   element=document.createElement('div');
   element.className='MMlabel';
   element.appendChild(document.createTextNode('Pan'));
   mmvh.appendChild(element);
   element=document.createElement('div');
   element.className='MMlabel';
   element.appendChild(document.createTextNode('Zoom'));
   this.mmlj.appendChild(element);
   this.mmmj=element;
   mmkj.className='MMwrapper';
   mmkj.appendChild(mmvh);
   mmkj.appendChild(this.mmlj);
   this.mmbh=document.createElement('div');
   this.mmbh.appendChild(mmkj);
   var className='MMPanZoomWidget';
   if(this.className){
      className=this.className;
   }
   this.mmbh.className=className;
   element=document.createElement('div');
   element.className='MMpost';
   this.mmbh.appendChild(element);
   for(var mmwh in MMPanZoomWidget.prototype.mmji){
      element=this.mmnj(mmwh);
      mmvh.appendChild(element);
   }
   element=document.createElement('div');
   element.className='MMzoomin';
   mmjj=document.createElement('a');
   mmjj.title='放大';
   mmjj.href='javascript:void(0)';
   mmjj.className='MMzoomin';
   mmjj.appendChild(document.createTextNode('Zoom In'));
   element.appendChild(mmjj);
   this.mmlj.appendChild(element);
   element=document.createElement('div');
   element.className='MMzoomfactors';
   this.mmlj.appendChild(element);
   this.mmci=element;
   if(this.mmqh){var element=document.createElement('div');
      element.className='MMslider';
      element.style.position='absolute';
      var mmjj=document.createElement('a');
      mmjj.className='MMdragcursor';
      mmjj.title='拖曳以放大/縮小';
      mmjj.href='javascript:void(0)';
      element.appendChild(mmjj);
      this.mmci.appendChild(element);
      this.mmbi=element;
   }
   element=document.createElement('div');
   element.className='MMzoomout';
   mmjj=document.createElement('a');
   mmjj.title='縮小';
   mmjj.href='';
   mmjj.className='MMzoomout';
   mmjj.appendChild(document.createTextNode('Zoom Out'));
   element.appendChild(mmjj);
   this.mmlj.appendChild(element);
   this.mmei();
   var mmfh=this.mmgh();
   mmfh.appendChild(this.mmbh);
   this.mmhh(this.mmbh,this.mmah);
   this.mmib.manageLayout(this.mmbh);
}


MMPanZoomWidget.prototype.mmnj =
function(mmwh){
   var mmve=this;
   var element=document.createElement('div');
   var mmjj=document.createElement('a');
   if(mmwh=='Reset Position'){
      element.className='MMreset';
      mmjj.className='MMreset';
      mmjj.title='重設位置';
   }
   else{
      element.className='MMrhumb MM'+mmwh;
      mmjj.className='MM'+mmwh;
      if(mmwh == 'North')
         mmjj.title = '向北移動';
      else if(mmwh == 'West')
         mmjj.title = '向西移動';
      else if(mmwh == 'South')
         mmjj.title = '向南移動';
      else if(mmwh == 'East')
         mmjj.title = '向東移動';
      else 
         mmjj.title='Pan '+mmwh;

      if(mmwh.match(new RegExp(".*-.*"))){
         mmjj.className='MMrhumb MMcardinal MM'+mmwh;
      }
   }
   mmjj.href='javascript:void(0)';
   mmjj.appendChild(document.createTextNode(mmwh));
   element.appendChild(mmjj);
   return element;
}

MMPanZoomWidget.prototype.mmbk=function(zoom_factor){var mmve=this;var element=document.createElement('div');var mmjj=document.createElement('a');element.className='MMonezoomfactor MMzf'+zoom_factor;element.zoom_factor=zoom_factor;mmjj.href='javascript:void(0)';mmjj.className='MMzf'+zoom_factor;mmjj.title='將縮放比例設為'+zoom_factor;mmjj.appendChild(document.createTextNode(zoom_factor));element.appendChild(mmjj);return element;}

MMPanZoomWidget.prototype.mmii=['North-West','North-East','South-West','South-East','North','East','South','West','Reset Position'];
MMPanZoomWidget.prototype.mmji={'North-West':new MMPoint(-1,-1),'North':new MMPoint(0,-1),'North-East':new MMPoint(1,-1),'West':new MMPoint(-1,0),'Reset Position':undefined,'East':new MMPoint(1,0),'South-West':new MMPoint(-1,1),'South':new MMPoint(0,1),'South-East':new MMPoint(1,1)}

// End - cracking pan zoom widget prompt ]

// Begin - cracking context menu message [
mmki.prototype.mmwp=function(e){if(!this.getOption('contextmenu'))return false;var mmwc=mmki.prototype.findPosOnPage(this.mmdj);var mmxp=e.pageX-mmwc.x;var mmyp=e.pageY-mmwc.y;var mmtm=mmxp-(this.width/2);var mmum=mmyp-(this.height/2);if(mmki.mmzp&&mmki.mmzp.x==mmxp&&mmki.mmzp.y==mmyp){mmqg=true
}
else{if(mmki.mm$p){mmki.mm$p.remove();}
var mmwc=this.getMapPositionAt(new MMPoint(mmtm,mmum));var mm_p=new MMMenuWidget(undefined,new MMBox(mmyp,undefined,undefined,mmxp+5),'MMContextMenuWidget');var mmaq=this.getOption('contextmenu:items');var mmbq;if(typeof(mmaq)=='string')mmbq=mmaq.split(',');if(mmbq){var mmcq=[];var mmve=this;var mmrp=this.getAvailableZoomFactors();var mmak=this.getZoomFactor();for(var i=0,l=mmbq.length;i<l;++i){switch(mmbq[i]){case'zoomin':var mmdq={'label':'以此為中心點放大','className':'MMzoomin','index':1}
;if(mmak==mmrp[0]){mmdq['className']+=' MMdisabled';}
else{mmdq['onclick']=function(){mmve.goToPosition(mmwc,mmve.mmll(1),undefined,true);mm_p.remove();}
}
mmcq.push(mmdq);break;case'zoomout':var mmdq={'label':'以此為中心點縮小','className':'MMzoomout','index':2}
;if(mmak==mmrp[mmrp.length-1]){mmdq['className']+=' MMdisabled';}
else{mmdq['onclick']=function(){mmve.goToPosition(mmwc,mmve.mmll(-1),undefined,true);mm_p.remove();}
}
mmcq.push(mmdq);break;case'recentre':case'recenter':var mmdq={'label':'將地圖移至此處','className':'MMrecenter','index':3}
;mmdq['onclick']=function(){mmve.goToPosition(mmwc,undefined,undefined,true);mm_p.remove();}
mmcq.push(mmdq);break;}
}
mm_p.addItemsJSON(mmcq);}
this.handleEvent('contextMenu',this,mm_p,mmwc,new MMPoint(mmtm,mmum));if(mm_p.getItemsCount()>0){mm_p.draw(this);this.mm$p=mm_p;mmki.mm$p=mm_p;mmqg=true;}
else{mmki.mm$p=undefined;this.mm$p=undefined;mmqg=false;}
mmki.mmzp=new MMPoint(mmxp,mmyp);}
return mmqg;}

// End - cracking context menu message ]
*/

var g_map_type_widget_html = 
  '<div id="id_map_type_widget" class="MMMapTypeWidget" style="z-index: 10000; position: absolute; padding-top: 40px; padding-left: 10px">' +
  '<div class="MMinner">' +
  '   <span class="MMpre"></span>' +
  '     <span id="id_map_type_item__roadmap" class="MM_CUSTOM_MAPTYPE MM_CUSTOM_MM0 MMfirst MMselected">' +
  '         <a id="id_map_type_link__roadmap" class="MM_CUSTOM_MAPTYPE MM_CUSTOM_MM0 MMMapTypeItem MMselected" href="javascript:void(0)">地圖</a>' +
  '     </span>' +
  '     <span id="id_map_type_item__aerial" class="MM_WORLD_AERIAL">' +
  '         <a id="id_map_type_link__aerial" class="MM_WORLD_AERIAL MMMapTypeItem" href="javascript:void(0)">衛星</a>' +
  '     </span>' +
  '   <span class="MMpost"></span>' +
  '</div>' +
  '</div>';

function CustomGetTileUrl(a,b) {

  var quadKey = '';
  var i;
  for (i=b-1; i > 0; i--)
  {
    var digit=0;
    var mask = 1 << (i - 1);
    if ((a.x & mask) != 0)
    {
      digit++;
    }
    
    if ((a.y & mask) != 0)
    {
      digit++;
      digit++;
    }
    quadKey = quadKey + digit;
  }
 

  var ql = quadKey.length;

  if (ql < 13) 
  {
    var pngURL = quadKey.substring(0,6) + "/" + quadKey.substring(6,ql);
  }
  else
  {
    var pngURL = quadKey.substring(0,6) + "/" + quadKey.substring(6,12) + "/" + quadKey.substring(12,ql);
  }

  var f = 'http://mc1.multimap.com/ctiles/map/mi933/' + b + '/' + pngURL + '.png';
  f += '?client=' + window.MM_CLIENT_NAME;

  if (~document.cookie.indexOf('deliveryId=' + window.MM_PARENT_DELIVERY_ID ))
     f += '&pdel_id=' + window.MM_PARENT_DELIVERY_ID;

  if (window.MM_SERVICE_SEQ)
    f += '&service_seq=' + window.MM_SERVICE_SEQ;


  return f;

}

function checkBounds() {    
  var mapcentre = mapviewer.getCurrentPosition();
  var out = false;
  var sw = bounds.getSouthWest();
  var ne = bounds.getNorthEast();
  if ( mapcentre.lon > ne.lon )     {
    out = true;
    mapcentre.lon = ne.lon;
  } else if( mapcentre.lon < sw.lon )  {
    out = true;
    mapcentre.lon = sw.lon;
  }
  if( mapcentre.lat > ne.lat ) {
    out = true;
    mapcentre.lat = ne.lat;
  } else if( mapcentre.lat < sw.lat ) {
    out = true;
    mapcentre.lat = sw.lat;
  }
  if( out ) {
    if( checkingBounds ) {
    // Don't get stuck in a recursive loop:
    } else {
      var smoothPan = mapviewer.getOption( 'smoothpan' );
      mapviewer.setOption( 'smoothpan', false );
      checkingBounds = true;
      mapviewer.goToPosition( mapcentre, null, null, true );
      checkingBounds = false;
      mapviewer.setOption( 'smoothpan', smoothPan );
    }
  }
}
