if(typeof(skoda) == 'undefined') var skoda = {};

skoda.maps = {};

skoda.maps.init = function(map_canvas) {
  skoda.maps.initButtons();
  skoda.maps.createMaps(map_canvas);
  skoda.maps.createInfoBox();
  skoda.maps.bounds = new google.maps.LatLngBounds();
}


skoda.maps.showInfoBox = function(content, marker) 
{
  skoda.maps.infoBox.setContent(content);
  skoda.maps.infoBox.setPosition(marker.pos_);
  skoda.maps.infoBox.open(skoda.maps.map);
}



skoda.maps.createMaps = function(map_canvas)  
{
  var myOptions = {
    zoom: 6,
    //disableDefaultUI: true,
	mapTypeControl: true,
	mapTypeControlOptions: {
      style: google.maps.MapTypeControlStyle.DROPDOWN_MENU,
      position: google.maps.ControlPosition.RIGHT
    },
    navigationControl: true,
    navigationControlOptions: {
      style: google.maps.NavigationControlStyle.ZOOM_PAN,
      position: google.maps.ControlPosition.RIGHT
    },
    mapTypeId: google.maps.MapTypeId.ROADMAP
  }
  skoda.maps.map = new google.maps.Map(document.getElementById(map_canvas), myOptions);
}


var overlay;

skodaMarker.prototype = new google.maps.OverlayView();

function skodaMarker(pos, title, dealer) {
	// Now initialize all properties.
	this.pos_ = pos;
	this.title_ = title;
	this.image_ = '/images/tools/map/marker-skoda.png';
	if ($.browser.msie && $.browser.version.substr(0,1)<7) {
		this.image_ = '/images/tools/map/marker-skoda.gif';
	}
	this.map_ = skoda.maps.map;
	this.dealer_ = dealer;
	this.div_ = null;
	//this.position = pos;
	this.setMap(skoda.maps.map);
}

skodaMarker.prototype.onAdd = function() {
	
	var div = document.createElement("div");
	var img = document.createElement("img");
	var link = document.createElement("a");
	// ajout infobulle a la main. Voir si on ne peut pas plutot passer par l api 
	
	link.setAttribute('href','#'); 
	link.setAttribute('title', this.title_); 
	img.src = this.image_;
	div.appendChild(link);  
	link.appendChild(img);
	div.style.position = 'absolute';
	img.setAttribute("alt",this.title_);
	div.setAttribute("class", 'marker');
	
	var dealer = this.dealer_;
	 google.maps.event.addDomListener(div, 'click', function() {
		dealer.show();
	});
	
	this.div_ = div;
	
	var panes = this.getPanes();
	panes.overlayImage.appendChild(this.div_);
}

skodaMarker.prototype.draw = function() {
	var overlayProjection = this.getProjection();
	
	var position = overlayProjection.fromLatLngToDivPixel(this.pos_);
	var div = this.div_;

	div.style.left = position.x-20 + 'px';
	div.style.top = position.y-75 + 'px';
}

skodaMarker.prototype.onRemove = function() {
	this.div_.parentNode.removeChild(this.div_);
}


skoda.maps.getDealersCallback = function(data)
{  
  skoda.maps.dealers = new Array();
  for(i in data.result.dealers) {
    skoda.maps.dealers.push(new skoda.maps.Dealer(data.result.dealers[i]));
  }

  if(skoda.maps.dealers.length < 1) {
    skoda.maps.map.setCenter(new google.maps.LatLng(46, 2));
    skoda.maps.map.setZoom(6);
  }
  
  
}

skoda.maps.getUsedCarsCallback = function(data)
{  
  skoda.maps.dealers = new Array();
  for(i in data.result.dealers) {
    skoda.maps.dealers.push(new skoda.maps.Dealer(data.result.dealers[i]));
  }
  if(skoda.maps.dealers.length < 1) {
    skoda.maps.map.setCenter(new google.maps.LatLng(46, 2));
    skoda.maps.map.setZoom(6);
  }
}

skoda.maps.getEventsCallback = function(data)
{  
  skoda.maps.events = new Array();
  
  for(i in data.result.events) {
    skoda.maps.events.push(new skoda.maps.Event(data.result.events[i]));
  }
 
  if(skoda.maps.events.length < 1) {
    skoda.maps.map.setCenter(new google.maps.LatLng(46, 2));
    skoda.maps.map.setZoom(6);
  }
}

skoda.maps.initButtons = function() {
  $('.toggle-map-list').click(function() {
    var list = $('.uc_content');
    var s = $('#shadow');

    if(s.css('display') == 'none') {
      list.fadeIn(500);
      s.css('display', 'block').animate({opacity:0.8}, 250);
	  $('#palette .toggle-map-list').text('Afficher la carte');
    } else {
      list.fadeOut(250);
      s.animate({opacity:0}, 500).css('display', 'none');
	   $('#palette .toggle-map-list').text('Afficher la liste');
    }
  });
  
  $('.toggle-map-type').click(function(event){
    event.preventDefault();
    $(this).toggleClass('on');
    $(this).next().slideToggle(250);
  });
}

