var basketcount = 0;
var tagboxlimit = 0;
var operation = "";


function tagsDD(meth, tzone) {
	
		//operation = meth;
		zone = tzone; // map,full
	
		if(meth == "tagbasket") {
			tagboxlimit = 10;
		}
		else {
			tagboxlimit = 10;
		}
	
		// tagdrag für non admin tag selection (leftmenu, locations, events listings etc.)
		
		$('div.tagdrag').unbind();
		$('div.tagdrag').click(function() {

				if(tzone == "map")	{	// only if map view
					showBasketBox();
					var transfertarget = 'menu_content_tagfilters';
				}
				else {
					showBasketBox();
					var transfertarget = 'menu_content_tagfilters_full';
				}
				var theId = $(this).attr("id");
				var theName = $(this).attr('name');
				$(this).effect('transfer', { to: 'div.'+transfertarget+''}, 800);
				
				addProductToCart(theId, theName);			
		});
		
		
		
		$('div.seltagdrag').unbind();
		$('div.seltagdrag').click(function() {
				var fire = $(this).attr('label');
				var process = $(this).attr('process');
				if(fire == "exp") {
					tagSelector(this.id);	
				}
				else {
					// hide group with no expands
					if(meth == "group") {
						$('div#lefttag_subgroup_container').empty();
					}
				}
				
				
				
				var theId = $(this).attr("id");
				var theName = $(this).attr('name');
				$(this).effect("transfer", { to: "div.selcart"}, 800);
				
				if(process == 1) { // if !header (musik, inventar, ...)
					addProductToCart(theId, theName);
				}
		});
			
		
		// $('div.tagdrag').draggable({helper: 'clone', containment: 'document', appendTo: '#cartProducts'});
		// $('div.seltagdrag').draggable({helper: 'clone', containment: 'document', appendTo: '#cartProducts'});
		

		// non adm cart	
		$('#cart').droppable({
				accept:		'.tagdrag', 
				activeClass:	'activeCart', 
				hoverClass:		'hoverCart',
				/*
				tolerance:		'intersect',
				onActivate:		function(dragged)
				{
					if(tzone == "map")	{	// only if map view
						showBasketBox();
					}
					if (!this.shakedFirstTime) {
						$(this).Shake(3);
						this.shakedFirstTime = true;
					}
				},
				*/
				drop: function(ev, ui) { 

				     var theId = $(ui.draggable).attr("id");
				     var theName = $(ui.draggable).attr('name');
				
				     addProductToCart(theId, theName);
				
				     //Do your AJAX stuff in here. 
				} 
			}
		);
		
		// adm cart 
		
		$('#selcart').droppable(
			{
				accept :		'.seltagdrag', 
				activeClass:	'activeCart', 
				hoverClass:		'hoverCart',
				/*
				tolerance:		'intersect',
				onActivate:		function(dragged)
				{
					if (!this.shakedFirstTime) {
						$(this).Shake(3);
						this.shakedFirstTime = true;
					}
				},
				*/
				drop: function(ev, ui) { 

				     var theId = $(ui.draggable).attr("id");
				     var theName = $(ui.draggable).attr('name');
				
				     addProductToCart(theId, theName);
				
				     //Do your AJAX stuff in here. 
				} 
			}
		);
		
}



var isInCart;

var addProductToCart = function(productId, productName)
{
	// maximize tag number in basket
	if(basketcount >= tagboxlimit) {
		maxTagsMsg();
	}
	else {
		
	var cartItem;
	// var productName = $(dragged).attr('name');
	// var productPrice = parseFloat($('span', dragged).html());
	// var productId = $(dragged).attr('id');
	
	var isInCart = $('#' + productId + '_cart');
	if (isInCart.size() == 1) {
		var quantity = parseInt(isInCart.find('span.quantity').html()) + 1;
		isInCart.find('span.quantity').html(quantity+'').end().effect("pulsate", {times: 2}, 700);
		cartItem = isInCart.get(0);
	} else {
		basketcount = basketcount + 1;
		$('span#nosearchtags').hide();
		
		$('#cartProducts')
			.append('<div class="productCart" id="' + productId + '_cart">' + productName + '<span class="thistag">'+productId+'</span></div>')
			.find('div.productCart:last')
			.fadeIn(400)
			.bind(
				'click', 
				function(){
					$(this).hide("drop", { direction: "down" }, 
						400,
						function() {
							$(this).remove();
							saveTagsTotal();
							basketcount = basketcount - 1;
							if(basketcount == 0) {
								bagRefresh(1);
								$('div#left_tagmenue').fadeOut(100);
								$('div#tagpin_togger').attr({className: 'tagbasketpngin'});
							}
						}
					);
					return false;
				}
			);
		cartItem = $('div.productCart:last').get(0);
	}
	
	saveTagsTotal();
	return cartItem;
	
	} // else if taglimit below 
	
};


var delProductCart = function() {
	$('div.productCart').bind('click',
							  function(){
								$(this).hide("drop", {direction: "down" },
									400,
									function() {
										$(this).remove();
										saveTagsTotal();
										basketcount = basketcount - 1;
										if(basketcount == 0) {
											bagRefresh(1);
											$('div#left_tagmenue').fadeOut(100);
											$('div#tagpin_togger').attr({className: 'tagbasketpngin'});
										}
									}
								);
								return false;
							  }
							);	  
	// alert(basketcount);	
	
};


var saveTagsTotal = function()
{
	var total = '';
	$('#cartProducts .productCart').each(
		function()
		{
			var thisTag = parseFloat($('span.thistag', this).html());
			total += ''+thisTag+',';
		}
	);
	
	if(operation == "tagbasket") {
		// store alltags to hidden span and fire ajax to store list in session
		var tagsave = total;
		
		// call ajax save function
		tagBasketSave(tagsave);
		
	}
	else {
		var tagsave = '<input type="hidden" name="alltags" value="'+total+'">';
		$('span.tagsave').html(tagsave);
	}
	
};


function sendBasket(action, option) {
	var content = '';
	
	// read tags from tags field
	$('#cartProducts .productCart').each(
		function()
		{
			var thisTag = parseFloat($('span.thistag', this).html());
			content += ''+thisTag+',';
		}
	);
	
	var cnt_tags = content.split(",");
	var tgcnt = cnt_tags.length - 1;
	
	if(tgcnt > 0) {
		cm_tags = 1;
	}
	else {
		cm_tags = 0;
	}
	
	cm_tagsaction = action;
	
	
	if(cm_tags > 0 && cm_tagsaction == "show") {
		$('.filt_anzeigen').css("background-image", "url(/templates/current/des/'+js_des_theme+'/gfx/icons/MenuIcons/FiltShow_Over.png)");
		$('.filt_ausblenden').css("background-image", "url(/templates/current/des/'+js_des_theme+'/gfx/icons/MenuIcons/FiltHide.png)");
	}
	else if(cm_tags > 0 && cm_tagsaction == "hide") {
		$('.filt_anzeigen').css("background-image", "url(/templates/current/des/'+js_des_theme+'/gfx/icons/MenuIcons/FiltShow.png)");
		$('.filt_ausblenden').css("background-image", "url(/templates/current/des/'+js_des_theme+'/gfx/icons/MenuIcons/FiltHide_Over.png)");
	}
	else {
		$('.filt_anzeigen').css("background-image", "url(/templates/current/des/'+js_des_theme+'/gfx/icons/MenuIcons/FiltShow.png)");
		$('.filt_ausblenden').css("background-image", "url(/templates/current/des/'+js_des_theme+'/gfx/icons/MenuIcons/FiltHide.png)");
	}
	
	if(pagezone == "communityindex") {
		//alert("Fire Actions for Community: "+action+'  -- \n ' + content)
		
		// fire ajax update
		cm_pagenr = 1; // friendly reset
		communityList(cm_sort, cm_pagenr, cm_capkey, cm_gender_male, cm_gender_female, cm_city, cm_radius, cm_username, cm_agefrom, cm_ageto, cm_tags, cm_tagsaction);
	}
	else if(pagezone == "mapindex") {
		
		if(cm_tags == 1 || option == "autorefresh") {
			getPois(menu_tab, "map", center, zoomlevel, mapbounds, action);
		}
		else {
			bagRefresh(2);
		}
	}
	else if(pagezone == "lists") {
		setState(pagezone, action);
	}
}



function basketSet(method) {
	operation = method;

	// count tags if tags from session in init
	$('#cartProducts .productCart').each(
		function()
		{
			var thisTag = parseFloat($('span.thistag', this).html());
			basketcount = basketcount + 1;
		}
	);
}


function showBasketBox() {
	// function to fadeIn BasketLayer while tag-handling if hidden
	var tgboxstate = $('#left_tagmenue').css('display');
	
	var target = "tagmenu";
	
	if(tgboxstate == "none") {
		// fadeIn
		$('div#left_tagmenue').fadeIn(100);
		menustate = "max";
		if(basketcount == 0) {
			$('#cartProducts').html('<span id="nosearchtags" style="font-size: 10px; color: #adadad;">&nbsp;Keine Such-Tags selektiert.</span>');
		}
	}
	
	// ajax call setstate like main_menu
	// setState(target,menustate);
	
}



var maxTagsMsg = function()
{
	
	// display status message to div#ajaxmsg 
			var msg = 'Maximal '+tagboxlimit+' Tags erlaubt!';

		    $('span#menu_headbox_errormsg').html(msg);
				   
			setTimeout(function(){
							//$("#ajaxmsg").fadeOut('slow');
							// clear fields
							$('span#menu_headbox_errormsg').empty();
							//getLocData(reloadtab,locid);
							},2000);
};


function loadBagConfig(zone) { 
	// zone = sMeth || sFav
	
	var task = "read";
	var saveID = 0;
					
	$.ajax({ 	
			   type: "POST",
			   url: '/dyn/bagconf/',
			   dataType: 'json',
			   data: 'search=' + zone +'|'+ task +'|'+ saveID,
			   global: 'false',
			   success: function(json) {
			   
			   		$("div#tagbag_sels").empty(); // reset
			   
			   		var resp = json.data.length;
			   		var sellist = '';
			   		
			   		var ret_selected = json.ret[0].sel;
			   		
			   		if(resp > 0) {
				   			sellist += '<select id="bagconfig" name="bagFavorites" class="content_input">';
				  			for(i=0; i<resp; i++) {
				  				var thisID = json.data[i].id;
				  				if(ret_selected == thisID) {
				  					var optionIndex = i;
				  				}
				  					sellist += '<option value="'+thisID+','+json.data[i].istgs+'">'+json.data[i].name+'</option>';	
				  			}
				  			sellist += '</select>';
				   	}		
				   	
			   
			   		if(zone == "sMeth") {
			   			var listLoader = '<div id="save" class="tagbagSetup_save"></div><div id="clearDiv"></div>';
			   		}
			   		
			   		if(zone == "sFav") {
			   			var listLoader = '<div id="save" class="tagbagSetup_save"></div><div id="load" class="tagbagSetup_read"></div><div id="clearDiv"></div>';
			   		}
			   		
			   		// workaround for dynamic loaded list with ajax. last entry is selected without this shit. 
			   		
				   		var optIndex = 'option:eq('+optionIndex+')';
				   		$("div#tagbag_sels").html(sellist);
				   		$('select#bagconfig').find(optIndex).attr('selected', 'selected');
				   		
				   		$('#tgConfigA').html(listLoader);
				   		
				   		
				   		$(".tagbagSetup_save, .tagbagSetup_read").click(function(){
				   			task = this.id;
				   			
							var saveVAL = $('select#bagconfig').val();
							var tmpsplit = saveVAL.split(",");
							saveID = tmpsplit[0];
							saveBagConfig (zone, task, saveID);
							//alert("send to save: " + zone +'|'+task+'|'+ saveID);
						});	
						
						// trigger load and save icons
				   		if(zone == "sFav") {
				   			var current = $('select#bagconfig').val();
				   			triggerSaveLoad(current);
				   		}
				   		$('select#bagconfig').change(function() {
				   				$("div.tagbagSetup_msg").empty();
								current = $('select#bagconfig').val();	
								triggerSaveLoad(current);
						});
				   		// end trigger load and save icons
				   		
				   		// Info Text for save & load icon
						$('.tagbagSetup_save').mouseover(function() {
							if(zone == "sFav") {
								var msg = str_tgd_svtg;
							}
							if(zone == "sMeth") {
								var msg = str_tgd_smthsv;
							}
							$("div.tagbagSetup_msg").html(msg);
						});
						$('.tagbagSetup_save').mouseout(function() {
							$("div.tagbagSetup_msg").empty();
						});
						$('.tagbagSetup_read').mouseover(function() {
							var msg = str_tgd_lolist;
							$("div.tagbagSetup_msg").html(msg);
						});
						$('.tagbagSetup_read').mouseout(function() {
							$("div.tagbagSetup_msg").empty();
						});
				   		
			   } // end success
	}); // end ajax
}

function saveBagConfig(zone, task, id) {

	$.ajax({ 	
			   type: "POST",
			   url: '/dyn/bagconf/',
			   dataType: 'json',
			   data: 'search=' + zone +'|'+ task +'|'+ id,
			   global: 'false',
			   success: function(json) {
			   
				   // print msg
				   if(task == "save") {
				   		var showMsg = '<strong>'+str_tgd_datasaved+'</strong>';
				   }
				   else if(task == "load") {
				   		var showMsg = '<strong>'+str_tgd_dataloaded+'</strong>';
				   		//alert(json.ret[0].taghtml);
				   		// $('.menu_content_tagfilters').Pulsate(250, 3);
				   		$('#cartProducts').empty().append(json.ret[0].taghtml);
				   		
						
						basketcount = json.ret[0].tagnum; // set current tag nr because bag limit
				   		saveTagsTotal();
				   		
				   		$('.productCart').click(function() {
				   			$(this).DropOutDown(
								400,
								function() {
									$(this).remove();
									saveTagsTotal();
									basketcount = basketcount - 1;
									if(basketcount == 0) {
										bagRefresh(1);
									}
								}
							);
							return false;
				   		});
				   		
				   		window.location.href = json.ret[0].lasturi; // scheiss workaround, dirty lösung.... 
				   }
				   $("div.tagbagSetup_msg").html(showMsg);
			   }
	});
}

function bagRefresh(param) {

	if(param == 1) {
		var autoaction = "show";
		option = "autorefresh";
		sendBasket(autoaction, option);
		updateMen(menu_tab);  // added 270109
		// $('.bookm_container').empty(); // added 270109
		// $('div#location_box').hide(); // added 270109
	}
	else if(param == 2) {
		
		// alert("Ey nach wat soll isch suchen, mann? Keine Tags in der TagBag!");
	}
}

function bagNewFav(id) {
	var zone = "sFav";
	var showMsg = "";
	var input = 'Name: <input id="new_input" type="text" size="20" maxlength="20" class="content_input">';
	var listLoader = '<div id="newsave" class="tagbagSetup_save"></div><div id="bagNewClose" class="divClose"></div><div id="clearDiv"></div>';
	
	$("div#tagbag_sels").html(input);
	$('#tgConfigA').html(listLoader);
	
	$('div#newsave').click(function(){
		// get data from input
		var content = $('input#new_input').val();
		
		$.ajax({ 	
			   type: "POST",
			   url: '/dyn/bagnewfav/',
			   dataType: 'json',
			   data: 'search=' + content,
			   global: 'false',
			   success: function(json) {
			   
			   	   var state = json.ret[0].stat;
			   	   // 0 = OK
			   	   // 1 = DB
			   	   // 2 = Name
			   	   // 3 = Nologin
			   	   
			   	   
			   	   // print msg
			   	   if(state == 0) {
							showMsg = '<strong>'+str_tgd_listsaved+'</strong>';
							setTimeout(function(){
								$('div.tagbagSetup_msg').empty();
								loadBagConfig(zone); // reload list after save success
							},1500);
			   	   }
			   	   else if(state == 1) {
			   	   			showMsg = '<strong>'+str_tgd_listex+'</strong>';
			   	   }
			   	   else if(state == 2) {
			   	   			showMsg = '<strong>'+str_tgd_listshort+'</strong>';
			   	   }
			   	   
				   $("div.tagbagSetup_msg").html(showMsg);
			   }
		});
	});
	
	// cancel input and reload list
	$('div#bagNewClose').click(function(){
		$("div.tagbagSetup_msg").empty();
		loadBagConfig(zone);
	});
}



function triggerSaveLoad(current){
	
	var tmps = current.split(",");
		
	var optionid = tmps[0];
	var istg = tmps[1];

	if(optionid == "n") {

		$('.tagbagSetup_save, .tagbagSetup_read').hide();
		bagNewFav(current);
	}
	else if(optionid == "x") {
		$('.tagbagSetup_save, .tagbagSetup_read').hide();
	}
	//if(Number(current)) {
	else if(Number(optionid)) {
		//$('.tagbagSetup_save, .tagbagSetup_read').show();
		if(istg == 1) {
			// show load
			$('.tagbagSetup_save').show();
			$('.tagbagSetup_read').show();
		}
		if(istg == 0) {
			// only show save
			$('.tagbagSetup_save').show();
			$('.tagbagSetup_read').hide();
		}
	}
}

function saveTagBagSetup(zone, task, saveID) {
	
	$.ajax({ 	
			   type: "POST",
			   url: '/dyn/bagmeth/',
			   dataType: 'json',
			   data: 'search=' + zone +'|'+ task +'|'+ saveID,
			   global: 'false',
			   success: function(json) {
			   
			   		var loadergif = '<div class="ajaxloader"></div>';
					$('div#tagbag_sels').html(loadergif);
			   		
			   		var ret_zone = json.ret[0].zone;
			   		var ret_task = json.ret[0].task;
			   		var ret_selected = json.ret[0].sel;
			   		
			   		var opval = ret_selected;
			   		var optlist = '';
			   		var sellist = '';
			   		var resp = '';
			   		
			   		if(ret_zone == "sMeth" && ret_task == "read") {
			   			
			   			resp = json.data.length;
			   			
				   		if(resp > 0) {
				   			sellist += '<select id="bagconfig" name="bagFavorites" class="content_input">';
							//sellist += '<option value="x">bitte ausw&auml;hlen</option>';
				  			for(i=0; i<resp; i++) {
				  				var thisID = json.data[i].id;
				  				if(ret_selected == thisID) {
				  					var optionIndex = i;
				  				}
				  					sellist += '<option value="'+thisID+'">'+json.data[i].name+'</option>';	
				  			}
				  			sellist += '</select>';
				   		}				   		
				   		
				   		// workaround for dynamic loaded list with ajax. last entry is selected without this shit. 
				   		var optIndex = 'option:eq('+optionIndex+')';
				   		$("div#tagbag_sels").html(sellist);
				   		$('select#bagconfig').find(optIndex).attr('selected', 'selected');
				   		
				   		var listLoader = '<div id="'+ret_selected+'" class="tagbagSetup_save"></div><div id="clearDiv"></div>';
			   			$('#tgConfigA').html(listLoader);
	                    						  
			   		}
			   		
			   			
			   		else if(ret_zone == "sMeth" && ret_task == "save") {
			   			var showMsg = '<strong>'+str_tgd_methsaved+'</strong>';
			   			$("div.tagbagSetup_msg").html(showMsg);
			   		}
			   		
			   		else if(ret_zone == "sFav" && ret_task == "read") {
			   			sellist += '<select id="bagconfig" name="bagFavorites" class="content_input">';
			   			sellist += '<option value="x">'+str_form_pleasselect+'</option>';
			   			sellist += '<option value="n">'+str_tgd_newlist+'</option>';
			   			sellist += '<option value="123">'+str_tgd_mylist+'</option>';
			   			sellist += '<option value="456">'+str_tgd_seclist+'</option>';
			   			sellist += '</select>';
			   			
			   			$("div#tagbag_sels").html(sellist);
			   			$("select#bagconfig").find('option:eq(0)').attr('selected', 'selected');
			   			
			   			
			   			var listLoader = '<div id="123" class="tagbagSetup_save"></div><div id="123" class="tagbagSetup_read"></div><div id="clearDiv"></div>';
			   			$('#tgConfigA').html(listLoader);
			   			
			   			$('select#bagconfig').change(function() {
		
							var meth = this.value;
							
							if(meth == "n") {
								alert("create new list");
							}
						
						});
			   		}   	
			   		// reinit stuff, create extra function for that shit bcause redundancy
					$('select#bagconfig').change(function() {
						  opval = this.value;
						  // empty msg field
						  $(".tagbagSetup_msg").empty();
					});
			   		
			   		
			   		$(".tagbagSetup_save").click(function(){
					/*
						var saveID = this.id; // OR|AND
						var setupID = $(".tagbagSetup_content").attr('id'); // sMeth|sFav
					*/
					var tsk = "save";
					saveTagBagSetup(ret_zone, tsk, opval);
					});	
			   		
			   }
			   
	});	
}


function tagBasketSave(data)
{
	$.ajax({ 	
			type: "POST",
			url: '/dyn/basket/',
			dataType: 'json',
			data: 'cont=' + data,
			global: 'false',
			success: function(json) {
				// nothing
				bagRefresh(1);
			}
						   	
	});
}

function tagBasketKill(data)
{
	$.ajax({ 	
			type: "POST",
			url: '/dyn/basketempty/',
			dataType: 'json',
			data: 'cont=' + data,
			global: 'false',
			success: function(json) {
				
				$('div#cartProducts').empty();
				
				basketcount = 0;				
				
				bagRefresh(1);
			}
						   	
	});
}

function tagBasketLoad(data)
{
	$.ajax({ 	
			type: "POST",
			url: '/dyn/mytags/',
			dataType: 'json',
			data: 'cont=' + data,
			global: 'false',
			success: function(json) {
				
				if(menu_tab == 1) {
					window.location.href = "/";		
				}
				if(menu_tab == 2) {
					window.location.href = "/events/";		
				}
			}
						   	
	});
}