var	AdbAddressItems	=	[];
var tag				=	null;
var readItems		=	false;
var placeItems		=	null;
var level			=	0;
var MapMarkers		=	[];
var _MARKERS		=	[];
var	ID;

jQuery(function( $ ) {
	
	$('#noscript').css('display', 'none');
	$('#marketplace').css('display', 'block');
		
	$('a.cat-opener').click(function(e) {
		readItems	=	false;
		
		a	=	this.id.split('-');
		a.shift();
		
		$('div.gmap-subcategoeries').css('display', 'none');
		$('a.cat-opener').removeClass('active');
		
		var check	=	false;
		placeItems	=	false;
		level		=	1;
			
		for (i = a.length; i > 0; --i) {
			
			id		=	'cat-' + a.join('-');
			link	=	'a-' + a.join('-');
			
			if (check == false) {
				
				check	=	true;
				
				if ($('#' + id).length == 0) {
					placeItems	=	true;	
				}					
			}	
							
			$('#' + id).css('display', 'block');
			$('#' + link).addClass('active');
			a.pop();	
			
			++level;		
		}
		
				
		if (this.name) {
			tag	=	this.name;
		}
		else {
			tag	=	this.innerHTML;
		}
		
		
		
		// Load adresses
		tag	=	tag.replace(/&amp;/g, 'AMPERSAND');
		tag	=	tag.replace(/\+/g, 'LITERALPLUS');
		tag	=	tag.replace(/ /g, 'LITERALSPACE');
			
		var	url	=	serverpath + '/index.php?ID=' + nodes_ID + '&action[' + sockets_ID + ']=ajaxGetAdresses&tag=' + tag + '&target=' + this.id;
		
		if (!AdbAddressItems[tag]) {
			$.getJSON(url, function(data){
				var loop = 0;
				
				AdbAddressItems[tag] = [];
				
				$.each(data.items, function(i, item){
					AdbAddressItems[tag][loop++] = item;
				});		
				
				updateItems();		
			});
		}
		else {
			updateItems();
		}
		
		
	});
	
	
	
	
	
	
});	
	

function updateItems ( ) {
		
	if (placeItems && AdbAddressItems[tag].length > 0) {
		
		id = 'items-' + level;
		container = $('#' + id);
		list = $('#list-' + id);
		list.empty();
		
		container.css('display', 'block');
		
		$(AdbAddressItems[tag]).each(function(index, item){
			list.append('<li><a href="#" id="' + item.lat + ':' + item.lng + ':' + item.ID + '" class="item-opener marker-pointer">' + item.title + '</a></li>');
		});
	}
	
	
	if (AdbAddressItems[tag].length > 0) {
		var loop = 0;
		MapMarkers[tag]	=	[];
		$(AdbAddressItems[tag]).each(function(index, item){
			MapMarkers[tag][loop++]	=	item;			
		});	
	}
	
	if (MapMarkers[tag] && MapMarkers[tag].length > 0) {
		
		mgr = new MarkerManager(map);
		
		// Clear markers		
		for (i = 0; i < _MARKERS.length; ++i) {
			mymarker	=	_MARKERS[i];
			mgr.removeMarker(mymarker);
		}
		
		//mgr.clearMarkers();
		
		$(MapMarkers[tag]).each(function(index, item){
			marker = new GMarker(new GLatLng(item.lat, item.lng), {
				icon: getIcon(),				
				title: item.title
			});
			
			marker.title	=	item.title;
			marker.alias	=	item.alias;
			marker.id		=	item.ID;
			
			_MARKERS.push(marker);
			
			mgr.addMarker(marker, 3);
			mgr.refresh();			
		});
		
		GEvent.addListener(map, "click", function ( overlay, latlng ) {
			if (overlay && overlay.alias) {
				window.location.href	=	serverpath + '/' + overlay.alias;
			}
			else {
				map.panTo(latlng);
			}		
		});
		
		$('a.marker-pointer').click(function(element) {
						
			var lat	=	this.id.split(':')[0];
			var lng	=	this.id.split(':')[1];	
			var ID	=	this.id.split(':')[2];	
			
			//map.panTo(new GLatLng(lat, lng));
			map.closeInfoWindow();
			
			map.setCenter(new GLatLng(lat, lng));
			window.setTimeout("map.panBy(new GSize(" + (2 * -140) + ", 0));", 100);		
			
			$('a.marker-pointer').removeClass('active');
			$(this).addClass('active');			
			
			// Fetch marker
			var mymarker	=	null;
			
			$(_MARKERS).each(function(index, marker) {
				
				if (this.id == ID) {
					mymarker	=	marker;
				}
			});
			
			
			// Clear markers
			for (i = 0; i < _MARKERS.length; ++i) {
				mymarkerold	=	_MARKERS[i];
				icon		=	mymarkerold.getIcon();
				icon.image = serverpath + "/cms/plugins/AdressDatabase/images/dot.png";
			}	
				
			
			// Mark current icon active	
			//mymarker	=	_MARKERS[id];
			icon		=	mymarker.getIcon();
			icon.image = serverpath + "/cms/plugins/AdressDatabase/images/dot-active.png";
			mgr.refresh();
			
			var	latlng	=	mymarker.getLatLng();
			
			//window.location.href	=	serverpath + '/' + overlay.alias;
			
			map.openInfoWindowHtml(latlng, mymarker.title + '<br /><a href="' + serverpath + '/' + mymarker.alias + '">Details ansehen</a>');
			
	
		});
		
	}
}