(function($){
	$.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; });
	};
	$.fn.skGet = function(get, dimension, callback) {
		if(!this.length){
			return this;
		}
		
		var result;
		var m = Math[get];
		this.each(function(index) {
			var newResult = $(this)[dimension]();
			result = index ? m(result, newResult) : newResult;
		});
		
		if(typeof callback == 'function'){
			callback.call(this, result);
			return this;
		}
		
		return result;
	};
	
	if(typeof floors !== 'undefined'){
		var svgmap = new $.fbSvgMap('../js/poschodi.xml');
	}
	
	$(document).ready(function(){

		$.fn.kfBox && $('.lightbox').kfBox();

		$('a.external').click(function(){return !window.open($(this).attr("href"))});

    	/* placeholer with hmtl 5 fallback */
		function supports_input_placeholder() {
		  var i = document.createElement('input');
		  return 'placeholder' in i;
		}
		
    	if(!supports_input_placeholder()){
			$('input[placeholder], textarea[placeholder]').each(function(){
				var text = $(this).attr('placeholder'); 
				$(this).inputDefaultText({text: text});
			});
		}	
		
		if(typeof floors !== 'undefined'){
			var floorBox = (function(floors){
				var $element = $('.floor-box'),
					$number = $element.find('h2 strong'),
					$content = $element.find('.bd'),
					$up = $element.find('.up'),
					$down = $element.find('.down'),
					$svg = $('#svg-holder');
					
				
				var /*scrollLimit = $element.offset().top - 20,
					scrollActual = 0,*/
					length = floors.list.length,
					undefined,
					pointer = null,
					current = null,
					klass =  '',
					tabs = null;
						
				return {
					init: function(number)
					{
						$element.animate({'opacity':'1'}, 500);
						this.change(number);
						
						$svg.trigger('highlight.fbSvgMap', [number]);
						
						$up.bind('click', $.proxy(this.up, this));
						$down.bind('click', $.proxy(this.down, this));
						
						/*$(window)
							.bind('scroll', function(){
								if(scrollLimit < $(this).scrollTop() || scrollActual != 0){
									scrollActual = $(this).scrollTop() - scrollLimit;
									scrollActual = scrollActual < 0 ? 0 : scrollActual;
									$element.stop().animate({'top': scrollActual}, 500)
								}
							})
							.trigger('scroll');*/
					},
					up: function(e)
					{
						var number = floors.list[++pointer];
						$svg.trigger('highlight.fbSvgMap', [number]);
						this.change(number);
						e.preventDefault();
					},
					down: function(e)
					{
						var number = floors.list[--pointer];
						$svg.trigger('highlight.fbSvgMap', [number]);
						this.change(number);
						e.preventDefault();
					},
					change: function(number)
					{
						if(current !== number && floors[number + ''] !== undefined){
							var floor = floors[number + ''];
							tabs && tabs.destroy();
							$element.removeClass(klass).addClass(floor.klass);
							$number.text(number);
							$content.html(floor.html);	
							tabs = new aztower.Tabs($content.find('.tabs-list')).init();
							
							current = number;	
							pointer = $.inArray(parseInt(current), floors.list)
							klass = floor.klass;
							
							this.control();
						}	
					},
					control: function()
					{
						$up[pointer != length-1 ? 'show':'hide']();	
						$down[pointer != 0 ? 'show':'hide']();
					}
				}	
			})(floors)
			
		
			var svgInit = function(){
				svgmap.init('#svg-holder');
				$(document).unbind('render.fbSvgMap');
				
				svgmap.element.bind('clicked.fbSvgMap', function(e, number){
					floorBox.change(number);
				});
				floorBox.init(floors.current);	
			};
			svgmap.isRender ? svgInit() : $(this).bind('render.fbSvgMap', svgInit);
		}

		$('.detail-box').each(function(index) {
			var $this = $('.tabs-list', this);
			var $a = $this.find('a');
			var i = $a.index($a.filter('.fb-tabs-selected'));

			var tabs = new aztower.Tabs($this, {
				current: i < 1 ? 0 : i
			}).init();  
		});
		
		$('table')
			.not('.reset, .plain')
			.wrap('<div class="fix-table"></div>')
			.find('tbody tr:odd')
				.addClass('even');
		
		// Carousel
		$('.att-images').each(function(index) {
			var carousel = new aztower.Carousel($(this).find('p'), {
				item: '>a', // elementy ktere se budou scrollovat
				visible: 3, // počet viditelných elementů
				htmlPager: '<span></span>',
				pause: false,
				repeat: false, // opakovat
				pagerPages: false,
				auto: false
			}).init();
			carousel.$pager.length && carousel.$pager.appendTo(carousel.$box);	
		});
		
		// Slideshow
		$('.slideshow .list').each(function(index){
			var carousel = new aztower.Carousel($(this),{
				item: '.slide', // elementy ktere se budou scrollovat
				visible: 1, // počet viditelných elementů
				htmlPager: '<span></span>',
				pause: false,
				repeat: false, // opakovat
				pagerPages: false,
				auto: false
			}).init();
			carousel.$pager.length && carousel.$pager.appendTo(carousel.$box);	
		});
		
		// Popovers
		$('.popover').each(function(){
			new sk.widgets.Dialog($(this), {
				position: {
				    anchor: $(this),
				    align: [.5, 0],
				    place: [.5, 1],
				    offset: [0, 4],
				    speed: 0
				}
			}).init()	
		});
		
		// Popovers
		$('.dialog').each(function(){
			new sk.widgets.Dialog($(this), {
				closeSelector: '.close',
				position: {
				    anchor: window,
				    align: [.5, 0],
				    place: [.5, 0],
				    offset: [0, 50],
				    speed: 0
				}
			}).init()	
		});
		
		// Panorama
		$('.panorama').each(function(){
			new sk.widgets.Panorama($(this)).init()
		});
		
		//Equal Heights
		function eq($element, item, count){
			$element.each(function(){
				var $items = $(this).find(item);
				var end = $items.length;
				if(count){
					for (var i=0; i < end; i=i+count) {
						$items.slice(i, i+count).skGet('max', 'height', function(val){
				    		this.height(val)	
				    	});
					};
				}
				else{
					$items.skGet('max', 'height', function(val){
				    	this.height(val)	
				    });	
				}
			});	
		};
		eq($('.crossroad-type'), '.spc');
		
		// Popovers close - out click
		$(document).bind('click', function(e){
			if(!$(e.target).closest('.popover-box').length && !$(e.target).closest('.popover').length){
			    sk.widgets.Dialog.close();
			}			
		})
	});

window.onload = function(){

	if(typeof floors !== 'undefined'){
		svgmap.load();	
	}
		
};

})(this.jQuery);


