jQuery(document).ready(function(){
	poiId = 0;
	
	jQuery('.icmaplink').each(function(index, el){
		poiId++;
		var data = jQuery(el).attr('id').split(':');
		
		jQuery.ajax({
			url: 'index.php?eID=icMapLink&table=' + data[0] + '&uid=' + data[1] + '&page=' + page + '&count=' + poiId,
			cache: false,
			type: "POST",
			success: function(response) {
				jQuery(el).html(response);
			}
		});
	});			

});

alp.gmap3(function (gm) {});

jQuery(window).load(function(){
	if (loadMapOnStart){
		openMap(0,false);
	}
});



function showMarker(id){
	openMap(id, true,0);
	ooiLayer.highlightOOI('external:'+alpCmsKey+':'+id);
	var ooi = new alp.data.SingleOOI('external:'+alpCmsKey+':'+id, { proj : apiProjectKey}).load(function(data, geometry) {map.setCenter(new google.maps.LatLng(geometry.lat,geometry.lng)) });
	jQuery("html").animate({scrollTop : 0},'slow');
}

function showTour(id){
	openMap(id, true, 1);
	jQuery("html").animate({scrollTop : 0},'slow');
	tour = new alp.gmap3.api.TourPoiLayer(id);
	tour.setMap( map );
}

function openMap(id, showCloseBtn, tour){
	
	if (id){
		autoextend = false;
	} else {
		autoextend = true;
	}
	
	if (mapIsOpen == false){
		
		orgHeight = jQuery(mapDivId).height();
		jQuery(mapDivId).animate('height', mapHeight);
		
		if(jQuery("#mapdiv").length == 0){
			mapdiv = jQuery('<div id="mapdiv"></div>');
			jQuery('#'+mapDivId).after(mapdiv);
			makeMap(autoextend, tour);
			
			if(jQuery("#catdiv").length == 0){
				if (showCategoryTree){
					catdiv = jQuery('<div id="catdiv"></div>');
					jQuery('#'+mapDivId).append(catdiv);
					
					catheader = jQuery('<div id="catheader"></div>');
					jQuery('#catdiv').append(catheader);
					jQuery('#catheader').html(labelCategoryHeader);
					
					catcontainer =  jQuery('<div id="catcontainer"></div>');
					jQuery('#catdiv').append(catcontainer);
				}
			}
		}
		
		if(showCloseBtn){
			if(jQuery("#closediv").length == 0){
				closediv = jQuery('<div id="closediv"></div>');
				jQuery('#mapdiv').after(closediv);
				jQuery('#closediv').html('<a href="javascript:void(0);" class="closemap" onclick="closeMap();">'+labelCloseBtn+'</a>');
			}
		}
		
		jQuery('#mapdiv').fadeIn();
		jQuery('#catdiv').fadeIn();
		jQuery('#closediv').fadeIn();
		mapIsOpen = true;
	}
}

function closeMap(){
	if (mapIsOpen == true){
		jQuery(mapDivId).animate('height', '0');
		jQuery('#mapdiv').fadeOut();
		jQuery('#catdiv').fadeOut();
		jQuery('#closediv').fadeOut();
		mapIsOpen = false;
	}
}

var map;
var clusterLayer;
var catTree;

var myCatTreeCreator = function() {
	catTree = clusterLayer.getCatTree();
	var ulclass = '';
	
	walk = function(catTree, liNode, level){
		if(!catTree) return;
		if(level > 0){
			var ulNode = jQuery('<ul id="accordion'+level+'"></ul>');
		} else {
			var ulNode = jQuery('<ul id="maptree" class="filetree"></ul>');
		}
		
		if (liNode){
			liNode.append(ulNode);
		} else {
			jQuery('#catcontainer').append(ulNode);
		}
		for (var catId in catTree) add(catTree, catId, ulNode, level);
	}
	
	add = function(catTree, catId, ulNode, level) {
		
		var o = catTree[ catId ], label = o.title || o.name || catId;
		
		if(o.img){
			var image = jQuery('<img src="'+o.img+'" alt="'+label+'" />');
		}
		
		var nodeId = 'cat_cb.' + catId;

		var inputNode = jQuery('<input id="'+nodeId+'" type="checkbox" class="cat_cb" />');
		if(clusterLayer.isCatSelected(catId)){
			inputNode.attr('checked', true);
		}
		inputNode.change(function(){
			clusterLayer.setCatSelected(catId, inputNode.attr('checked'));
		});
		
		var labelNode = jQuery('<label for="'+nodeId+'" class="cat_label"></label>');
		var killNode = jQuery('<div class="killfloat"></div>');
		var liNode = jQuery('<li></li>');
		textNode = document.createTextNode(label);
		labelNode.append(textNode);
		ulNode.append(liNode);
		
		if (o.img) liNode.append(image);
		liNode.append(inputNode);
		liNode.append(labelNode);
		liNode.append(killNode);
		
		clusterLayer.addCatSelChangedListener( catId, function (enabled) {
			inputNode.attr('checked', enabled);
		});

		if (o.children)	{
			walk(o.children, liNode, (level+1));
		}
	}
	walk(catTree, null, 0);
	createAccordion();
};


alp.gmap3(function (gm) {
});

function makeMap(autoextend, tour){
	map = new alp.gmap3.Map(document.getElementById('mapdiv'), myOptions);
	clusterLayer = new alp.gmap3.api.ClusterLayer( { proj : apiProjectKey, noAlpIW : false, initCat : false});
	if (showCategoryTree) clusterLayer.init_cb(myCatTreeCreator);
	clusterLayer.setMap( map );
	clusterLayer.listen('iwSelect', function (markerInfo) {
		if (markerInfo.externalSystem == alpCmsKey){
			jQuery.ajax({
				url: 'index.php?eID=getDetailLink&uid='+ markerInfo.externalId,
				cache: false,
				type: "POST",
				success: function(response) {
					Shadowbox.open({content: response, player: 'iframe', width: 720});
				}
			});
		 } else {
			url = 'http://alpregio.outdooractive.com/ar-harz/de/alpregio.jsp#i=' + markerInfo.id;
			window.open(url,'_blank');
		 }
	} );
	if (!tour){
		ooiLayer = new alp.gmap3.api.OOILayer( { proj : apiProjectKey, noAlpIW : false, highlightcolor: 'lirio', autoExtent : autoextend } );
		ooiLayer.setMap( map );
		ooiLayer.setSymbol('1');
		ooiLayer.setSize('normal');
		ooiLayer.setColor('goldenrod');
		ooiLayer.highlightcolor = 'goldenrod';
		
		ooiLayer.listen('iwSelect', function (markerInfo){
		});
		
		ooiLayer.listen( 'markerClick', function( markerInfo ) {
			Shadowbox.open({content: jQuery('#maplink-'+markerInfo.externalId).attr('href'), player: 'iframe', width: 720});
		} );
		
		ooiLayer.listen( 'markerMouseover', function( markerInfo ) {
		  ooiLayer.highlightOOI( 'external:'+markerInfo.externalSystem+':'+markerInfo.externalId );
		} );

		ooiLayer.listen( 'markerMouseout', function( markerInfo ) {
		  ooiLayer.highlightOOI(null);
		} );


		jQuery('a.icmaplink').each(function(index,el){
			var data = jQuery(el).attr('id').split('-');
			ooiLayer.addOOI('external:'+alpCmsKey+':'+data[1]);
			clusterLayer.removeManualOOIs(['external:'+alpCmsKey+':'+data[1]]);
		});
	}
	if(hideAllCategories){
		clusterLayer.hideAllCats();
	} else {
		if (selectedCategories){
			clusterLayer.hideAllCats();
			categories = selectedCategories.split(',');
			for(i = 0; i < categories.length; i++){
				console.log(categories[i]);
				clusterLayer.setCatSelected(categories[i],true);
			}
		} else {
			clusterLayer.showAllCats();
		}
	}
}

createAccordion = function() {
	jQuery("#maptree").treeview({
		persist: "location",
		collapsed: true,
		unique: true
	});
}
