/**
 * @author Vlad Yakovlev (scorpix@design.ru)
 * @copyright Art.Lebedev Studio (http://www.artlebedev.ru)
 * @version 0.1 (18.11.2008)
 * @requires jQuery 1.2
 */
var floorSelector = (function(options) {

	var defClassName = 'shape';

	var defColor = '#891122';

	var startYs = [70, 62, 55, 46, 39, 30, 23, 14, 7];

	var horPositions = {
		'9': [2, 8, 15, 21, 28, 34, 41, 47],
		'6': [60, 66, 73, 79, 86, 92, 99, 105, 112, 118],
		'4': [131, 137, 144, 150, 157, 163, 170, 176]
	};

	// В IE для VML надо добавить схему и стили.
	if ($.browser.msie && !document.namespaces['v']) {
		document.namespaces.add('v', 'urn:schemas-microsoft-com:vml');
		var ss = document.createStyleSheet();
		ss.cssText = 'v\\:* {behavior:url(#default#VML);display:block;}';
	}

	$(function() {
		if ($.browser.msie) {
			for (var i = 0; i < options.length; i++) {
				var params = options[i];

				if (undefined === params['className']) {
					params['className'] = defClassName;
				}
				if (undefined === params['color']) {
					params['color'] = defColor;
				}

				drawVmlShape(params);
			}
		} else {
			for (var i = 0; i < options.length; i++) {
				var params = options[i];

				if (undefined === params['className']) {
					params['className'] = defClassName;
				}
				if (undefined === params['color']) {
					params['color'] = defColor;
				}

				drawCanvasShape(params);
			}
		}
	});

	function drawVmlShape(params) {
		var canvas = document.createElement('v:shape');

		var canvasHeight = params.container.height();
		var canvasWidth = params.container.width();

		var height = 1 == params.floor ? 5 : 6;
		var width = 4;
		var y = startYs[params.floor - 1];
		var xs = horPositions[params.building.toString()];

		var path = '';

		for (var i = 0; i < xs.length; i++) {
			path += ' m ' + xs[i] + ',' + y + ' l ' + (xs[i] + width) + ',' + y + ' ' + (xs[i] + width) + ',' + (y + height) + ' ' + xs[i] + ',' + (y + height) + ' ' + xs[i] + ',' + y;
		}

		$(canvas).addClass(params.className);
		canvas.style.width = canvasWidth + 'px';
		canvas.style.height = canvasHeight + 'px';
		canvas.coordsize = canvasWidth + ',' + canvasHeight;
		canvas.stroked = 'False';
		canvas.fillcolor = params.color;
		canvas.path = path;
		$(canvas).appendTo(params.container);
	}

	function drawCanvasShape(params) {
		var canvas = $('<canvas class="' + params.className + '"></canvas>').appendTo(params.container);

		canvas.attr({
			height: params.container.height(),
			width: params.container.width()
		});

		var ctx = canvas.get(0).getContext('2d');

		var height = 1 == params.floor ? 5 : 6;
		var width = 4;
		var y = startYs[params.floor - 1];
		var xs = horPositions[params.building.toString()];

		ctx.fillStyle = params.color;
		ctx.beginPath();

		for (var i = 0; i < xs.length; i++) {
			ctx.rect(xs[i], y, width, height);
		}

		ctx.closePath();
		ctx.fill();
	}
});
