/**
 * JNLFV - jQuery Nette Live Form Validator
 *
 * @copyright  Copyright (c) 2006, 2010 Patrik Votoček
 * @license    New BSD
 * @link       addons.nette.org/cs/jquery-nette-live-form-validator
 * @package    Nette
 * @version    1.2 
 */
var nette = nette || { };

nette.validateEntity = function(el) {
	var form = $(el).parents('form');
	if (nette.forms != null && nette.forms[form.attr('id')]) {
		if (nette.forms[form.attr('id')].validators[$(el).attr('name')]){
			var message = nette.forms[form.attr('id')].validators[$(el).attr('name')](form[0])
			if (message) {
				$(el).after('<p class="error">'+message+'</p>');
				return false;
			}
		}
	}
	return true;
}

nette.processXHRSnipperRequest = function(data) {
	if (data.redirect)
		window.location = data.redirect;
	if (data.snippets) {
		for (var i in data.snippets)
			$("#"+i).html(data.snippets[i]);
	}
}

$(document).ready(function() {
	//-------------------- Remove next code on production server --------------------------
	$.ajaxSetup({
		error: function (xhr) {
			var errorWin = window.open('', 'Error');
			errorWin.document.write(xhr.responseText);
			return false;
		}
	});
	//-------------------------------------------------------------------------------------
	$('form input, form select, form textarea').live('keyup', function() {
		$(this).next('.error').remove();
		nette.validateEntity(this);
	});
	$('form').attr('onSubmit', null).live('submit', function() {
		if (nette.forms == null || (nette.forms != null && nette.forms[$(this).attr('id')] == null))
			return true;

		var el = null;
		$(this).find('.error').remove();
		$(this).find('input, select, textarea').each(function() {
			res = nette.validateEntity(this);
			if (res == false && el == null) el = this;
		});
		if (el != null) {
			$(el).focus();
			return false;
		} else {
			return true;
		}
	});
	$('form.ajax-snippet').live('submit', function() {
		var form = $(this);
		form.find('input[type=submit]').attr('disabled', true).addClass('loading');
		$.post(form.attr('action'), form.serialize(), function(data) {
			nette.processXHRSnipperRequest(data);
			form.find('input[type=submit]').removeClass('loading').removeAttr('disabled');
		});
		return false;
	});
});
