(function($) {
	var root = (window.location.pathname.indexOf('2010') != -1) ? '/2010/' : 'http://programmakaren.se/';
	var submitting = false;
	var cookieName = 'for_print';
	var cookieOptions = { path: '/', expires: 14 }; 
	var cookieLoad = $.cookie(cookieName);
	var events;
	var printList = '';
	var checkedGenres, checkedAreas;
	var timer = false;
	var IE = false;	

	if ($.browser.msie && $.browser.version < 7) {
		IE = true;
	}

	if (!IE) {
		
		if (jQuery.browser.mobile) {
			var mobileCookie = $.cookie('mobileBrowsing');
			var redirect = false;
			if (mobileCookie === null ) {
				redirect = confirm('Vill du gå till den mobilanpassade Programmakaren?');
				$.cookie('mobileBrowsing', redirect, { path: '/', expires: 1});
				if (redirect) {
					//alert('cookie created -> redirect!');
					window.location = root + 'm';
				}
			} else if (mobileCookie != 'false') {
				//alert(mobileCookie + ' cookie existed -> redirect!');
				window.location = root + 'm';
			}
		}
		
		$.cookie('javascript', true, cookieOptions);
		
		/* Ta bort checkboxar och submit-knapp på andra sidan */
		
		$('.eventwrapper input:checkbox, #to_print').remove();
	/* Fixa checkboxar på förstasidan */
	}
	function checkCheckBoxes(id) {
		if ($('#'+id+' :checkbox:checked:not(#all_'+id+')').length == $('#'+id+' :checkbox:not(#all_'+id+')').length) {
			$('#all_'+id).attr('checked', true);
		}
		else {
			$('#all_'+id).attr('checked', false);
		}
	}

	checkCheckBoxes('areas');
	checkCheckBoxes('genres');
	
	$('#areas :checkbox:not(#all_areas), #genres :checkbox:not(#all_genres)').click(function() {
		var id = $(this).parent().parent().parent().attr('id');
		checkCheckBoxes(id);
		$('.warning').hide();
	});
	
	$('#all_genres, #all_areas').click(function() {
		var selector = this.id.split('_').pop();
		if ($(this).attr('checked')) {
			$('#'+selector+' :checkbox:not(#'+this.id+')').attr('checked', true);
		}	
		else {
			$('#'+selector+' :checkbox:not(#'+this.id+')').attr('checked', false);
		}
		$('.warning').hide();
	});
		
	$('#to_step_2').click(function() {
		if ($('#genres :checkbox:checked').length == 0 || $('#areas :checkbox:checked').length == 0) {
			$('.warning').html('Du m&aring;ste v&auml;lja minst en kategori och ett omr&aring;de').show();
			return false;
		}
	});	
	
	if (!IE) {
		if (cookieLoad) {
			events = cookieLoad.split('|');
			var iframeLink = cookieLoad.replace("|", "&amp;")
			$(".print_list").load(root+"get-cookie-events/", function(event) {
				$('.print_container').append('<input name="submit" type="button" class="alignright" id="show_print" value="Visa mitt program" />');
				showPrint();
				for (var i = 0; i < events.length; i++) {
					$("a.print_add[href$='"+events[i]+"']").addClass('added').text("Ta bort");
				}				
				$('.printwrapper').fadeIn('slow');				
			});
		}
		else {
			$('.print_list').html('<li><a href="#" class="no_print">Inga aktiviteter tillagda</a></li>');
			$('.printwrapper').fadeIn('slow');
		}
		
	}
	function showPrint() {
		$('#show_print').click(function() {
			window.location = root+'visa-utskrift/';
		})
	}
	$('.pagelist li').hover(function() {$(this).addClass('adminhover');},function() {$(this).removeClass('adminhover');});
	$('.waiting .editlink').click(function(event) {
		if (!submitting) {
			submitting = true;
			var link = this;
			$('.pagelist li').removeClass('adminactive');
			$.getJSON($(link).attr('href'), function(data) {
				submitting = false;
				$('#organizer_name').val(data.organizer.name);
				$('#address_name').val(data.address.name);
				$('#organizer_email').val(data.organizer.email);
				$(link).parent().addClass('adminactive').removeClass('waiting');
				$('#event_description').val(data.event.description);
				$('#event_form').appendTo($(link).parent());
				populate(data.event, 'event_');
				if (data.image != false) {
					$('#image_container').html('Nuvarande bild till webben: <a class="file" href="'+data.image+'" target="_blank">'
						+data.image.split("/").pop()+'</a>'
					);
				}
				else {
					$('#image_container').html('Ingen bild har laddats upp');
				}
				if (data.print != false) {
					$('#image_print_container').html('Nuvarande bild till tryck: <a class="file" href="'+data.print+'" target="_blank">'
						+data.print.split("/").pop()+'</a>'
					);
				}
				else {
					$('#image_print_container').html('Ingen bild har laddats upp');
				}
				$('#event_image').val('');
				$('#print_image').val('');
				$("#genres input:checkbox, #areas input:checkbox").attr("checked", false);
				checkBoxes(data.genres, 'genres');
				checkBoxes(data.areas, 'areas');
				if (data.times) {
					$('#event_times').val(data.times);
				}
				$('#event_form').show();
				$('#event_name').focus();
			});	
			//event.preventDefault();
		}
		return false;
	});

	$('.pagelist .deletelink').click(function(event) {
		event.preventDefault();
		var link = this;
		var eventText = $(link).prev().find("span").text();
		var deleteConfirm = confirm('Programpunkten "'+eventText+'" kommer att raderas. Är du säker på att du vill göra detta?');
		if (deleteConfirm) {
			$(link).prev().text("Raderar...");
			$.getJSON(link.href, function(data) {
				if (data.success) {
					$(link).parent().remove();
				}
				submitting = false;
				$('#event_form').hide();
			});
		}

	});
	
	
	$('.pagelist .editorglink').click(function(event) {
		//alert(submitting);
		if (!submitting) {
			submitting = true;
			var link = this;
			$('.pagelist li').removeClass('adminactive');
			//alert($(link).attr('href'));
			$.getJSON(link.href, function(data) {
				//alert('submitting: ' + submitting + ' data.organizer: ' + data.organizer + ' data.email: ' + data.email);
				submitting = false;
				populate(data.organizer, 'organizer_');
				populate(data.address, 'address_');
				$(link).parent().addClass('adminactive');
				$('#organizer_form').appendTo($(link).parent());
				$('#organizer_form').show();
				$('#organizer_name').focus();
			});	
			
			//event.preventDefault();
		}
		return false;
	});
	
	$('.pagelist .deleteorglink').click(function(event) {
		event.preventDefault();
		var link = this;
		var eventText = $(link).parent().find(".editorglink").text();
		var deleteConfirm = confirm('Organisatören "'+eventText+'" kommer att raderas. Är du säker på att du vill göra detta?');
		if (deleteConfirm) {
			$(link).prev().text("Raderar...");
			$.getJSON(link.href, function(data) {
				if (data.success) {
					$(link).parent().remove();
				}
				submitting = false;
				$('#organizer_form').hide();
			});
		}

	});


	function populate(data, prefix) {
		for (var i in data) {
			if (i != 'organizer_id' && i != 'description') {
				if (i != 'card' && i != 'image') {
					$('#'+prefix+i).val(data[i]);
				}	
				else {
					if (data[i]) {
						$('#'+prefix+i).attr('checked', true);
					}	
					else {
						$('#'+prefix+i).attr('checked', false);
					}	
				}
			}
		};
	}

	function checkBoxes(data, prefix) {
		if (data.length > 0) {
			for (var i = 0; i < data.length; i++) {
				$('#'+prefix+' :checkbox[value="'+data[i].id+'"]').attr('checked', true);
			}
		}
		else {
			$('#'+prefix+' input:checkbox').attr('checked', false);
		}		
	}
	
	$('#event_form').ajaxForm(
		{
			beforeSubmit: function(arr, $form, options){
				var fields = ($("#event_name").val() == '') ? '\n- Namn' : '';
				fields += ($("#event_age_limit").val() == '') ? '\n- Åldersgräns' : '';
				fields += ($("#organizer_name").val() == '') ? '\n- Arrangör' : '';
				fields += ($("#address_name").val() == '') ? '\n- Adress' : '';
				if (fields != '') {
					alert('Kontrollera att dessa fält är ifyllda:' + fields);
				}
			}, 
			success: function(data) {
				$('#event_form').hide();
				var newName = data.post.organizer_name+" - "+data.post.event_name;
				$('.pagelist a.active').html(newName);
				$('.pagelist a').removeClass('active');
				$('.pagelist li').removeClass('adminactive');
			}, 
			dataType:"json"
		}
	);
	
	$('#new_event_form input[type="submit"]').click(function(e) {
		if ($("#event_name").val() == '' || $("#organizer_name").val() == '' || $("#address_name").val() == '' || $("#event_age_limit").val() == '') {
			var fields = ($("#event_name").val() == '') ? '\n- Namn' : '';
			fields += ($("#event_age_limit").val() == '') ? '\n- Åldersgräns' : '';
			fields += ($("#organizer_name").val() == '') ? '\n- Arrangör' : '';
			fields += ($("#address_name").val() == '') ? '\n- Adress' : '';
			alert('Kontrollera att dessa fält är ifyllda:' + fields);
			e.preventDefault();
		}
	});
	
	$('#organizer_form').ajaxForm({
			beforeSubmit: function(arr, $form, options){
				var fields = ($("#organizer_name").val() == '') ? '\n- Arrangör' : '';
				fields += ($("#organizer_email").val() == '') ? '\n- E-post' : '';
				if (fields != '') {
					alert('Kontrollera att dessa fält är ifyllda:' + fields);
					return false;
				}
			}, 
			success: function(data) {
				if (data.success) {
					$('#organizer_form').hide();
					var newName = data.post.organizer_name;
					$('.pagelist .adminactive .editorglink').html(newName);
					$('.pagelist a').removeClass('active');
					$('.pagelist li').removeClass('adminactive');
				}
			}, 
			dataType:"json"
		}
	);
	
	$('#new_organizer_form input[type="submit"]').click(function(e) {
		if ($("#organizer_name").val() == '' || $("#address_name").val() == '') {
			var fields = ($("#organizer_name").val() == '') ? '\n- Arrangör' : '';
			fields += ($("#address_name").val() == '') ? '\n- Adress' : '';
			alert('Kontrollera att dessa fält är ifyllda:' + fields);
			e.preventDefault();
		}
	});
	
	$("#organizer_id").change(function(event) {
		if ($(this).val() != "") {
			$.getJSON($(this).attr("rel")+$(this).val()+"/", function(data) {
				populate(data.organizer, 'organizer_');
				populate(data.address, 'address_');
			});				
		}
		else {
			$(this).parent().parent().find("input:text").val("");
		}
	});
	
    // if the function argument is given to overlay, 
    // it is assumed to be the onBeforeLoad event listener 
	var map;
	var markers = [];
	var infoWindows = [];
	var latlng = new google.maps.LatLng(57.636848, 11.930453);
	var myOptions = { zoom: 15, center: latlng, mapTypeId: google.maps.MapTypeId.ROADMAP };
	
    $("a[rel]").overlay({ 
 
		expose: { color: '#333' },
        onBeforeLoad: function() { 

            // grab wrapper element inside content 
            var wrap = this.getContent().find("div.wrap"); 
 			wrap.empty();
            // load the page specified in the trigger 
            wrap.load(this.getTrigger().attr("href"), function() {
            	$('.image_holder').height($('.content_holder').height());
				map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
	
	         	var curLatLng = $("#map_canvas").attr("rel").split("&");
	         	var point = new google.maps.LatLng(curLatLng[0], curLatLng[1]);
	         	var bounds = new google.maps.LatLngBounds();
	          	clearMarkers(markers, infoWindows);
				bounds.extend(point);
				createMarker(point, "program_punkt", "Programpunkt", "Testar");
				map.setCenter(bounds.getCenter());
				//map.fitBounds(bounds); 
				addthis.toolbox("#popup_toolbox");
            }); 
        } ,
        onLoad: function() {}
    });	
    $('a.merinfo').click(function(event) {
    	event.preventDefault();	
    });
    
	if (!IE) {
	    $('a.print_add:not(.added)').live("click", function(event) {
	    	event.preventDefault();
	    	var cookieValues = $.cookie(cookieName);
	    	var newText = this.href.split("#").pop();
	    	var headerText = $(this).parent().find("h2").text();
	    	var newItem = true;
			if (cookieValues) {
		    	var cookieArray = cookieValues.split("|");
				for (var i = 0; i < cookieArray.length; i++) {
					if (cookieArray[i] == newText) {
		    			newItem = false;
		    			break;
		    		}	
	    		}
	    		if (newItem) {
	    			cookieValues += '|'+newText;
	    			$('.no_print').parent().remove();
	    			$('.print_list').append('<li><a href="#'+newText+'">'+headerText+'</a></li>');
	    		}
	    	}
	    	else {
	    		cookieValues = newText;
	   			$('.no_print').parent().remove();
	   			$('.print_list').append('<li><a href="#'+newText+'">'+headerText+'</a></li>');
				$('.print_container').append('<input name="submit" type="button" class="alignright" id="show_print" value="Visa mitt program" />');
				showPrint();
	    	}
	    	$(this).addClass("added").text("Ta bort");
	    	$.cookie(cookieName, cookieValues, cookieOptions);
	    });
	    
	    $("a.added").live("click", function(event) {
	    	event.preventDefault();
	    	$(".print_list a[href$='"+this.href.split("#").pop()+"']").click();	
	    })
	    $('.print_list a:not(.no_print)').live("click", function(event) {
	    	event.preventDefault();
			
    		cookieLoad = $.cookie(cookieName);
			var printRemove = this.href.split("#").pop();
			var events = cookieLoad.split('|');
			for (var i = 0; i < events.length; i++) {
				if (events[i].indexOf(printRemove) != -1) {
					events.splice(i, 1);
					i--;
				}	
			}
	    	$.cookie(cookieName, events.join('|'), cookieOptions);
			$(this).parent().remove();
			if ($(".print_list").children().length == 0) {
				$(".print_list").append('<li><a href="#" class="no_print">Inga aktiviteter tillagda</a></li>');
				$('#show_print').remove();
			}
			$(".print_add[href$='"+printRemove+"']").html("L&auml;gg i mitt program").removeClass("added");
	    });
	    $('a.no_print').live("click", function(event) { event.preventDefault(); });
    }

	function clearMarkers(markers, infoWindows) {
		for (var i = 0; i < markers.length; i++) {
			markers[i].setMap(null)
		}
		markers.length = 0;
		for (var i = 0; i < infoWindows.length; i++) {
			infoWindows[i].close();
		}
		infoWindows.length = 0;
	}
	
	function closeWindows(infoWindows) {
		for (var i = 0; i < infoWindows.length; i++) {
			infoWindows[i].close();
		}		
	}
	
	function createMarker(latlng, storeId, storeTitle, storeContent) {
		var marker = new google.maps.Marker({
			title: storeTitle,
			icon: "http://www.programmakaren.se/public/images/gui/google_icon.png",
			map: map,
			position: latlng
		});
		storeContent = '<div class="google_store_info"><h2>'+storeTitle+"</h2><div>"+storeContent+"</div></div>";
		markers.push(marker);
	}    
})(jQuery);

(function($) {
	if ($("#print_map_canvas").length > 0) {
		var map;
		var markers = [];
		var infoWindows = [];
		var latlng = new google.maps.LatLng(57.636848, 11.930453);
		var myOptions = { zoom: 15, center: latlng, mapTypeId: google.maps.MapTypeId.ROADMAP };
		map = new google.maps.Map(document.getElementById("print_map_canvas"), myOptions);
		var bounds = new google.maps.LatLngBounds();
		
		$(".print_out_content").each(function(i) {
			if ($(this).attr("rel") != "&") {
				var curLatLng = $(this).attr("rel").split("&");
				var point = new google.maps.LatLng(curLatLng[0], curLatLng[1]);
				bounds.extend(point);
				createMarker(point, this);
			}
		});
		map.setCenter(bounds.getCenter());
		map.fitBounds(bounds);
	}
	function clearMarkers(markers, infoWindows) {
		for (var i = 0; i < markers.length; i++) {
			markers[i].setMap(null)
		}
		markers.length = 0;
		for (var i = 0; i < infoWindows.length; i++) {
			infoWindows[i].close();
		}
		infoWindows.length = 0;
	}
	
	function closeWindows(infoWindows) {
		for (var i = 0; i < infoWindows.length; i++) {
			infoWindows[i].close();
		}		
	}
	
	function createMarker(latlng, store) {
		var marker = new google.maps.Marker({
			title: storeTitle,
			icon: "http://www.programmakaren.se/public/images/gui/google_icon.png",
			map: map,
			position: latlng
		});
		var storeTitle = $(store).find("h2");
		var infowindow = new google.maps.InfoWindow({
			content: "<h2>"+storeTitle.html()+"</h2>"
		});	
		google.maps.event.addListener(marker, 'click', function() {
			closeWindows(infoWindows);
			infowindow.open(map, marker);
		});
		storeTitle.click(function(event) {
			closeWindows(infoWindows);
			infowindow.open(map, marker);	
			event.preventDefault();
		});
		infoWindows.push(infowindow);
	}
})(jQuery);
