var zoomer;

Zoomer = function(block_list, width) {

	// Fixum	
	this.BLOCKWIDTH = 8;
	this.BLOCKLENGTH = 60;
	this.BLOCKMAXLENGTH = 170;
	this.MINDISTANCE = 100;
	this.MININNER = 30;

    var h = '';
    var min = 9999999999;
    var max = 0;
    var f;
    
    for (var i = 0; i < block_list.length; i++) {
        min = block_list[i]['pos'] < min ? block_list[i]['pos'] : min;
        max = block_list[i]['pos'] > max ? block_list[i]['pos'] : max;
    }
    
    f = 1 / (max - min) * width;

    for (var i = 0; i < block_list.length; i++) {
        var p = block_list[i]['pos'];
        p = p * f;
        h += '<li id="bar-' + i + '" style="display: block; left: ' + p + 'px; margin-left: -4px; top: -30px"><a href="#' + block_list[i]['href'] + '" rel="' + i + '">foo</a></li>';
    }
    
    jQuery('ul#timeline').html(h);
	
	this.zoom = function(mouse_x, mouse_y) {
    
		var mymousex = mouse_x - parseInt(jQuery('ul#timeline').offset().left);
		var mymousey = mouse_y - parseInt(jQuery('ul#timeline').offset().top);
		var resized = false;
		
		jQuery('ul#timeline li').each(function(i, el) {
			var off = mymousex - parseInt(jQuery(el).css('left'));
			var distance = Math.sqrt((mymousey * mymousey) + (off * off));
			var f = (Math.abs(distance) < 90)
				? (((Math.sin((distance * 180 / zoomer.MINDISTANCE + 90) / 180 * Math.PI) * 0.55) + 0.55) + 1)
				: 1;
				
			var w = zoomer.BLOCKWIDTH * f;
			var h = zoomer.BLOCKLENGTH * f;

			zoomer.set_block(el, w, h);

			if (f > 1.1) {
				resized = true;
			}
		});
		
		return resized;
	}

	this.set_block = function(el, w, l) {

		w = parseInt(w / 2);
        l = parseInt((l - 60) * 1) + 60;
        
		jQuery(el).css({
				//top: - parseInt(l / 2) + 'px',
                top: '-30px',
				marginLeft: - w + 'px'
			})
			.find('a', el)
			.css({
				height: l + 'px', 
				width: (w * 2) + 'px'
			})
			.boxshadow({
			    hOffset: parseInt(((l - 55) / 7)),
			    vOffset: parseInt(((l - 50) / 4)), 
			    shadowblur: parseInt((l - 50) / 2),
			    color: '#07b'
			});
	}
}
