function dynBackground(url, opz) {
	var opzioni = {
		h_align: "left",
		v_align: "top",
		onresize: function(w,h,r){}
	};

	if (opz !== undefined)
		$.extend(opzioni, opz);
	
	var css = {};
	$("<img>").load(function(sfondo){
		var iw = sfondo.target.width;
		var ih = sfondo.target.height;
		var ir = iw/ih;
		var $sfondo = $(sfondo.target);

		switch (opzioni.h_align) {
		case "left":
			css.left = 0;
			break;
		case "right":
			css.right = 0;
			break;
		case "center":
			css.left = "50%";
			css.marginLeft = -Math.floor(iw/2);
			break;
		}
		switch (opzioni.v_align) {
		case "top":
			css.top = 0;
			break;
		case "bottom":
			css.bottom = 0;
			break;
		case "center":
			css.top = "50%";
			css.marginTop = -Math.floor(ih/2);
			break;
		}
		$sfondo.css(css);

		$(window).resize(function(){
			var w = $(window).width();
			var h = $(window).height();
			var r = w/h;

			if ((w>iw)||(h>ih)) {
				if (ir<r) {
					sw = w;
					sh = Math.floor(sw/ir);
				} else {
					sh = h;
					sw = Math.floor(ir*sh);
				}
			} else {
				sw = iw;
				sh = ih;
			}
			$sfondo.css({
				width: sw,
				height: sh
			});

			opzioni.onresize(w,h,r);

		}).resize();
		$sfondo.fadeIn(2500);
	}).css({
		position: "fixed",
		display: "none"
	}).attr({
		src: url
	}).prependTo("body");
}

function springManager(box_w,box_h) {
	$(".spring-left,.spring-top,.scrap-top-margin").each(function(){$(this).data({
		left: parseInt($(this).css("left")),
		marginLeft: parseInt($(this).css("marginLeft")),
		top: parseInt($(this).css("top")),
		marginTop: parseInt($(this).css("marginTop"))
	})});

	$scrap_top = $(".scrap-top-margin");
	var last_scrap_top = null;
	$scrap_top.each(function(){
		var bottom = $(this).offset().top+$(this).height()+$(this).data("marginTop");
		if ((last_scrap_top === null)||(last_scrap_top<bottom))
			last_scrap_top = bottom;
	});

	$(window).resize(function(){
		var w = $(window).width();
		var h = $(window).height();
		var dist_w = w-box_w;
		var dist_h = h-box_h;

		$(".spring-left").each(function(){
			var $o=$(this);
			var guida = $o.data().left;
			var delta = $o.data().marginLeft;

			var new_m;
			if (dist_w>guida)
				new_m = delta;
			else if (dist_w<=-delta)
				new_m = -guida;
			else
				new_m = dist_w-guida+delta;

			$o.css({marginLeft:new_m});
		});
		$(".spring-top").each(function(){
			var $o=$(this);
			var guida = $o.data().top;
			var delta = $o.data().marginTop;

			var new_m;
			if (dist_h>guida)
				new_m = delta;
			else if (dist_h<=-delta)
				new_m = -guida;
			else
				new_m = dist_h-guida+delta;

			$o.css({marginTop:new_m});
		});

		var debito=last_scrap_top-h;
		if (debito<0)
			debito = 0;

		var usati=0;
		var accumTopOld=0;
		var accumTopNew=0;
		$(".scrap-top-margin").each(function(){
			var parte = Math.ceil(debito/($scrap_top.length-usati));
			var margine = $(this).data("marginTop")-accumTopOld;
			if (parte>margine)
				parte = margine;
			var nuovo_margine = margine-parte+accumTopNew;

			$(this).css({marginTop:nuovo_margine});
			debito -= parte;
			accumTopOld = margine;
			accumTopNew = nuovo_margine;
			usati++;
		});

	}).resize();
}

$(function(){
	function cloneCSS($o, lista) {
		var nuovo = {};
		for (var i in lista) {
			var k=lista[i];
			var v = $o.css(k);
			if ((v !== undefined)&&(v !== "auto")&&(v !== ""))
				nuovo[k] = v;
		}
		return nuovo;
	};

	$("input[type='checkbox']").each(function(){
		var $check = $(this);
		var box_css = cloneCSS($check,[
				"position","float","top","left","bottom","right","width","height",
				"margin", "marginLeft","marginTop","marginRight","marginBottom",
				"border"
			]);
		if (box_css.position == "static") {
			box_css.position = "relative";
			box_css.left = 0;
			box_css.right = null;
			box_css.top = 0;
			box_css.bottom = null;
		}
		var $box = $("<div>").css({
				display: "inline",
				borderWidth: 1,
				borderStyle: "solid",
				borderColor: $check.css("backgroundColor")
			}).css(box_css);
		var $new_check = $("<div>").css({
			position: "absolute",
			top:0,
			left:0,
			width:$check.width(),
			height:$check.width(),
			border:$box.css("border"),
			zIndex:2,
			cursor: "pointer"
		}).css(
			cloneCSS($check,["color","backgroundColor"])
		).data(
			{checked:null}
		).appendTo($box);

		$check.before($box);
		$check.detach().css({
			position: "absolute",
			top:0,
			left:0,
			width: 1,
			height: 1,
			zIndex:1,
			opacity: 0.0
		}).prependTo($box);

		setInterval(function(){
			if ($check.attr("checked") == $new_check.data("checked"))
				return false;
			if ($check.attr("checked"))
				$new_check.stop().data({checked:true}).fadeTo(200,1.0);
			else
				$new_check.stop().data({checked:false}).fadeTo(200,0.0);
		},100);

	});
});
