//var document="peuplade.fr";
/***********************************************************************/
/******				ADD EXTENTION TO GOOGLE MAP API 			  ******/
/***********************************************************************/
/******	 EXTENTION GMAP2 ******	/
/*
 *
 */
GMap2.prototype.Enveloppe = function(){
	var mapBounds = this.getBounds();
	var mapSWLat = mapBounds.getSouthWest().lat();
	var mapSWLng = mapBounds.getSouthWest().lng();
	var mapNELng = mapBounds.getNorthEast().lng();
	var mapNELat = mapBounds.getNorthEast().lat();
	var SW = new GPoint(mapSWLng, mapSWLat);
	var NE = new GPoint(mapNELng, mapNELat);
	var NO = new GPoint(NE.x , SW.y);
	var SE = new GPoint(SW.x , NE.y);
	return new GPolygon(new Array(NO,NE,SE,SW,NO), "#f33f00", 5, 1, "#ff0000", 0.2);
}

GMap2.prototype.addPoint = function (x,y) {
	var marker = new GMarker(new GPoint(y,x));
	map.addOverlay(marker);
	//--
	return marker;
}


GMap2.prototype.drawPolygon = function(a_point,features) {
	if(features) {
		for (key in features) { 	
			eval("var "+key+"="+features[key]);
		}
	} else {
		var lineColor ='#000000';
		var lineWeight = 3;
		var opacityLine = 0.25;
		var fillColor = '#0000FF';
		var opacity = 0.45;
	}
	//--
	var polygon = new GPolygon(a_point,lineColor,lineWeight,opacityLine,fillColor,opacity);
	this.addOverlay(polygon);
	//--
	return polygon;
}


/*
 *
 */
GMap2.prototype.asTextToPoints = function(asText) {
	var result = asText.replace("POLYGON((","");
	result = result.replace("))","");
	//--
	result = result.replace("POINT((","");
	result = result.replace("))","");
	//--
	return result;
}

/*
 *
 */
GMap2.prototype.polyPointToJS = function(s_polyPoint) {
	var polyPoints = this.asTextToPoints(s_polyPoint);
	//--
	var a_polyPoints = polyPoints.split(",");
	var a_point = new Array();
	for (var i=0; i < a_polyPoints.length; i++) {
		//console.debug(a_polyPoints[i]);
		var a_coord = a_polyPoints[i].split(" ");
		a_point.push( new GPoint(a_coord[0],a_coord[1]) );
	} 
	//--
	return a_point;
}








/******	 EXTENTION GPOLYGON ******	/
/*
 *
 */
GPolygon.prototype.Contains = function(point) {
  var j=0;
  var oddNodes = false;
  var x = point.lng();
  var y = point.lat();
  for (var i=0; i < this.getVertexCount(); i++) {
    j++;
    if (j == this.getVertexCount()) {j = 0;}
    if (((this.getVertex(i).lat() < y) && (this.getVertex(j).lat() >= y))
    || ((this.getVertex(j).lat() < y) && (this.getVertex(i).lat() >= y))) {
      if ( this.getVertex(i).lng() + (y - this.getVertex(i).lat())
      /  (this.getVertex(j).lat()-this.getVertex(i).lat())
      *  (this.getVertex(j).lng() - this.getVertex(i).lng())<x ) {
        oddNodes = !oddNodes
      }
    }
  }
  return oddNodes;
}
/*
 *
 */
GPolygon.prototype.Area = function() {
  var a = 0;
  var j = 0;
  var b = this.Bounds();
  var x0 = b.getSouthWest().lng();
  var y0 = b.getSouthWest().lat();
  for (var i=0; i < this.getVertexCount(); i++) {
    j++;
    if (j == this.getVertexCount()) {j = 0;}
    var x1 = this.getVertex(i).distanceFrom(new GLatLng(this.getVertex(i).lat(),x0));
    var x2 = this.getVertex(j).distanceFrom(new GLatLng(this.getVertex(j).lat(),x0));
    var y1 = this.getVertex(i).distanceFrom(new GLatLng(y0,this.getVertex(i).lng()));
    var y2 = this.getVertex(j).distanceFrom(new GLatLng(y0,this.getVertex(j).lng()));
    a += x1*y2 - x2*y1;
  }
  return Math.abs(a * 0.5);
}
/*
 *
 */
GPolygon.prototype.getBaryCentre = function() {
	var latSum = 0;
	var lngSum = 0;
	for (var i = 0; i < this.getVertexCount(); i++) {
		latSum += parseFloat(this.getVertex(i).lat());
		lngSum += parseFloat(this.getVertex(i).lng());
	}
	var lat = latSum/this.getVertexCount();
	var lng = lngSum/this.getVertexCount();
	//--
	return new GLatLng(lat,lng);
}
/*
 *
 */
GPolygon.prototype.Bounds = function() {
  var bounds = new GLatLngBounds();
  for (var i=0; i < this.getVertexCount(); i++) {
    bounds.extend(this.getVertex(i));
  }
  return bounds;
}
/*
 *
 */
GPolygon.prototype.toMysql = function() {
	var result = "";
	for (var i = 0;i< this.getVertexCount() ;i++) {
		if(this.getVertexCount()-1 == i){
			result = result+" "+this.getVertex(i).lng()+" "+this.getVertex(i).lat()+"";
		 }else{
		 	result = result+" "+this.getVertex(i).lng()+" "+this.getVertex(i).lat()+" , ";
		 }
	}
	return result;
}



/******	 EXTENTION GPOLYLINE ******/	
/*
 * Copy all extention polgon to polyline
 */
GPolyline.prototype.Contains             = GPolygon.prototype.Contains;
GPolyline.prototype.Area                 = GPolygon.prototype.Area;
GPolyline.prototype.Bounds               = GPolygon.prototype.Bounds;
GPolyline.prototype.getBaryCentre		 = GPolygon.prototype.getBaryCentre;
GPolyline.prototype.toMysql		 		 = GPolygon.prototype.toMysql;

/***********************************************************************/
/******				ADD CONTROL TO GOOGLE MAP API 			 	  ******/
/***********************************************************************/
/* ZOOM CONTROL  */
function PZoomControl() {
}
PZoomControl.prototype = new GControl();
PZoomControl.prototype.initialize = function(map) {
  i1 = new Image();
  i1.src = "http://www.seayoo.com/pics/googleMapZoom.png";
  i2 = new Image();
  i2.src = "http://www.seayoo.com/pics/googleMapNegativeZoom.png";
  
  
  var container = document.createElement("div");
  var zoomInImg = document.createElement("img");
  container.appendChild(zoomInImg);
  zoomInImg.style.cursor = "pointer";
  zoomInImg.style.paddingRight = "5px";
  zoomInImg.src = i1.src;	
  GEvent.addDomListener(zoomInImg, "click", function() {
    map.zoomIn();
  });

  var zoomOutImg = document.createElement("img");
  container.appendChild(zoomOutImg);
  zoomOutImg.src = i2.src;
  zoomOutImg.style.cursor = "pointer";
  GEvent.addDomListener(zoomOutImg, "click", function() {
    map.zoomOut();
  });

  map.getContainer().appendChild(container);
  return container;
}
PZoomControl.prototype.getDefaultPosition = function() {
  return new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(7, 7));
}









