WaMap = function(){ 
    this.id='map';
}

//基本屬性設定
WaMap.prototype =
{
	map: null,
	marker: null,
	gmarkers: [],
	dragable: false,
	polyline: null,
	encodedPolyline : null,
	distance : 0,
	points: null,
	point: new GLatLng(25.03314, 121.561838),
	zoom: 14,
	geocoder: new GClientGeocoder(),
	rectangle: null,
    rec: null
}

//啟動地圖
WaMap.prototype.base = function(divName){
    if(!divName) divName='map';
  	this.map = new GMap2(document.getElementById( divName ));
  	this.map.setCenter(this.point,this.zoom);
}

//若傳值loadMap=true  則找到地址之經緯度後，立即將地圖更新
WaMap.prototype.getLatLng = function(address,loadMap){
    var mm = this;
    if(address){
        this.geocoder.getLatLng( address , function(point) {
                               if (!point) {                              
                                   if( $('#mapMessage') ){
                                        $('#mapMessage').html("<font color='red'>地圖無法定位</font>");
                                        $('#mapMessage').css('display','block');
                                   }     
                               } else {
                                   if(loadMap==true){
                                      if(mm.map == null) mm.base();                              
                                      mm.map.setCenter(point);
                                      if(mm.marker) mm.map.removeOverlay(mm.marker);                                      
                                      mm.addMarker(point);
                                      mm.addControl('small');
                                      mm.__dragend();
                                      
                                      if( $('#div_zoom').css('display')=='none' ) $('#div_zoom').css('display','block');
                                      if( $('#map').css('display')=='none' ) $('#map').css('display','block');  
                                      if( $('#mapMessage').css('display')=='block' ) $('#mapMessage').css('display','none');
                                      
                                   }   
                                    mm.update();         
                               }
                            }
        );             
    }    
}


//wa.addControl() 加入地圖預設控制器
WaMap.prototype.addControl = function(size){
    if(!size) size='large';
    if(this.map){
        switch (size) {
           case 'small' :
               this.map.addControl(new GSmallMapControl()); break;
           case 'large' :
           default :               
               this.map.addControl(new GLargeMapControl()); break;
        } 

        this.map.addControl(new GMapTypeControl());
    }
}

//wa.addMarker() 加入指標
WaMap.prototype.addMarker = function(point) {
    if(!point) var point = this.point
    this.marker = new GMarker(point, {draggable: true});
                
    this.dragable == true ? this.marker.enableDragging() : this.marker.disableDragging() ;  
    this.map.addOverlay(this.marker);
}

// 指標開始拖曳時呼叫  tip: addMarker(drag) -> drag = true時才可用
WaMap.prototype.__dragstart = function(){
    if(this.marker)
        GEvent.addListener(this.marker, "dragstart", function() {                  
                                                       mm.map.closeInfoWindow();  
                                                     }
        );
}

// 指標結束拖曳時呼叫  tip: addMarker(drag) -> drag = true時才可用
WaMap.prototype.__dragend = function(){
    var mm = this;
    if(this.marker)
         GEvent.addListener(this.marker, "dragend", function() {  
                                                        mm.update();                                         
                                                    }
        );    

}

//加入指標 額外訊息
WaMap.prototype.addInfo = function(message){
    if(!message) message = 'Arrived!!';
    if(this.marker)
        this.marker.openInfoWindowHtml(message);
}

// 地圖拖曳結束時呼叫
WaMap.prototype.__moveend = function(){
    var mm = this;
    if(this.map)
        GEvent.addListener(this.map, "moveend", function() {  
                                                    mm.update();                                        
                                                }
        );
}

// 點擊地圖時呼叫   若remove = true 則點擊地圖時，會自動將其他指標消除
WaMap.prototype.__click = function(remove){
    var mm = this;
    if(this.map)
       GEvent.addListener(this.map, "click", function(marker, point) {  
                                                if (marker) {    
                                                    mm.map.removeOverlay(marker);  
                                                } else {          
//                                                     if(remove==true){
                                                        mm.map.removeOverlay(mm.marker);  
//                                                     }                                              
//                                                     mm.map.addOverlay(new GMarker(point));
                                                       mm.addMarker(point);
                                                    mm.update();                                                     
                                                }
                                             }       
       );
}

WaMap.prototype.addZoomBar = function() {  
    var tempSlider = "<div id='slider' class='slider'><div class='indicator' id='indicator'>&nbsp</div></div>"; 
    $('#sliderHere').html(tempSlider);

    var baseZoom = 8;    //設定zoom最小值
    var barCut = 10;     //設定拉霸切割段數

    var mm = this;
    var max = parseInt($('.slider').css('width'));
    var zoomGap = this.zoom - baseZoom;
    var unit = (max/barCut);
    var formula = parseInt(zoomGap*unit);
    
    var tempZoom = zoomGap * 10;
    $('.slider').Slider(
	{
		accept : '.indicator',		
        fractions : barCut,
		restricted: true,
		opacity: 0.8,
	    onSlide: function( cordx, cordy)
		{
  		    var zoom = cordx / barCut + baseZoom;
            
            if(tempZoom!=cordx){
//                 mm.setZoom(zoom);          
                mm.update();
                mm.base();
                mm.dragable=true;
                mm.addMarker();
                mm.__dragend();
                tempZoom = cordx;
            }       
            
//             $('#zoom').val(zoom);
		},
		values: [
			[formula,0]
		]
	}
    );
    
}


//更新基本屬性 
WaMap.prototype.update = function(){
//     $('#label_marker').html(this.marker.getPoint().toString());
//     $('#label_map').html(this.map.getCenter().toString());
    if($('#label_zoom')) $('#label_zoom').html(this.map.getZoom());
    
    //hidden傳值用
    if(this.marker){
        if($('#lat'))   $('#lat').val(this.marker.getPoint().y);
        if($('#lng'))   $('#lng').val(this.marker.getPoint().x);
    }
    if($('#zoom'))   $('#zoom').val(this.map.getZoom());
}




//----------------------以下為第二組地圖新增------------------------------------------

//若傳值loadMap=true  則找到地址之經緯度後，立即將地圖更新
WaMap.prototype.getLatLng2 = function(address,loadMap){
    var mm = this;
    if(address){
        this.geocoder.getLatLng( address , function(point) {
                               if (!point) {                              
                                   if( $('#mapMessage2') ){
                                        $('#mapMessage2').html("<font color='red'>地圖無法定位</font>");
                                        $('#mapMessage2').css('display','block');
                                   }     
                               } else {
                                   if(loadMap==true){
                                      if(mm.map == null) mm.base();                              
                                      mm.map.setCenter(point);
                                      if(mm.marker) mm.map.removeOverlay(mm.marker);                                      
                                      mm.addMarker(point);
                                      mm.addControl('small');
                                      mm.__dragend2();
                                      
                                      if( $('#div_zoom2').css('display')=='none' ) $('#div_zoom2').css('display','block');
                                      if( $('#map2').css('display')=='none' ) $('#map2').css('display','block');  
                                      if( $('#mapMessage2').css('display')=='block' ) $('#mapMessage2').css('display','none');
                                      
                                   }   
                                    mm.update2();         
                               }
                            }
        );             
    }    
}


WaMap.prototype.update2 = function(){
//     $('#label_marker').html(this.marker.getPoint().toString());
//     $('#label_map').html(this.map.getCenter().toString());
    if($('#label_zoom2')) $('#label_zoom2').html(this.map.getZoom());
    
    //hidden傳值用
    if(this.marker){
        if($('#lat2'))   $('#lat2').val(this.marker.getPoint().y);
        if($('#lng2'))   $('#lng2').val(this.marker.getPoint().x);
    }
    if($('#zoom2'))   $('#zoom2').val(this.map.getZoom());
}

WaMap.prototype.__dragend2 = function(){
    var mm = this;
    if(this.marker)
         GEvent.addListener(this.marker, "dragend", function() {  
                                                        mm.update2();                                         
                                                    }
        );    

}

WaMap.prototype.__moveend2 = function(){
    var mm = this;
    if(this.map)
        GEvent.addListener(this.map, "moveend", function() {  
                                                    mm.update2();                                        
                                                }
        );
}
