//BEGIN: index map
var icons = { 
	'project': {src: "/share/images/site/elements/pins/projects-24x39.png", w:  24, h: 39, offset: 11}, 
	'member': {src: "/share/images/site/elements/pins/members-09x09.png", w:  9, h: 9, offset: 11} 
};
     
var map = null;
var markers = [];
var canChangeInitVals = true;
var markerClusterer = null;
var zoomFactor = 10
var activeMarker = 0;
var infoWindowLayer = null;

function markerInfoBox( html, marker ){
	this.html = html;
	this.marker = marker;
}

$(window).load(function(){
	initMap('gmap_projectlocations');
});

function initMap(id) {
	map = new GMap2(document.getElementById( id ));
	map.setCenter(new GLatLng(defaultLat, defaultLon), 6);
	map.setMapType( G_NORMAL_MAP );
	map.setZoom( zoomFactor );
	map.disableScrollWheelZoom();
	map.disableDragging();
	loadProjectMarkers();
}
function nodeValue(array, index, nodeName ) {
	try {
			return array[ index ].getElementsByTagName( nodeName )[0].firstChild.nodeValue;
	} catch(e){
		//console.log(nodeName);
	}
}
function loadProjectMarkers() {
	var mapSource = '/projects/map/projects-feed/';
	GDownloadUrl( mapSource, function( data, responseCode ) {
		markers = [];
		  
		var xml = GXml.parse( data );
		var xmlMarkers = xml.documentElement.getElementsByTagName( 'marker' );
		
		var count = xml.documentElement.getElementsByTagName( 'stats' )[0].getAttribute('count');
		var max = xml.documentElement.getElementsByTagName( 'stats' )[0].getAttribute('max');
		var min = xml.documentElement.getElementsByTagName( 'stats' )[0].getAttribute('min');
		var type = xml.documentElement.getElementsByTagName( 'stats' )[0].getAttribute('type');

		if( xmlMarkers.length < 1 ) { 
			return; 
		}
		
		for (var i = 0; i < xmlMarkers.length; ++i) {
			var markerType = nodeValue(xmlMarkers, i, 'type');
			var iconProp = icons[ markerType ];
			var icon = new GIcon(G_DEFAULT_ICON);
			icon.iconSize = new GSize(iconProp.w, iconProp.h);
			icon.shadowSize = new GSize(iconProp.w + 13, iconProp.h);
			icon.image = iconProp.src;
			icon.iconAnchor = new GPoint(iconProp.w - iconProp.offset, iconProp.h);
			icon.infoWindowAnchor = new GPoint(iconProp.w - iconProp.offset, iconProp.h);
			var lt = nodeValue(xmlMarkers, i, 'latitude');
			var ln = nodeValue(xmlMarkers, i, 'longitude');
			var latlng = new GLatLng(lt, ln);
			var marker = new GMarker(latlng, {icon: icon});
			marker._type = markerType;
			if( markerType == 'project' ) {
				marker._area_id = 0;
				marker._project_id = marker._id = nodeValue(xmlMarkers, i, 'id');
				marker._title = nodeValue(xmlMarkers, i, 'title');
				marker._cnt = nodeValue(xmlMarkers, i, 'cnt');
				marker._url = nodeValue(xmlMarkers, i, 'url');
				marker._location = nodeValue(xmlMarkers, i, 'location');
				GEvent.addListener(marker, "click", function(latlng) {
					if( infoWindowLayer != null ) map.removeOverlay( infoWindowLayer );
					activeMarker = this;
					var html =  '<div style="width: 228px;">'+
								'  <div class="toolGoogleTop"></div>'+
								'  <div class="toolGoogleMiddle">'+
								'    <a href="#" class="close" onclick="map.removeOverlay(infoWindowLayer); return false;" ></a>'+
								'    <a href="'+this._url+'" style="padding: 4px 0 0 12px; float: left; font-weight: bold; font-size: 12px; color: #11109f;">'+this._title+'</a>'+
								'    <div style="clear: both; overflow: hidden; height: 1px;"></div>'+
								'    <p style="margin: 0; padding: 5px 0 0 12px; font-size: 10px; color: #000000;">Location: <span style="color: #666666;">'+this._location+'</span></p>'+
								'    <p style="margin: 0; padding: 0 0 3px 12px; font-size: 10px; color: #000000;">Size: <span style="color: #11109f; cursor: pointer;" onclick="triggerClusterClick();">'+this._cnt+' members</span></p>'+
								'    <div style="clear: both; overflow: hidden; height: 1px;"></div>'+
								'  </div>'+
								'  <div class="toolGoogleBottom"></div>'+
								'</div>';
					infoWindowLayer = new markerInfoBox(html, this);
					map.addOverlay( infoWindowLayer );
					return;
				});
			} 
			
//			map.addOverlay( marker );
			markers.push(marker);
		}
		showProjectMarker();
	});
}

function showProjectMarker() {
	map.clearOverlays();
	map.addOverlay( markers[ activeMarker ] );
	var latlng = markers[ activeMarker ].getLatLng();
	map.setCenter( new GLatLng( latlng.lat() + 0.033, latlng.lng() - 0.107 ) );
	var html =  '<div style="width: 228px;">'+
			'  <div class="toolGoogleTop"></div>'+
			'  <div class="toolGoogleMiddle">'+
			'    <a class="close" href="#" onclick="map.removeOverlay(infoWindowLayer); return false;" ></a>'+
			'    <a href="'+markers[ activeMarker ]._url+'" style="padding: 4px 0 0 12px; float: left; font-weight: bold; font-size: 12px; color: #11109f;">'+markers[ activeMarker ]._title+'</a>'+
			'    <div style="clear: both; overflow: hidden; height: 1px;"></div>'+
			'    <p style="margin: 0; padding: 5px 0 0 12px; font-size: 10px; color: #000000;">Location: <span style="color: #666666;">'+markers[ activeMarker ]._location+'</span></p>'+
			'    <p style="margin: 0; padding: 0 0 3px 12px; font-size: 10px; color: #000000;">Size: <span style="color: #11109f; cursor: pointer;" onclick="triggerClusterClick();">'+markers[ activeMarker ]._cnt+' members</span></p>'+
			'    <div style="clear: both; overflow: hidden; height: 1px;"></div>'+
			'  </div>'+
			'  <div class="toolGoogleBottom">'+
			'</div>';
	infoWindowLayer = new markerInfoBox(html, markers[ activeMarker ]);
	map.addOverlay( infoWindowLayer );
	activeMarker++;
	if( activeMarker == markers.length ) activeMarker = 0;
	setTimeout ( showProjectMarker, 10 * 1000 );
}

//END: index map
$(document).ready(function(){
	//BEGIN: index map
	markerInfoBox.prototype = new GOverlay();
	markerInfoBox.prototype.initialize = function() {
		
		this.div = document.createElement( 'div' );
		this.div.style.position = 'absolute';
		this.div.className = 'bubble';
		this.div.innerHTML = this.html;
		this.div.style.left = (map.fromLatLngToDivPixel(this.marker.getPoint()).x - 190 ) + 'px';
		this.div.style.top 	= (map.fromLatLngToDivPixel(this.marker.getPoint()).y - 110 ) + 'px';
	
		map.getPane( G_MAP_FLOAT_PANE ).appendChild( this.div );

		tmpHeight = parseFloat( $('.bubble').height() );
		this.div.style.top 	= (map.fromLatLngToDivPixel(this.marker.getLatLng()).y - ( 14 + tmpHeight ) ) + 'px';
	}
	
	markerInfoBox.prototype.remove = function() {
		this.div.parentNode.removeChild( this.div );
	}
	
	markerInfoBox.prototype.redraw = function() {
		this.div.style.left = (map.fromLatLngToDivPixel(this.marker.getPoint()).x - 190 ) + 'px';
		this.div.style.top 	= (map.fromLatLngToDivPixel(this.marker.getPoint()).y - 110 ) + 'px';

		tmpHeight = parseFloat( $('.bubble').height() );
		this.div.style.top 	= (map.fromLatLngToDivPixel(this.marker.getLatLng()).y - ( 14 + tmpHeight ) ) + 'px';
	}
	//END: index map
	
	
	$('.following-table .prev').click(function(){
		var ipp = $(this).siblings('.ipp').val();
		var page = $(this).siblings('.current_page').val();
		if( page <= 0 ) return false;
		page--;
		$(this).siblings('.current_page').val( page );
		var countItems =  $(this).parents('h5').siblings('ul').children('li').length;
		$(this).parents('h5').siblings('ul').children('li').hide();
		for(var i = 0; i < ipp; i++ ) {
			$(this).parents('h5').siblings('ul').children('li:eq('+( i + ipp*page  )+')').show();
		}
		return false;
	})
	$('.following-table .next').click(function(){
		var ipp = $(this).siblings('.ipp').val();
		var page = $(this).siblings('.current_page').val();
		page++;
		var countItems =  $(this).parents('h5').siblings('ul').children('li').length;
		if( countItems <= ipp*page  ) return false;
		$(this).siblings('.current_page').val( page );
		$(this).parents('h5').siblings('ul').children('li').hide();
		for(var i = 0; i < ipp; i++ ) {
			$(this).parents('h5').siblings('ul').children('li:eq('+( i + ipp*page  )+')').show();
		}
		return false;
	})
	
	$('.following-table .prev_proj').click(function(){
		var ipp = $(this).siblings('.ipp').val();
		var page = $(this).siblings('.current_page').val();
		if( page <= 0 ) return false;
		page--;
		$(this).siblings('.current_page').val( page );
		var countItems =  $(this).parents('h5').siblings('dl').length;
		$(this).parents('h5').siblings('dl').hide();
		for(var i = 0; i < ipp; i++ ) {
			$(this).parents('h5').siblings('dl:eq('+( i + ipp*page  )+')').show();
		}
		return false;
	})
	$('.following-table .next_proj').click(function(){
		var ipp = $(this).siblings('.ipp').val();
		var page = $(this).siblings('.current_page').val();
		page++;
		var countItems =  $(this).parents('h5').siblings('dl').length;
		if( countItems <= ipp*page  ) return false;
		$(this).siblings('.current_page').val( page );
		$(this).parents('h5').siblings('dl').hide();
		for(var i = 0; i < ipp; i++ ) {
			$(this).parents('h5').siblings('dl:eq('+( i + ipp*page  )+')').show();
		}
		return false;
	})
	
})
