function GoogleMap(parent,types){
	this.map=new GMap2(parent)
}

function GoogleMapPlacesParms(){
}

GoogleMapPlaces.deriveFrom(GoogleMap)
function GoogleMapPlaces(parent,myXml){
	this.GoogleMap(parent)
	this.placesXml=myXml
}
GoogleMapPlaces.prototype.addLink=
function addLink(parent,title){
	var linkEl=document.createElement("div")
	linkEl.id=title
	this.linkDivs[this.linkDivs.length]=linkEl
	parent.appendChild(linkEl)
	linkEl.appendChild(document.createTextNode(title))
	linkEl.style.color=parms.mapLinkOff
	var le=new ListenableElement(linkEl)
	le.addEvent("click",GoogleMapPlaces_linkClick)
	le.addEvent("mouseover",GoogleMapPlaces_linkMouseover)
	le.addEvent("mouseout",GoogleMapPlaces_linkMouseout)
}
GoogleMapPlaces.prototype.getIcon=
function getIcon(type){
	if(!type)type="windmill"
	var icon=new GIcon()
	switch(type){
	case "Battlefield":
	case "Castle":
	case "Palace":
	case "Abbey":
	case "House":
	case "Port":
	case "Peak":
	case "Hotel":
ext="gif"
break
	default:
ext="png"
	}
	icon.image=UVPath+"content/images/_map/"+type+"."+ext
	icon.iconSize=new GSize(16,16)
	icon.shadowSize=new GSize(22,20)
	icon.iconAnchor=new GPoint(0,0)
	icon.infoWindowAnchor=new GPoint(0,0)	
	return icon
}
GoogleMapPlaces.prototype.linkClick=
function linkClick(myEvent){
	this.place.style.color=this.mapLinkOff
	this.showPlace(myEvent.element.id)
}
GoogleMapPlaces.prototype.linkMouseout=
function linkMouseout(myEvent){
	if( this.place!=myEvent.element)if(myEvent.element)myEvent.element.style.color=this.mapLinkOff
	myEvent.element.style.cursor="pointer"	
}
GoogleMapPlaces.prototype.linkMouseover=
function linkMouseover(myEvent){
	if(myEvent.element)myEvent.element.style.color=this.mapLinkOn
	if(myEvent.element)myEvent.element.style.cursor="hand"
}
GoogleMapPlaces.prototype.setLinks=
function setLinks(){
	if(this.placesXml.xmlDom.documentElement.childNodes.length<2)return
	this.linkDivs=new Array()
 	var div=document.getElementById("Map_right")
 	var h=new HtmlH(div,6,"Related / Nearby")
 	for(var x=0;x<this.placesXml.xmlDom.documentElement.childNodes.length;x++){
//		this.addLink( div,this.placesXml.xmlDom.documentElement.childNodes[x].childNodes[0].firstChild.nodeValue)
		this.addLink( div,this.placesXml.getFieldData(this.placesXml.xmlDom.documentElement.childNodes[x],"place"))
	}
}
GoogleMapPlaces.prototype.setOverlays=
function setOverlays(){
	for(var x=0;x<this.placesXml.xmlDom.documentElement.childNodes.length;x++){
				this.setPlaceMarker(this.placesXml.xmlDom.
				documentElement.childNodes[x])
	}	
}
GoogleMapPlaces.prototype.setPlaceMarker=
function setPlaceMarker(recNode){
//alert(this.placesXml.getFieldData(recNode,"lat")+this.placesXml.getFieldData(recNode,"lng"))
	if(!this.placesXml.getFieldData(recNode,"placeType"))return
	var point=new GLatLng(parseFloat(this.placesXml.getFieldData(recNode,"lat")), 	
		parseFloat(this.placesXml.getFieldData(recNode,"lng")))
	var icon= this.getIcon(this.placesXml.getFieldData(recNode,"placeType"));
	var marker=new GMarker(point,icon)
	var name=this.placesXml.getFieldData(recNode,"place")
	marker.name=name
	this.map.addOverlay(marker)
	var evtL=GEvent.bind(marker,"click",this,function(){
		this.markerClick(recNode)
	})
	var evtL=GEvent.bind(marker,"mouseover",this,function(){
		this.markerMouseover(name)
	})
	var evtL=GEvent.bind(marker,"mouseout",this,function(){
		this.markerMouseout()
	})
}
GoogleMapPlaces.prototype.markerClick=
function markerClick(recNode){
	meta1.doMarkerClicked( this.placesXml.getFieldData(recNode,"autokey"))
}
GoogleMapPlaces.prototype.markerMouseover=
function markerMouseover(name){
	this.overMarkerBox=new MyBox(document.getElementById("body"),meta1.mousemoveXY[0]+10,			meta1.mousemoveXY[1]-20,"#ffffff","","0px")
	var span=new HtmlSpan(this.overMarkerBox.div.element,name)
	span.element.style.padding="2px 5px"
	span.element.style.backgroundColor=this.mapTagBackgroundColor
}
GoogleMapPlaces.prototype.markerMouseout=
function (){
	if(this.overMarkerBox.div.element)
		myDoc.removeElement(this.overMarkerBox.div.element)
}


GoogleMapPlaces.prototype.showPlace=
function showPlace(placeName,zoom,ind){

if(!ind)var ind=this._tempfix(placeName)

	var isPoint=true
	
if(this.placesXml.xmlDom.documentElement.childNodes.length>1){	
	var el=document.getElementById(placeName)
	el.style.color=this.mapLinkOn
	this.place=el
}

	var point=new GLatLng(
this.placesXml.getFieldData(this.placesXml.xmlDom.documentElement.childNodes[ind],"lat").valueOf(),
this.placesXml.getFieldData(this.placesXml.xmlDom.documentElement.childNodes[ind],"lng").valueOf())
	zoom	?this.map.setCenter(point,parseInt(zoom))
		:this.map.setCenter(point)
	zoom=null
}
GoogleMapPlaces.prototype._tempfix=
function _tempfix(placeName){
	for(var x=0;x<this.placesXml.xmlDom.documentElement.childNodes.length;x++){
		if( this.placesXml.getFieldData(this.placesXml.xmlDom.documentElement.childNodes[x],"place")==placeName)
			return x
	}
}


function GoogleMapPlaces_linkClick(evt){
	meta1.googleMapPlaces.linkClick(new MyEvent(evt))
}
function GoogleMapPlaces_linkMouseout(evt){
	meta1.googleMapPlaces.linkMouseout(new MyEvent(evt))
}
function GoogleMapPlaces_linkMouseover(evt){
	meta1.googleMapPlaces.linkMouseover(new MyEvent(evt))
}

