var tag_map, loclist, scrollTimer, scrollIndex, scrollDelta, scrollStart;
tag_mapMarkers=[];
tag_mapHTMLS=[];
tag_basedir="http://www.soles4souls.org";
params=['name','address','citystate','zip','phone','lat','lon'];
amatrix=new Array(0,.016,.047,.094,.156,.234,.328,.438,.563,.672,.766,.844,.906,.953,.984,1);
prevcur=-1;

tag_baseIcon=new GIcon();
tag_baseIcon.shadow="http://www.google.com/mapfiles/shadow50.png";
tag_baseIcon.iconSize=new GSize(20,34);
tag_baseIcon.shadowSize=new GSize(37,34);
tag_baseIcon.iconAnchor=new GPoint(9,34);
tag_baseIcon.infoWindowAnchor=new GPoint(9,2);
tag_baseIcon.infoShadowAnchor=new GPoint(18,25);

function tag_load(){
	if (GBrowserIsCompatible()){
		tag_map=new GMap2($("tag_map"));
		//tag_map.addControl(new GSmallMapControl());
		tag_map.addControl(new GLargeMapControl());
		tag_map.addControl(new GMapTypeControl());
		tag_map.setCenter(new GLatLng(0,0), 2);
		map_populate();
	}else{
		alert("Sorry, the Google Maps API is not compatible with this browser");
	}
}

function map_populate(){
	bounds=new GLatLngBounds();
	for (var i=0;i<locs.length;i++) {
		raw=locs[i].split('|');
		entry={};
		for(j=0;j<params.length;j++){entry[params[j]]=raw[j];}
		point=new GLatLng(entry['lat'],entry['lon']);
		q=entry['address']+','+entry['citystate'];
		q=q.replace(/ /g,'+');
		maplink="<span class='maplink'>&raquo; <a href='http://maps.google.com/maps?f=d&hl=en&daddr="+q+"&saddr="+startzip+"' target='_blank'>get directions</a></span>";
		label=entry['name'];
		html="<div class='tag_infoWindow'><span class='tag_infoWindowTitle'>"+entry['name']+"</span>";
		html+="<br />" + entry['address']+"<br />"+entry['citystate']+' '+entry['zip'];
		if(entry['phone']!='0')html+="<br />"+entry['phone'];
		html+="<br />"+maplink+"</div>";

		// create the marker
		marker=tag_createMarker(point,label,html,i);
		tag_map.addOverlay(marker);
		tag_mapMarkers.push(marker);
		tag_mapHTMLS.push(html);
		bounds.extend(point);
	}
	loclist=$('sidebar_ul').getElementsByTagName("LI");
	tag_map.setZoom(tag_map.getBoundsZoomLevel(bounds));
	tag_map.setCenter(bounds.getCenter());
}

function tag_markerClicked(markerNum) {
	marker=tag_mapMarkers[markerNum];
	marker.openInfoWindowHtml(tag_mapHTMLS[markerNum]);
	itemHilite(markerNum);
}

function itemHilite(indx){
	if(prevcur>=0) loclist[prevcur].className='';
	loclist[indx].className='current';
	st=$('tag_map_sidebar').scrollTop;
	h=220;
	h=$('tag_map_sidebar').offsetHeight;
	var tt=loclist[indx].offsetTop-$('tag_map_sidebar').offsetTop;
	if((tt>st+h-80)||(tt<st)){
		tgt=Math.floor(tt-h/2+40);
		//$('tag_map_sidebar').scrollTop=tgt.toString();
		clearTimeout(scrollTimer);
		scrollStart=st;
		scrollDelta=tgt-st;
		scrollIndex=0;
		scrollInc();
	}
	prevcur=indx;
}

function scrollInc(){
	scrollIndex++;
	if(scrollIndex<amatrix.length){
		$('tag_map_sidebar').scrollTop=scrollStart+amatrix[scrollIndex]*scrollDelta;
		scrollTimer=setTimeout('scrollInc()',10);
		//$('debug3').innerHTML=$('tag_map_sidebar').scrollTop+','+scrollIndex+','+amatrix[scrollIndex]*scrollDelta;
	}
}

function tag_createMarker(point, title, html, indx) {
	markerOpts={};
	nIcon=new GIcon(tag_baseIcon);
	nIcon.imageOut=tag_basedir+"/images/about/map_pin.png";
	nIcon.imageOver=tag_basedir+"/images/about/map_over.png";
	nIcon.image=nIcon.imageOut;
	markerOpts.icon=nIcon;
	markerOpts.title=title;
	var marker=new GMarker(point, markerOpts);
	GEvent.addListener(marker, "click", function() {
		marker.openInfoWindowHtml(html);
		itemHilite(indx);
	});
	GEvent.addListener(marker, "mouseover", function(){marker.setImage(marker.getIcon().imageOver);});
	GEvent.addListener(marker, "mouseout", function(){marker.setImage(marker.getIcon().imageOut);});
	GEvent.addListener(marker, "infowindowopen", function(){marker.setImage(marker.getIcon().imageOver);});
	GEvent.addListener(marker, "infowindowclose", function(){marker.setImage(marker.getIcon().imageOut);});
	return marker;
}

function selectFirst(){
	tag_markerClicked(0);
}

tag_load();
addEvent(window,'load',selectFirst,false);