﻿$(document).ready(function() {

	if ($("#map").size() == 0)
	{
		$("#minimap,.minimap").css("cursor", "pointer").click(function() {     
			window.location = "default.aspx?id=1879";
		});
		
	}

});


// show map points
jQuery.fn.showpoints = function(mapid, typesli, plats) {

  return this.each(function(){
    
    	if (plats)
    		plats = "&plats=" + plats;
    	else
    		plats = "";
    
    	$(this).click(function() {
    		$.closeAllInfoBoxes();
    	}).load("default.aspx?id=" + mapid + plats, function() {

	    	$(".spinner").remove();
		$(this).css("position", "relative");
		
		var map = this;   	
	    	// visa bara de punkter som ska visas
		$(typesli).each(function() {
	
			if (!$(this).hasClass("selectedtype"))
			{
	 			var cn = this.id.replace("list_", "");
				$("." + cn, map).hide();
				
			}
		});
		
		//alert($(this).html());
	    $(".punkt", this).click( function() {
	        $.closeAllInfoBoxes();
	        $(this).showInfoBox();
	        var markedid = $(this).getprop("markedtype");
	        
	        // om det finns angiven bild för markerad punkt använd den då
	        if (markedid > 0)
	        {
	        	$(this).css("background-image", "url(default.aspx?id=" + markedid + ")").addClass("markedpoint");
	        }
	        else
	        {

	        	$(".selectedpoint").remove();
		        $("<div />")
		        	.addClass("selectedpoint")
		        	.text(" ")
		        	.css("top", ($(this).offset().top - $(this).parent().offset().top - 10) + "px" )
		        	.css("left", ($(this).offset().left - $(this).parent().offset().left - 10) + "px" )
		        	.appendTo($(this).parent());
		        
	        }
	        return false;
	    });	
	    
	    $(this).click(function() {
  	    		$.closeAllInfoBoxes();
			$(".selectedpoint").remove();
	    });
	    
	});
	
  });
};


jQuery.fn.showInfoBox = function() {

  return this.each(function(){
  
    var point = this;
    var map = $(this).parent();
    var off = map.offset();
    var mapx = off.left;
    var mapy = off.top;

    var x = $(point).offset().left;
    var y = $(point).offset().top;
    
    // ny position
    var bx = x + 30;
    var by = y;
    
    if (bx + 190 > mapx + map.width())
        bx -= 240;
    
    if (by + 240 > mapy + map.height())
        by = mapy + map.height() - 240;
        
        
    $(".infobox", point)
        .clone(false)
        .addClass("clone")
        .appendTo("body")
        .css("top", by + "px").css("left", bx + "px")
        .show()
        
        .find(".bottom")
        .append(
            $("<div />")
                .css("text-align", "right")
                .css("margin-top", "5px")
            	.append(
	                $("<a />")
	                .text("x")
	                .attr("href", "#")
	                .css("color","#9c928e")
	                //.css("border","1px solid #CFC9C7")
	                .css("display","block")
	                .css("position","absolute")
	                .css("right","6px")
	                .css("top","0px")
	                .css("width","1em")
	                //.css("padding","0 1px 1px 1px")
	                .click(function() {
	                    $.closeAllInfoBoxes();
	                    return false;
	                })
            	)
        );
        
  });

};

jQuery.closeAllInfoBoxes = function() {

    $(".clone").each( function() {
        $(this).closeInfoBox();
    });    
};

jQuery.fn.closeInfoBox = function()
{
	$(".selectedpoint").remove();
	$(".markedpoint").each(function() {		
		var typeid = $(this).getprop("type");
	        
		$(this).css("background-image", "url(default.aspx?id=" + typeid + ")");
	});
	this.remove();

/*
    $("#map .selected")
    .removeClass("selected")
    .each( function() {
        $(this).css("top", $(this).offset().top + 5).css("left", $(this).offset().left + 5);
    } );
    $(box).hide("fast", function() {
        $(this).remove();
    });
*/

};

jQuery.fn.maptypes = function() {

  return this.each(function() {

	$(this).click(function() {
	
		$.closeAllInfoBoxes();
		
		if ($(this).hasClass("selectedtype"))
		{
			// dölj
			$(this).data( "bg", $(this).css("background") ).css("background", "url(Sve/Karta/Typer/Typer/plupp_ovald.png) no-repeat center left").removeClass("selectedtype");
 			var cn = this.id.replace("list_", "");
			$("." + cn).hide();
		}
		else
		{
			//alert("bg: " + $(this).data("bg"));
			// visa
			$(this).css("background", $(this).data("bg"));
			$(this).addClass("selectedtype");
			//alert("background: " + $(this).css("background"));
			
			var cn = this.id.replace("list_", "");
			$("." + cn).show();
		}
	});

  });

};



jQuery.fn.minimaps = function(callback) {

  return this.each(function() {

    $(".minimap", this).hover(function() {
        $(this).addClass("hovering").addOverlay();
    },
    function() {
        $(this).removeClass("hovering");
        $(".overlay", $(this).parent()).remove();
    }).click(function() {
    	var id = $(this).getprop("minimap");

 	$.clearPoints();
 	$.closeAllInfoBoxes();
 	
 	$(".minimap.selectedminimap", $(this).parent()).removeClass("selectedminimap");
 	$(this).addClass("selectedminimap");
 	
 	if (callback)
		callback(id);
    });

  });

};

// return value of x in class where class is name_x
jQuery.fn.getprop = function(name)
{
	var val;
	var cl = $(this).attr("class").split(" ");
	
	for (var i = 0; i<cl.length; i++)
        {
        	if (cl[i].substr(0, name.length + 1) == name + "_")
        	{
        		return cl[i].substr(name.length+1);
        	}
        }
        
        return null;
}

jQuery.fn.addOverlay = function()
{

  return this.each(function() {

    var map = $(this).parent();
    var offx = map.offset().left;
    var offy = map.offset().top;
    var el = $(this);
    
    var bordersize = 1;
    
    map.addOverlayBox(0, 		0,                map.width(),                     el.offset().top - offy);
    map.addOverlayBox(0,                     el.offset().top - offy,     el.offset().left - offx,                 el.height() + 2*bordersize);
    map.addOverlayBox(2*bordersize + el.offset().left + el.width() - offx, el.offset().top - offy,     map.offset().left + map.width() - el.width() - el.offset().left - 2*bordersize,     el.height() + 2*bordersize);
    map.addOverlayBox(0,                 2*bordersize + el.height() + el.offset().top - offy,     map.width(),                 map.height() - (el.offset().top - offy + el.height())); 

  });

};

jQuery.fn.addOverlayBox = function(left, top, width, height)
{    
  return this.each(function() {
  
    //alert("w,h:" + width + ", " + height);
    $("<div />").addClass("overlay")
    .css("width", width + "px").css("height", height + "px")
    .css("top", top + "px").css("left", left + "px").text(" ").appendTo( $(this) ); 
    
  });
};

jQuery.clearPoints = function() {
	$(".punkt").remove();
};
