jQuery(document).ready(function(){
	poiId = 0;
	params = '';
	
	if(jQuery('.icmaplink').length > 0){
		
		jQuery('.icmaplink').each(function(index, el){
			poiId++;
			var item = jQuery(el).attr('id');
			params = params + '&item[' + poiId + ']=' + item;
		});
		
		jQuery.ajax({
			url: 'index.php?eID=icMapLink' + params,
			dataType: 'json',
			cache: false,
			type: "GET",
			success: function(response) {
				jQuery.each(response, function (id, html){
					id = id.replace(':', '\\:');
					jQuery('#'+id).html(html);
				});
			}
		});
	}
});

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

jQuery(window).load(function(){
	if (jQuery("#minimap-tab1").length != 0){
		window.setTimeout('makeMiniMap();', 500);
	}
	
	if (loadMapOnStart){
		window.setTimeout('openMap(0,true);', 1000);
	}
});



function showMarker(id){
	var mapslider = jQuery('.slidebar.map');
	jQuery('html, body').animate({scrollTop: jQuery(document).height()}, 800);
	
	if(mapslider.length > 0 && !mapslider.hasClass('open')){
		jQuery('.slidebar.map .arrow').trigger('click');
	}
	
	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)) });
}

function maximizeMap(){
	var map1		= jQuery("#mapdiv");
	var offset 	= map1.offset();
	var left	= offset.left-$(window).scrollLeft();
	var top		= offset.top-$(window).scrollTop();
	orgH 	= map1.height();
	orgW 	= map1.width();
	orgT 	= map1.css('top');
	orgL 	= map1.css('left');
	startT	= top;
	startL	= left;
	orgCenter = map.getCenter();
	orgZoom = map.getZoom();
	
	map1.css({
		"position" 	: "fixed",
		"left"		: left,
		"top"		: top
	});
	
	jQuery("#catdiv").css("position","fixed");
	jQuery("#minimizediv").css("position","fixed");
	jQuery(".wettericon").css("display","none");
	jQuery(".fotoapparat").css("display","none");
	jQuery("#carttab").css("display","none");
	
	jQuery("#maximizediv").css("display","none");
	jQuery("#minimizediv").css("display","block");
	
	map1.animate({
		top:	0,
		left:	0,
		width:	'100%',
		height: '100%'
	},500,'easeInOutQuad',function(){
		resizeMap();
		map.setCenter(orgCenter);
		map.setZoom(orgZoom+3);
	});
}

function minimizeMap(){
	var map1		= jQuery("#mapdiv");
	jQuery("#catdiv").css("position","absolute");
	jQuery("#minimizediv").css("position","absolute");
	jQuery(".wettericon").css("display","block");
	jQuery(".fotoapparat").css("display","block");
	jQuery("#carttab").css("display","block");
	
	jQuery("#maximizediv").css("display","block");
	jQuery("#minimizediv").css("display","none");
	
	map1.animate({
		top:	startT,
		left:	startL,
		width:	orgW,
		height: orgH
	},500,'easeInOutQuad',function(){
		map1.css({
			"position"	:	"absolute",
			"left"		: orgL,
			"top"		: orgT
		});
		resizeMap();
		map.setCenter(orgCenter);
		map.setZoom(orgZoom);
	});
}

function resizeMap(){
	google.maps.event.trigger(map, "resize");
}


function showTour(id){
	openMap(id, true, 1);
	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).append(mapdiv);
			makeMap(autoextend, tour);
			
			if(jQuery("#catdiv").length == 0){
				catdiv = jQuery('<div id="catdiv"></div>');
				jQuery('#'+mapDivId).append(catdiv);
				
				if(showCloseBtn){
					if(jQuery("#maximizediv").length == 0){
						maximizediv = jQuery('<div id="maximizediv"></div>');
						jQuery('#mapdiv').after(maximizediv);
						maximizediv.html('<a href="javascript:void(0);" class="maximizemap" onclick="maximizeMap();">'+labelMaximizeBtn+'</a>');
					}
					if(jQuery("#minimizediv").length == 0){
						minimizediv = jQuery('<div id="minimizediv"></div>');
						jQuery('#mapdiv').after(minimizediv);
						minimizediv.html('<a href="javascript:void(0);" class="minimizemap" onclick="minimizeMap();">'+labelMinimizeBtn+'</a>');
					}
				}
				
				catheader = jQuery('<div id="catheader"></div>');
				jQuery('#catdiv').append(catheader);
				jQuery('#catheader').html(labelCategoryHeader);
				
				catcontainer =  jQuery('<div id="catcontainer"></div>');
				jQuery('#catdiv').append(catcontainer);
			}
		}
		//jQuery('#mapdiv').fadeIn();
		//jQuery('#catdiv').fadeIn();
		//jQuery('#closediv').fadeIn();
		jQuery("#maximizediv").fadeIn();
		
		mapIsOpen = true;
	}
}

function closeMap(){
	if (mapIsOpen == true){
		//jQuery('#'+mapDivId).animate({'height': orgHeight});
		//jQuery('#mapdiv').fadeOut();
		//jQuery('#catdiv').fadeOut();
		//jQuery('#closediv').fadeOut();
		jQuery('#maximizediv').fadeOut();
		mapIsOpen = false;
	}
}

var map;
var clusterLayer;
var catTree;

var myCatTreeCreator = function() {
	catTree = clusterLayer.getCatTree();
	if(hideAllCategories){
		clusterLayer.hideAllCats();
	} else {
		if (selectedCategories){
			clusterLayer.hideAllCats();
			categories = selectedCategories.split(',');
			for(i = 0; i < categories.length; i++){
				clusterLayer.setCatSelected(categories[i],true);
			}
		} else {
			clusterLayer.showAllCats();
		}
	}
	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[0].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();
};

function makeMiniMap(){	

	minimap = new alp.gmap3.Map(document.getElementById('minimap-tab1'), miniOptions);
	miniClusterLayer = new alp.gmap3.api.ClusterLayer( { proj : apiProjectKey, noAlpIW : true, initCat : false});
	miniClusterLayer.listen( 'markerClick', function( markerInfo ) {
		openMap(0,1);
		clusterLayer.iwOpenOOI(markerInfo.id , { fit : true } );
	});
	if(hideAllCategories){
		miniClusterLayer.hideAllCats();
	} else {
		if (selectedCategories){
			miniClusterLayer.hideAllCats();
			categories = selectedCategories.split(',');
			for(i = 0; i < categories.length; i++){
				miniClusterLayer.setCatSelected(categories[i],true);
			}
		} else {
			miniClusterLayer.showAllCats();
		}
	}
	
	miniClusterLayer.setMap( minimap );	
	
	opendiv = jQuery('<div id="opendiv"></div>');
	jQuery('#minimap-tab1').append(opendiv);
	if (typeof(ictour)=="undefined"){
		jQuery('#opendiv').html('<a href="javascript:void(0);" class="openmap" onclick="openMap(0,1);">'+labelOpenBtn+'</a>');
	} else {
		jQuery('#opendiv').html('<a href="javascript:void(0);" class="openmap" onclick="showTour(ictour);">'+labelOpenBtn+'</a>');
	}
}

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});
	clusterLayer.hideAllCats();
	clusterLayer.init_cb(myCatTreeCreator);
	clusterLayer.setMap( map );
	clusterLayer.listen('iwSelect', function (markerInfo) {
		if (markerInfo.externalSystem == alpCmsKey){
			jQuery.ajax({
				url: 'index.php?id='+page+'&eID=getDetailLink&uid='+ markerInfo.externalId,
				cache: false,
				type: "POST",
				success: function(response) {
					//console.log(response);
					window.open(response,'_top');
				}
			});
		 } else {
			url = 'http://alpregio.outdooractive.com/'+apiProjectKey+'/de/alpregio.jsp#i=' + markerInfo.id;
			//window.open(url,'_blank');
		 }
	});
	if (!tour){
		ooiLayer = new alp.gmap3.api.OOILayer( { proj : apiProjectKey, noAlpIW : false, highlightcolor: 'green_chili', autoExtent : autoextend } );
		ooiLayer.setMap( map );
		ooiLayer.setSymbol('1');
		ooiLayer.setSize('normal');
		ooiLayer.setColor('forest_green');
		
		ooiLayer.listen( 'markerClick', function( markerInfo ) {
			clusterLayer.iwOpenOOI(markerInfo.id);
		});
		
		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){
			if(jQuery(el).attr('id')){
				var data = jQuery(el).attr('id').split('-');
				ooiLayer.addOOI('external:'+alpCmsKey+':'+data[1]);
				clusterLayer.removeManualOOIs(['external:'+alpCmsKey+':'+data[1]]);
			}
		});
	}
}

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