$(document).ready(function(){

	/*
	 * Waliduje formularz, może wysyłać przez ajax, uruchamia funkcje gdy poprawnie wyśle, albo gdy źle
	 * Opcje dla pól: required, length, repeat, numeric, unique (ajax)
	 */
	
	$('form input[type="submit"]').live('click',function(){
		$form = $(this).parent('form');
		if (!$form.children('p.errors').length)
			return true;
		
		$form.children('p.errors').removeClass('show');
		$form.children('div.field').removeClass('error').children('div.err-msg').removeClass('show');
		var errors = false;
		
		$form.children('div.field.required').each(function(){
			var inp = $(this).children('input, select');
			var er = false;
			$(inp).each(function(){		
				if($(this).val().length < 1){
					er = true;
					errors = true;
				}
			});
			if (er)
				$(this).addClass('error').children('div.err-msg.err-req').addClass('show');
		});


		$form.children('div.field[class*="length"]').each(function(){				
			var len = $(this).attr('class').match(/length\[(\d+),(\d+)\]/);
			var required = $(this).hasClass('required');
			var inp = $(this).children('input');
			var er = false;
			$(inp).each(function(){
				var size = $(this).val().length;
				if (size < len[1] || size > len[2]){
					er = true;
					if (required)
						errors = true;
				}
			});
			if (er)
				$(this).addClass('error').children('div.err-msg.err-len').addClass('show');
		});
		
		$form.children('div.field.repeat').each(function(){
			var inp = $(this).children('input[name*="repeat_"]');
			var er = false;
			$(inp).each(function(){
				var field = $(this).attr('name').match(/repeat_(\w+)/);
				var re = $form.children('div.field').children('input[name="'+field[1]+'"]');
				if ($(this).val() != re.val()){
					er = true;
					errors = true;
				}
			});
			if (er)
				$(this).addClass('error').children('div.err-msg.err-re').addClass('show');
		});
		
		$form.children('div.field.unique').each(function(){
			if (!$(this).hasClass('error'))
			{	
				var er = false;				
				var url = window.location.pathname.match(/index.php\/\w+/);
				$(this).children('input').each(function(){
					var data = '"'+$(this).serialize()+'"';
					// TODO zrobić dla Włączonego MOD_REWRITE
					url = url[0]+'/unique';
					$.ajax({						
						url: url,
						data: "unique="+data,
						async: false,
						success: function(response){
							if (response.unique == false){
								er = true;
								error = true;
							}
						}
					});
				});

				if (er)
					$(this).addClass('error').children('div.err-msg.err-exists').addClass('show');
			}
		});
		
		$form.children('div.field.numeric').each(function(){
			var inp = $(this).children('input');
			var er = false;
			var required = $(this).hasClass('required');
			$(inp).each(function(){
				if (!$(this).val().match(/\d+/) && required && $(this).val().length){
					er = true;
					errors = true;
				}
			});
			if (er)
				$(this).addClass('error').children('div.err-msg.err-num').addClass('show');
		});
		
		if (errors){
			$form.children('p.errors').addClass('show');
			return false;									
		}
		
		
		if ($form.hasClass('ajax')){

			var success = $form.attr('class').match(/success\[(\w+)\]/);
			var f = $form.attr('class').match(/faild\[(\w+)\]/);
// TODO powtórzyć z faild na wszelakie możliwe sposoby

			data = $form.serialize();
			$.ajax({
				data: data,
				success: function(response){
					if (success && success[1]){
						console.log(success[1]+'(response);');
						eval(success[1]+'(response);');
					}
				}
			});

		}
		
		//return false;

	});
	
	var position = 0;
	var slider = $('div.big-slider ul');
	var max = $('div.big-slider li').length;

	$('div.big-slider-arrows a.arrow-left').click(function(){
		if (position - 1 < 0)
			return;
		position--;
		slider.children('li:lt('+position+')').hide();
		slider.children('li:gt('+(position)+'), li:eq('+position+')').show();
						
	});

	$('div.big-slider-arrows a.arrow-right').click(function(){
		if (position+2 > max)
			return;
		position++;
		slider.children('li:lt('+position+')').hide();
	});




});
 


