var BASE_HREF = BASE_HREF || '../';
// Cufon.replace('h1, h2, #main-menu a, .home-bottom h3', { hover: true });

$(document).ready(function()
{
	$.fn.kfBox && $('.lightbox').kfBox();

	$.fn.confBox && $('#confBox').confBox();
	$('#confBox').click();

	$('table tr:nth-child(even)').addClass('even');

	$('#q').inputDefaultText({ text: 'Hledaný výraz'});

	$('a.external').click(function(){return !window.open($(this).attr("href"))});

	var rating = new KFRating($('.kfrating'), {
		average: parseFloat($('.rating-average').text()) / 5,
		click: function(ratingInstance, star){
			ratingInstance.disable();
			$.ajax({
			   type: "GET",
			   url: "/",
			   data: "ajax&vote=1&pageID=" + $('#pageID').attr('value') + '&value=' + star,
			   success: function(data){
				    if(data){
						ratingInstance.setAverage(data/5);
						ratingInstance.drawAverage();
						$('.rating-average').text(data);
					}
			   }
			 });
			//ratingInstance.drawAverage();
		}
	});
	rating.activate();

});

$(window).bind('load', function()
{
	// SVG Map init:
	if($('#map').size() && Raphael)
	{
		$('#map ul, #map h3').remove();
		$('#map').css({ width: 520, margin: '0 auto' }).append('<img src="'+ BASE_HREF + 'img/ajax-loader.gif" />');

		$.get(BASE_HREF + "js/map-all.xml", function(svg)
		{
		    var attrOkres = {
		        fill: "#fff",
		        stroke: "#5F5047",
		        cursor: 'pointer',
		        "stroke-width": 2,
		        "stroke-linejoin": "round"
		    };

		    var attrKraj = {
		        stroke: "#5F5047",
		        cursor: 'pointer',
		        "stroke-width": 4,
		        "stroke-linejoin": "round"
		    };
		    var areaType = $('#areaType').val() || 'cr';
			var areaId = $('#areaId').val() ;
			var paperSize = { width: 520, height: 320 };

			var bbox = { x: 0, y: 0, width: paperSize.width, height: paperSize.height };
			var translate = { x: 0, y: 0 };
			var scale = 1;

			var R = Raphael("map", paperSize.width, paperSize.height);

			// Add Select:
			$('#map img').remove();
			$('#map').after('<div class="kraj-select-box"><select id="mapform-kraj" name="mapformkraj"><option value="0">Vyberte kraj…</option></select></div>');
			$select = $('#mapform-kraj');

			if(areaType == 'cr')
			{
				$select.append('<option value="cela-cr">Celá ČR</option>');
			}

			var renderArea = function($path, attr, transform)
			{
				transform = transform || false;
		    	var key = $path.attr('id');
		    	var d = $path.attr('d');
				var label = $path.attr('inkscape:label');
				if(areaType != 'cr') label = 'Okres ' + label;

				$select.append('<option value="' + key + '">' + label + '</option>');

				var kraj = R.path(attr, d);

				if(transform)
				{
					var bboxO = getBBoxFromPathData(d);
					var translateO = { x: bbox.x + bbox.width/2 - bboxO.x - bboxO.width/2, y: bbox.y + bbox.height/2 - bboxO.y - bboxO.height/2  };
					kraj.translate(translate.x - translateO.x * (scale - 1), translate.y - translateO.y * (scale - 1));
					kraj.scale(scale, scale);
				}

				$(kraj.node)
					.bind('mouseenter', function(e)
					{
						if($.browser.mozilla || $.browser.msie) kraj.animate({ fill: '#FFC19F' }, 200);
						else kraj.attr({ fill: '#FFC19F' });
						$('#mapform-kraj').val(key);
					})
					.bind('mouseout', function(e)
					{
						if($.browser.mozilla || $.browser.msie) kraj.animate({ fill: '#fff' }, 200);
						else kraj.attr({ fill: '#fff' });
						$('#mapform-kraj').val('0');
					})
					.bind('click', function(e)
					{
						$select.triggerHandler('change');
					});
			};

			if(areaType == 'cr')
			{
				var $cr = $('g#layer1 path', svg);
				R.path(attrKraj, $cr.attr('d'));

			    $('g#layer2 path', svg).each(function()
				{
					renderArea($(this), attrOkres);
				});

				$('#mapform-kraj').bind('change', function()
				{
					var name = $select.val();
					if(name != 'cela-cr')
					{
							name = name.slice(5);
							if(name != 'praha' && name != 'vysocina') name +=  '-kraj';
							if(name == 'praha') name = 'hlavni-mesto-praha';
							if(name == 'vysocina') name = 'kraj-vysocina';
					}
					document.location = name + '/';
				});
			}
		});
	}
});

$.fn.inputDefaultText = function(options)
{
	options = $.extend({
		text: 'Hledany vyraz'
	}, options);

	return this
		.val(options.text)
		.bind('focus', function(){ if(this.value == options.text) this.value = ''; })
		.bind('blur', function(){ if(this.value == '') this.value = options.text; });
};

var KFRating = function(element, options)
{
	this.options = $.extend({
		average: 0,
		starWidth: 19,
		starCount: 5,
		resolution: 5,
		click: null
	}, options);
	this.$element = $(element);
};

KFRating.prototype.activate = function()
{
	var that = this;
	var offset = { left: 0 };
	var width = this.options.starWidth * this.options.starCount;
	var value = null;

	this.$innerElement = this.$element.find('span');
	this.$element.width(width);
	this.drawAverage();

	this.$element.bind('mouseover', function(event)
	{
		offset = that.$element.offset();
		return false;
	});
	this.$element.bind('mousemove', function(event)
	{
		var ratio = (event.pageX - offset.left) / width;
		value = Math.ceil(that.options.resolution * ratio);
		that.$innerElement.css('width', (value / that.options.starCount * (that.options.starCount / that.options.resolution) * 100) + '%');
		event.preventDefault();
		return false;
	});
	this.$element.bind('mouseout', function(event)
	{
		that.drawAverage();
		return false;
	});
	this.$element.bind('click', function(event)
	{
		if(typeof(that.options.click) == 'function') that.options.click(that, value);
		event.preventDefault();
		return false;
	});
}

KFRating.prototype.deactivate = function()
{
	this.$element.unbind();
}

KFRating.prototype.disable = function()
{
	this.$element.unbind();
}

KFRating.prototype.setAverage = function(average)
{
	this.options.average = average;
}

KFRating.prototype.drawAverage = function()
{
	this.$innerElement.css('width', (this.options.average * 100) + '%');
}

