/* utils */
$(function() {
	$("ul.view-area").liScroll(); 
	var currentItem = $('#' + whereAmI());
	currentItem.parents('#menu li').addClass('active');
	
	$('#menu ul.menu li:not(.active)').children('a.toggle').toggleClass('show').toggleClass('hide').siblings('ul').hide();
	$('#menu ul.menu li a.toggle').click(function() {
		$(this).toggleClass('show').toggleClass('hide').siblings('ul').toggle('fast').closest('li').toggleClass('active');
		return false;
	});
	$('#menu ul.menu li a').each(function(i, element) {
		if (!$(element).attr('href') && $(element).hasClass('toggle') == false) {
			if ($(element).siblings('a').length != 0) {
				$(element).click(function() {
					$(this).siblings('a').toggleClass('show').toggleClass('hide');
					$(this).siblings('ul').toggle('fast').closest('li').toggleClass('active');
					return false;
				});
			}
		}
	});
	
	$("#SearchQuery").searchBox({
		url: null,
		form: "SearchForm"
	});
});

$.fn.searchBox = function(passed_params) {
	var params = {
		 url: "/search"
		,text: "szukaj..."
		,form: null
	}
	var $input = $(this);

	$.extend(params, passed_params);

	$input.val(params.text);

	$input.focus(function() {
		if ($input.val() == params.text) {
			$input.val("");
		}
	});
	$input.focusout(function() {
		if ($input.val() == "") {
			$input.val(params.text);
		}
	});
	
	$input.keypress(function(e) {
		if (e.keyCode == 13) {
			if (params.form != null) {
				$("#"+params.form).submit();
			} else if (params.url != null) {
				window.location = url + "/" + $input.val();
			} else {
				e.preventDefault();
			}
		}
	})
}

jQuery.fn.ajaxify = function() {
	this.submit(function() {
		var error = false;
		var form = jQuery(this);
		form.find(':input').each(function(index, element) {
			var elementObj = jQuery(element);
			if (elementObj.attr('name').length == 0 || elementObj.attr('id').length == 0) return;
			
			var selector = '';
			if (elementObj.attr('type') == 'text') {
				selector = 'div.input.text';
			} else if (elementObj.attr('type') == 'textarea') {
				selector = 'div.input.textarea';
			}
			
			if ((elementObj.val().length == 0 || elementObj.val() == elementObj.attr('alt')) && elementObj.hasClass('allowEmpty') == false) {
				elementObj.closest(selector).addClass('error');
				error = true;
			} else {
				elementObj.closest(selector).removeClass('error');
			}
		});
		
		if (error == true) return;
		
		form.find('button').hide();
		form.find('.loader').show();
		
		jQuery.ajax({
			type: 'POST',
			url: form.attr('action'),
			data: form.serializeArray(),
			success: ajaxifyCallback,
			dataType: 'json',
			context: form
		});
	});
	
	return this.each(function(){});
};

function ajaxifyCallback(data, txt) {
	var form = $(this.context);
	if (data.errors == null) {
		form.closest('div').html(form.siblings('.form-replacement').html());
		return;
	}
		
	form.find('.loader').hide();
	form.find('input[type=submit]').show();
	
	jQuery.each(data.errors,function(index,value) {
		var inputObj = form.find(":input[name='data[" + index + "]']");
		
		var selector = '';
		if (inputObj.attr('type') == 'text') {
			selector = 'div.input.text';
		} else if (inputObj.attr('type') == 'textarea') {
			selector = 'div.input.textarea';
		}
		
		inputObj.closest(selector).addClass('error');
	});
};


