/*
 * data-empty
 */
$(document).ready(function(){
	$('input[data-empty], textarea[data-empty]').each(function(){
		$(this).focus(function(){
			if ($(this).val() == $(this).data('empty')) 
				$(this).val('').removeClass('gray');			
		}).blur(function(){
			if ($(this).val() == '')
				$(this).val($(this).data('empty')).addClass('gray');
		});
		
		if ($(this).val() == '')
			$(this).val($(this).data('empty')).addClass('gray');
		
	})
	
	$('form').submit(function(){
		$('input[data-empty], textarea[data-empty]').each(function(){
			if ($(this).val() == $(this).data('empty')) 
				$(this).val('');
		})
	});
})

/*
 * wyszukiwarka
 */
$(document).ready(function(){
	
	var xhr = null;
	
	$('body').click(function(e){
		if ( 
			!(
				   $(e.target).is('#searchResults') 
				|| $(e.target).parents().is('#searchResults'))
				|| $(e.target).is('form#search')
				|| $(e.target).parents().is('form#search')
			&& 
			$('#searchResults').is(':visible')
		) {
			$('#searchResults').slideUp('slow');
		}
	})
	
	$('#search input[type="text"]').focus(function(){
		
		$(this).parent().parent().addClass('focus');
		if(this.value == this.defaultValue) 
			this.value = '';
		
	}).blur(function(){
		
		$(this).parent().parent().removeClass('focus');
		if(this.value == '') 
			this.value = this.defaultValue;
		
	}).keyup(function(e){
				
		if (null !== xhr) 
			xhr.abort();
		
		term = $(this).val();
		
		if (term.length < 3)
			return;
				
		if (!$('#searchResults').is(':visible'))
			$('#searchResults').slideDown('slow');
		
		$('#searchResults').find('div').html('');
		
		$.ajax({
			url: Router.getUrl('search', {term: term } ),
			dataType: 'json',
			success: function(data) {
				if (data.error) {
					$('#searchResults').find('div').append(data.error);
				} else {
					$.each(data.rowset, function(href, title){
						$('#searchResults').find('div').append('<a href="'+href+'">'+title+'</a><br/>');
					})
					
				}
			}
		});
		
	});
});


/*
 * przewijanie newsów na głównej stronie
 */
$(document).ready(function(){
	if ($('#newsContainer').size()) {
		var container = $('#newsContainer');
		var inner = $('#newsInner');
		var adverts = inner.html();
		var paused = false;
		var tweet  = $('.tweet');
		
		inner.find('div').not(':first').hide();
		
		container.mouseenter(function(){
			paused = true;
			tweet.removeClass('gray').removeClass('blue').unbind('click');
			if (inner.find('div:visible').find('a').attr('rel') == 'tweet') {
				tweet.addClass('gray').hide().fadeIn('slow');
			}
		});
		container.mouseleave(function(){paused = false; tweet.removeClass('gray')});
		
		tweet.mouseenter(function(){
			paused = true;
			if (inner.find('div:visible').find('a').attr('rel') == 'tweet') {
				tweet.addClass('blue');
			}
		});
		tweet.mouseleave(function(){paused = false; tweet.removeClass('blue')});
		
		$(document).everyTime(5000, function(){
			if (paused)
				return;
			//console.log(inner.find('div').size());
			if (parseInt(inner.find('div').size()) < 2)
				return;	
			
			var d = inner.find('div:visible');
			d.fadeOut("slow", function(){
				if (d.next().is('div')) {
					next = d.next();
				} else {
					next = inner.find('div:first');
				}
				next.fadeIn("slow");
			});
			
		})
	}
})


/**
 * Przyklad wykorzystania:
 * 
 * W szablonie:
 *   Router.addUrl('name', '<?php echo $this->url(array(..., 'param'=>':param'), 'routeName') ?>');
 * W skrypcie:
 *   Router.getUrl('name', {param: ''});
 */
var Router = {
	// Lista url
	_urls: {},
	
	/**
	 * Dodaj nowy url (lub jego wzorzec).
	 * 
	 */
	addUrl: function(name, url) {
		Router._urls[name] = url;
	},

	/**
	 * Pobierz url na podstawie nazwy
	 * 
	 */
	getUrl: function(name, params) {
		if(!! Router._urls[name]) {
			var url = Router._urls[name]+"";
			$.each(params || [], function(key, val) {
				// Zamien placeholdery (: - %3A)
				url = url.replace('%3A'+key, val);
			});
			return url;
		}
		return false;
	}
};
