/*
	Category Selecter 1.0 - SH 16/1/2009
	Based on code from: http://plt-scheme.org/screenshots/
*/

var CategorySelecter = {
	radar : 80,  // Distance from top to center of bubble
	imageSize : 35,  // Initial image size
	onMouseMove : function(event) {
		if (!event) {
			event = window.event;
		}
		var mouseX = YAHOO.util.Event.getPageX(event);
		var mouseY = YAHOO.util.Event.getPageY(event);
		var portfolioX = YAHOO.util.Dom.getX(CategorySelecter.portfolio);
		var portfolioY = YAHOO.util.Dom.getY(CategorySelecter.portfolio);

		var x = Math.max(mouseX - portfolioX -
			CategorySelecter.radar, portfolioX - mouseX);
		x = (x < 0) ? 0 : x / CategorySelecter.radar;
		var y = (mouseY - portfolioY - CategorySelecter.radar) /
			CategorySelecter.imageSize - 0.5;
		CategorySelecter.setCenter(x, y);
	},
	setCenter : function(x, y) {
		var totalHeight = 0;
		var portfolioRegion =
			YAHOO.util.Dom.getRegion(CategorySelecter.portfolio);
		var portfolioHeight = portfolioRegion.bottom - portfolioRegion.top;
		for (var i = 0; i < CategorySelecter.sections.length; ++i) {
			var distance = Math.abs(i - y);
			var size = CategorySelecter.imageSize;
			if (distance < 2 && x < 1) {
				size += CategorySelecter.resize(distance / 2) *
					(CategorySelecter.imageSize * 2) *
					CategorySelecter.resize(x);
			}
			var newSize = Math.round(size);
			if (CategorySelecter.sections[i].height != newSize) {
				CategorySelecter.sections[i].height = newSize;
				CategorySelecter.sections[i].width = newSize;
			}
			totalHeight += newSize;
		}
		totalHeight = (portfolioHeight - totalHeight) / 2;
		CategorySelecter.topSection.height = Math.floor(totalHeight);
		CategorySelecter.bottomSection.height = Math.ceil(totalHeight);
	},
	resize : function(x) {
		return (Math.cos(x * Math.PI) + 1) / 2;
	},
	start : function(sections) {
		this.portfolio = YAHOO.util.Dom.get('portfolio');
		this.topSection = YAHOO.util.Dom.get('top');
		this.bottomSection = YAHOO.util.Dom.get('bottom');
		this.sections = [];
		for (var index in sections) {
			this.sections.push(YAHOO.util.Dom.get(sections[index]));
		}
		// Prue my sweet, it's kicking off!
		document.getElementsByTagName('body')[0].onmousemove =
			this.onMouseMove;
		this.setCenter(-1,-1);
	}
}
